万能すぎる?JSON形式について


〜JavaScriptの範囲を超えた“言語を超越する”データ形式〜




1. JSONって何者?


まずJSONとは、JavaScript Object Notationの略。言葉の通り、もともとはJavaScriptで使われていたオブジェクト表記をベースにしたデータフォーマットです。
たとえば、こんな感じの記述、見たことありませんか?


{
"name": "takeshi",
"age": "20",
}

これがJSONです。見た目はほとんどJavaScriptのオブジェクトと一緒ですね。でも注意すべきは、JSONは“JavaScriptだけのもの”ではないということです。
今やPythonでも、Javaでも、Goでも、Rustでも、Rubyでも、とにかく全部の言語で使えます




2. JavaScriptの檻を飛び越えたデータ形式


なぜJSONは他の言語でも使われるようになったのか?


これは一言でいえば、シンプルすぎて、誰でも使えるからです。
JSONの構造は、「キーと値のペア(辞書やマップ的構造)」と「配列」の二つだけ。そこに文字列・数値・真偽値・nullを入れるだけ。


うんちくポイント:
JSONの仕様は、RFC 8259(以前はRFC 4627)としてIETFによって標準化されており、ECMA(ECMAScriptの標準団体)とは別筋の団体によって承認されているんです。つまり、JavaScriptからは生まれたけど、国際的な“言語無関係”標準になったということ!


この「言語に依存しない中立的なデータ形式」っていう立ち位置が、JSONをデータ交換の世界的共通語に押し上げました。




3. どこで使われているの?


JSONは、今やあらゆるところで使われています。



  • Web APIのレスポンス
    たとえばTwitter API、OpenWeather API、GitHub APIなど、ほとんどがJSONでデータを返してきます。

  • 設定ファイル(package.json, tsconfig.json, composer.json など)

  • データ保存・通信

  • NoSQL系DB(MongoDBなど)

  • モバイルアプリとサーバー間の通信


JSONは軽くて扱いやすいので、XMLの牙城を一気に崩しました
(かつてはSOAP + XMLが王道だったけど、REST + JSONが主流に…)


雑学:
XMLは階層表現やデータスキーマの明示などでメリットもあったけど、人間にとって読みづらいという大きな弱点があった。対してJSONは「見てわかる」「書いてわかる」。つまり開発者フレンドリー




4. JSONとJavaScriptの微妙な違い


意外と知られていないけど、JavaScriptのオブジェクト表記とJSONは完全には一致しません。


たとえば:


// JavaScriptではOK
const obj = {
key: 'value',
method() { console.log('Hello'); },
date: new Date()
};

これをそのままJSONにするとアウトです。なぜか?


JSONに入れられるのは、文字列、数値、真偽値、配列、オブジェクト、nullだけ。
関数、undefined、Dateオブジェクトなどはサポート外なんです。


なので、JSON.stringify(obj) すると、methoddateは無視されたり文字列化されたりします。




5. JSONが愛される理由



  • 軽い(余計な記述がない)

  • わかりやすい(人間が読める)

  • 言語に依存しない(中立的)

  • あらゆるプラットフォームでサポートされている

  • パース(読み取り)が簡単(JSON.parse()

  • シリアライズ(文字列化)も簡単(JSON.stringify()


これはもう、“データの共通語”の王者といえる存在です。




6. JSONの兄弟たち


JSON5


JSONより少しゆるい仕様(コメントOK、シングルクォートOKなど)


BSON(Binary JSON)


MongoDBで使われてる形式で、JSONの構造をバイナリで高速化したもの。


YAML(Yet Another Markup Language)


見た目は柔らかいが、構文が複雑で人間には優しいが機械には厳しい。JSONよりエラーが出やすい。


HJSON(Human JSON)


コメントあり、カンマ不要など、さらに人間寄りにチューニングしたJSON派生。




7. 未来はどうなる?


現在、JSONはほぼ完成されたデータ形式ですが、より高速・効率的なバイナリ形式(MessagePack、Avro、Protobufなど)も登場しています。
ただ、可読性ではやはりJSONが王者。


個人開発から大規模分散システムまで、JSONは「理解される」からこそ支持され続けているのです。




8. JSON雑学まとめ



  • JSONの生みの親はDouglas Crockford。彼が「この形式シンプルで良くね?」って広めた。

  • JSON.stringify() には第二引数でフィルターや整形が可能!

  • JSONはJavaScriptでevalしなくても安全にパースできるというセキュリティ的メリットも注目された。

  • JSONが普及したのはAJAXの流行とも関係深い。(非同期通信で扱いやすかった)




参考文献・リンク





最後に


JSONは「ただのフォーマット」以上の存在です。JavaScriptから生まれ、言語の垣根を越え、今やあらゆるデータの「共通語」
このシンプルさにして最強。JSON、恐るべし。