4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【JSON】なぜ使われがち?

Posted at

はじめに

package.jsonやsettings.jsonなどでよく目にしているJSONですが、私はなんとなくの理解しかしていませんでした。
ちゃんと理解するために本記事でまとめます。

JSONとは

JSON(JavaScript Object Notation)は、データを構造化して表現するためのテキストベースのフォーマットです。
軽量で読みやすく、多くのプログラミング言語でサポートされているため、API通信やデータ保存に広く使用されています。
元々はJavaScriptのオブジェクト記法から派生しましたが、現在では言語に依存しない標準的なデータ交換フォーマットとして使用されています。

なぜJSONが生まれた?

Web開発の課題とXMLの限界

JSONが登場する前、Web上でのデータ交換にはXML(eXtensible Markup Language)が主流でした。しかし、XMLには以下のような課題がありました。

  • 冗長性: タグの開始と終了が必要で、データサイズが大きくなる
  • 複雑性: 解析(パース)が複雑で、処理速度が遅い
  • 可読性: 人間が読みにくく、デバッグが困難
<!-- XML例:冗長で複雑 -->
<?xml version="1.0" encoding="UTF-8"?>
<user>
  <id>1</id>
  <name>田中太郎</name>
  <email>tanaka@example.com</email>
  <age>25</age>
</user>

Ajaxの普及とリアルタイム通信の需要

2000年代初頭、Ajax(Asynchronous JavaScript and XML)技術の普及により、Webページを再読み込みせずにサーバーとデータをやり取りする需要が高まりました。この時代背景で、より軽量で効率的なデータフォーマットが求められるようになりました。

Douglas Crockfordによる発明

2001年、Douglas Crockford氏がJSONを考案しました。彼はJavaScriptのオブジェクトリテラル記法がシンプルで効率的であることに着目し、これをデータ交換フォーマットとして活用することを提案しました。

JSONの名前の由来:

  • JavaScript Object Notation = JavaScriptオブジェクト記法
  • JavaScriptの構文をベースにしているが、言語に依存しない設計

JSONの革新性

同じデータをJSONで表現すると、以下のように簡潔になります。

{
  "id": 1,
  "name": "田中太郎",
  "email": "tanaka@example.com",
  "age": 25
}

XMLと比較したJSONの利点

  • データサイズの削減
  • 解析速度が大幅に向上
  • JavaScriptとの親和性が高い
  • 人間が読みやすい

JSONの特徴

  • 軽量: XMLと比較してデータサイズが小さい
  • 可読性: 人間が読みやすい構造
  • 言語非依存: ほぼすべてのプログラミング言語でサポート

実用的なJSONの例

ユーザー情報の例

{
  "users": [
    {
      "id": 1,
      "name": "田中太郎",
      "email": "tanaka@example.com",
      "age": 25,
      "isActive": true,
      "roles": ["user", "admin"],
      "createdAt": "2024-01-15T10:30:00Z"
    },
    {
      "id": 2,
      "name": "佐藤花子",
      "email": "sato@example.com",
      "age": 28,
      "isActive": false,
      "roles": ["user"],
      "createdAt": "2024-02-20T14:15:30Z"
    }
  ]
}

API レスポンスの例

{
  "status": "success",
  "code": 200,
  "message": "データの取得に成功しました",
  "data": {
    "totalCount": 150,
    "currentPage": 1,
    "totalPages": 15,
    "items": [
      {
        "id": 1,
        "title": "JSONの基礎",
        "description": "JSONファイルの使い方を学ぼう"
      }
    ]
  },
  "timestamp": "2024-03-15T09:45:22Z"
}

JSONのルール

  1. 文字列は必ず二重引用符で囲む

    // 正しい
    {"name": "田中"}
    
    // 間違い
    {'name': '田中'}
    {"name": '田中'}
    
  2. 最後のプロパティの後にカンマは不要

    // 正しい
    {
      "name": "田中",
      "age": 25
    }
    
    // 間違い
    {
      "name": "田中",
      "age": 25,
    }
    
  3. コメントは使用不可

    // これは無効
    {
      // "comment": "これはコメント",
      "name": "田中"
    }
    

JSONファイルの使用例

設定ファイル(package.json)

{
  "name": "my-app",
  "version": "1.0.0",
  "description": "Sample application",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  },
  "dependencies": {
    "express": "^4.18.0",
    "axios": "^1.3.0"
  }
}

データベース設定

{
  "database": {
    "host": "localhost",
    "port": 5432,
    "name": "myapp_db",
    "user": "admin",
    "password": "secret123",
    "ssl": true,
    "pool": {
      "min": 2,
      "max": 10
    }
  }
}

JSONとその他のフォーマットとの比較

特徴 JSON XML YAML
可読性
データサイズ
パース速度
コメント x o o
スキーマ検証 JSON Schema DTD/XSD YAML Schema

まとめ

JSONは現代のWeb開発において重要な役割を果たすデータフォーマットです。

ポイント

  • シンプルで直感的な構文
  • 軽量でパフォーマンスが良い
  • API通信の標準フォーマット
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?