JSON ファイルの説明:構造と使用方法
.json ファイル、MIME タイプ、エンコーディング、実践的な例、セキュリティに関する完全なガイド。
Big JSON Team
• Technical WriterExpert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.
# JSON ファイルの説明:構造と使用方法
このガイドでは、JSON ファイルの詳細、拡張子、MIME タイプ、ファイルの作成方法、セキュリティについて説明します。
JSON ファイルとは
JSON ファイルは、JSON データを含むプレーンテキストファイルです。任意のテキストエディターで開いて読み書きができます。
基本事実
- 拡張子 - .json
- MIME タイプ - application/json
- エンコーディング - UTF-8(推奨)
- 可読性 - 人間が読める形式
- 編集 - 任意のテキストエディターで編集可能
JSON ファイルの種類
1. 設定ファイル
package.json:Node.js プロジェクトの設定{
"name": "my-app",
"version": "1.0.0",
"description": "My application",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "jest"
},
"dependencies": {
"express": "^4.18.0"
}
}
tsconfig.json:TypeScript コンパイラー設定
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"outDir": "./dist"
}
}
2. データファイル
{
"users": [
{
"id": 1,
"name": "田中太郎",
"email": "tanaka@example.com"
},
{
"id": 2,
"name": "佐藤花子",
"email": "sato@example.com"
}
]
}
3. API レスポンス
{
"status": "success",
"data": {
"user": {
"id": 1,
"name": "田中太郎"
}
}
}
4. 言語ファイル(多言語対応)
{
"greeting": "こんにちは",
"farewell": "さようなら",
"welcome": "ようこそ"
}
5. マニフェストファイル
manifest.json:ウェブアプリの設定{
"name": "マイアプリケーション",
"short_name": "MyApp",
"icons": [
{
"src": "/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
}
],
"start_url": "/"
}
JSON ファイルの拡張子
.json(標準)
最も一般的な拡張子。
config.json
data.json
users.json
.jsonl(JSON Lines)
1 行に 1 つの JSON オブジェクト。ログ処理に最適。
{"id": 1, "name": "田中"}
{"id": 2, "name": "佐藤"}
.jsonp(JSONP)
コールバック付きの JSON。
callback({"name": "田中"});
MIME タイプ
Web サーバーが JSON ファイルを提供する場合、正しい MIME タイプを設定する必要があります。
正しい MIME タイプ
application/json
設定方法
Apache (.htaccess):AddType application/json .json
Nginx:
types {
application/json json;
}
Node.js/Express:
app.set('type', 'application/json');
res.setHeader('Content-Type', 'application/json');
ファイルエンコーディング
JSON ファイルは UTF-8 でエンコードする必要があります。
理由
- 国際文字をサポート
- 標準化
- 互換性
エンコーディングを確認
Linux/Mac:file -i data.json
# data.json: text/plain; charset=utf-8
Windows PowerShell:
[System.Text.Encoding]::GetEncoding([System.IO.File]::GetEncoding("data.json"))
エンコーディングの変換
Python を使用:import codecs
with open('old.json', 'r', encoding='ISO-8859-1') as f:
content = f.read()
with open('new.json', 'w', encoding='utf-8') as f:
f.write(content)
JSON ファイルの構造
シンプルな構造
{
"id": 1,
"name": "田中太郎"
}
ネストされた構造
{
"user": {
"id": 1,
"name": "田中太郎",
"address": {
"city": "東京",
"country": "日本"
}
}
}
配列
{
"users": [
{"id": 1, "name": "田中太郎"},
{"id": 2, "name": "佐藤花子"}
]
}
JSON ファイルの作成
テキストエディターで作成
{
"title": "私の最初の JSON ファイル",
"created": "2026-01-16",
"items": [1, 2, 3]
}
プログラムで作成
Python:import json
data = {
"name": "田中太郎",
"age": 30,
"city": "東京"
}
with open('user.json', 'w', encoding='utf-8') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
JavaScript:
const data = {
name: "田中太郎",
age: 30,
city: "東京"
};
const json = JSON.stringify(data, null, 2);
const fs = require('fs');
fs.writeFileSync('user.json', json, 'utf-8');
JSON ファイルの読み込み
ブラウザで開く
最新のブラウザ(Chrome、Firefox)は JSON を自動的にフォーマットします:
File → Open → file.json
テキストエディターで開く
VS Code、Sublime Text、メモ帳など任意のテディターで開けます。
プログラムで読み込み
Python:import json
with open('user.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data['name']) # 田中太郎
JavaScript:
const fs = require('fs');
const data = JSON.parse(fs.readFileSync('user.json', 'utf-8'));
console.log(data.name); // 田中太郎
ファイルの検証と整形
JSONLint で検証
https://jsonlint.com
コマンドラインで検証
Python:python3 -m json.tool data.json
jq:
jq . data.json
セキュリティの考慮事項
1. 敏感情報の保護
❌ しないこと:
{
"user": "admin",
"password": "secret123"
}
✅ すること:
{
"user": "admin",
"password": "ハッシュ化された値"
}
2. API キーの保護
環境変数を使用:
// .env ファイル
API_KEY=your_secret_key
// コードで
const apiKey = process.env.API_KEY;
3. インジェクション攻撃の防止
ユーザー入力を常に検証:
function validateJson(input) {
try {
JSON.parse(input);
return true;
} catch (e) {
return false;
}
}
4. ファイルアクセス権限
# Linux/Mac - 読み取り専用
chmod 444 config.json
# 所有者のみが読み書き
chmod 600 secrets.json
5. JSON インジェクション防止
import json
# ✗ 危険な連結
json_string = '{"user": "' + user_input + '"}'
# ✓ 安全なシリアライズ
data = {'user': user_input}
json_string = json.dumps(data)
JSON ファイルの最適化
ファイルサイズの削減
最小化:jq -c . large.json > small.json
圧縮:
gzip -9 data.json
# data.json → data.json.gz
性能最適化
大きなファイルの場合、JSON Lines を使用:
{"id": 1, "name": "田中"}
{"id": 2, "name": "佐藤"}
ベストプラクティス
1. 一貫したフォーマット
{
"userId": 1,
"userName": "田中",
"userAge": 30
}
2. ドキュメント化
{
"version": "1.0",
"description": "ユーザー設定ファイル",
"data": {}
}
3. バージョン管理
{
"schemaVersion": "1.0",
"data": {}
}
4. バックアップを取る
重要なファイルは常にバックアップ:
cp config.json config.json.backup
5. キーを説明
意味のあるキー名を使用:
✅ わかりやすい:
{
"createdAt": "2026-01-16",
"updatedAt": "2026-01-16"
}
❌ わかりにくい:
{
"ca": "2026-01-16",
"ua": "2026-01-16"
}
まとめ
JSON ファイルは強力で柔軟なデータ形式です:
- 汎用的 - あらゆる用途に使用
- 標準的 - 業界標準
- シンプル - 簡単に作成・編集
- 安全 - 正しく処理すれば安全
- 効率的 - ファイルサイズが小さい
JSON ファイルの作成と管理の基礎を習得しました!