JSON入門:プログラム間でデータをやり取りする共通言語
はじめに
システム開発、特にウェブサービスの世界に足を踏み入れると、「JSON(ジェイソン)」という言葉を頻繁に耳にするようになります。APIからデータを取得したり、設定情報を扱ったりする場面で、このJSON形式のデータが登場します。見た目は記号が多くて少し複雑に見えるかもしれませんが、実はプログラム同士が情報を交換するための非常に重要で便利な「共通言語」なのです。
このレポートでは、「JSONって一体何?」「どんな特徴があって、なぜ使われるの?」「基本的な書き方は?」といった疑問について、ITの基礎を学んだ方を対象に、分かりやすく解説していきます。YAMLやマークダウンとはまた違った役割を持つJSONの基本を理解し、データ形式の選択肢を広げましょう。
JSONとは?
JSONは「JavaScript Object Notation」の略で、その名の通り、プログラミング言語であるJavaScriptのオブジェクト(データをまとめたもの)の書き方をベースにして作られた、軽量なデータ交換フォーマットです。フォーマットとは、データを記述するための「形式」や「書式」のことです。
JSONの主な目的は、異なるプログラムやシステム間で、構造化されたデータを簡単にやり取りすることです。例えば、ウェブサイトが表示する情報をサーバーから受け取ったり、スマートフォンアプリがサーバーと通信したりする際に、データを受け渡すための「荷物の梱包ルール」のようなものだと考えると分かりやすいかもしれません。
JSONは特定のプログラミング言語に依存せず、多くの言語(Java, Python, Ruby, PHP, C#など)で簡単に扱えるように設計されています。そのため、ウェブ開発を中心に、非常に幅広い分野で標準的なデータ形式として利用されています。
なぜJSONが広く使われるの?
JSONがこれほどまでに普及したのには、いくつかの理由があります。
-
シンプルで分かりやすい構造: JSONの基本的な構成要素は「キーと値のペア(オブジェクト)」と「値のリスト(配列)」の2種類だけです。このシンプルな組み合わせで、様々なデータ構造を表現できます。
-
軽量である: JSONはテキストベースであり、XML(かつてよく使われた別のデータ形式)のようにタグで情報を囲む必要がないため、データ量が比較的少なくて済みます。データ量が少ないということは、ネットワークでの送受信が速くなり、処理の負荷も軽くなるというメリットがあります。
-
プログラムで扱いやすい: 多くのプログラミング言語には、JSON形式のデータを簡単に読み込んだり(パース)、書き出したり(生成)するための機能(ライブラリ)が標準で用意されています。これにより、開発者はJSONデータの扱いに手間取ることなく、本来の処理に集中できます。
-
人間にも(ある程度)読みやすい: 適切にインデント(字下げ)や改行がされていれば、人間でもデータの構造を理解することができます。YAMLほどではありませんが、完全に機械向けというわけでもありません。
-
Webとの親和性: JavaScriptがウェブブラウザで動作する主要な言語であることから、JavaScriptのオブジェクト記法をベースにしたJSONは、Web技術との相性が非常に良いです。Web API(ウェブサービスが外部に機能やデータを提供する仕組み)でのデータ交換形式として、デファクトスタンダード(事実上の標準)となっています。
JSONの基本的な書き方
JSONの書き方には厳密なルールがあります。これを守らないと、プログラムが正しくデータを読み取れません。
オブジェクト (Object)
複数の「キー(名前)」と「値」のペアを {}
(波括弧)で囲んで表現します。これは、何かの「モノ」や「概念」に関する情報をまとめるのに使います。キーと値の間は :
(コロン)で区切り、各ペアの間は ,
(カンマ)で区切ります。
-
キー: 必ず
"
(ダブルクォーテーション)で囲まれた文字列でなければなりません。 - 値: 文字列、数値、ブール値(true/false)、null、別のオブジェクト、または配列(後述)のいずれかになります。
{
"name": "Sato Hanako",
"age": 28,
"isStudent": false,
"city": "Fukuoka"
}
上の例では、「名前(name)」「年齢(age)」「学生かどうか(isStudent)」「都市(city)」という4つの情報を持つ「人」のデータを表現しています。
配列 (Array)
複数の値を順序付けて []
(角括弧)で囲んで表現します。これは、何かの「リスト」や「集まり」を表現するのに使います。各値の間は ,
(カンマ)で区切ります。
配列の中に入れる値は、文字列、数値、ブール値、null、オブジェクト、または別の配列など、様々な型を混ぜることができます(ただし、通常は同じ種類のデータを入れることが多いです)。
[
"Apple",
"Banana",
"Orange"
]
これは、果物の名前のリストを表現しています。
値のデータ型
JSONで使える値の基本的なデータ型は以下の通りです。
-
文字列 (String):
"
(ダブルクォーテーション)で囲まれたテキスト。例:"Hello, JSON!"
-
数値 (Number): 整数または浮動小数点数。引用符で囲みません。例:
123
,3.14
,-10
-
ブール値 (Boolean):
true
またはfalse
のいずれか。引用符で囲みません。 - null: 何もないこと、空であることを示す特別な値。引用符で囲みません。
組み合わせ
オブジェクトと配列は、互いに入れ子にして、より複雑なデータ構造を作ることができます。
{
"class_name": "A組",
"teacher": {
"name": "Tanaka Sensei",
"subject": "Math"
},
"students": [
{
"id": 101,
"name": "Sato Kenji",
"grades": [85, 92, 78]
},
{
"id": 102,
"name": "Suzuki Yumi",
"grades": [90, 88, 95]
}
]
}
この例では、クラス名(class_name
)、担任教師の情報(teacher
、これはオブジェクト)、そして生徒のリスト(students
、これは配列) を持つ「クラス」のデータを表現しています。さらに、生徒リストの中の各生徒もオブジェクトであり、その中に成績のリスト(grades
、これは配列) が含まれています。
JSONのルールまとめ
- 全体はオブジェクト
{}
または配列[]
で始まる。 - オブジェクトはキーと値のペアの集まり。
- キーは必ずダブルクォーテーション
""
で囲まれた文字列。 - キーと値の間はコロン
:
。 - ペアとペアの間、値と値の間はカンマ
,
で区切る。 - 配列は値のリスト。
- 値は、文字列(
""
)、数値、ブール値(true
/false
)、null
、オブジェクト{}
、配列[]
のいずれか。 - コメントは書けない(これがYAMLとの大きな違いの一つ)。
- 最後の要素の後ろにカンマ
,
をつけてはいけない(Trailing comma は許されない)。
JSONはどんな時に使う?
JSONはその特性から、特にプログラムがデータを扱う場面で広く使われます。
- Web API: ウェブサービスが外部にデータを提供したり、外部からのデータを受け取ったりする際の標準的な形式。天気予報、地図情報、SNSの投稿など、多くのWeb APIがJSONでデータをやり取りしています。
- 設定ファイル: プログラムが読み込む設定情報。特に、人間が頻繁に編集するよりも、プログラムが主に読み書きするような設定に向いています。
- 非同期通信 (Ajax): ウェブページがページ全体を再読み込みせずに、サーバーとデータをやり取りする技術(Ajax)で、サーバーとの通信にJSONがよく使われます。
- NoSQLデータベース: MongoDBなどのドキュメント指向データベースでは、データをJSON(またはそれに類似したBSON)形式で保存します。
- ログデータ: 構造化されたログ情報を記録する形式として使われることもあります。
注意点
JSONを使う上で知っておくと良い点です。
- 構文が厳密: ルールが厳密なため、カンマのつけ忘れやつけすぎ、ダブルクォーテーションの閉じ忘れなどで、簡単にエラーになります。多くのテキストエディタにはJSONの構文チェック機能があるので、活用すると良いでしょう。
-
コメントが書けない: 標準のJSON仕様ではコメントを記述できません。設定ファイルなどで注釈を入れたい場合は、YAMLを使うか、設定項目自体に説明用のキー(例:
"_comment": "これは説明です"
)を追加するなどの工夫が必要になります。 - 人間には読みにくい場合も: データ構造が複雑になったり、インデントや改行なしで一行に書かれたりすると、人間にとっては読みにくくなります。整形ツール(Pretty Printer)などを使って見やすくすることが推奨されます。
まとめ
JSONは、JavaScriptのオブジェクト記法を基にした、シンプルで軽量なデータ交換フォーマットです。プログラム間のデータやり取り、特にWeb APIでの通信において、事実上の標準として広く使われています。
オブジェクト {}
と配列 []
を基本とし、文字列、数値、ブール値、nullといったデータ型を組み合わせて、様々な構造化データを表現できます。多くのプログラミング言語で簡単に扱えるため、開発者にとって非常に便利な存在です。
YAMLと比べると、構文がより厳密で、コメントが書けないという違いがありますが、その分、機械による解釈が確実で、処理速度も速い傾向があります。マークダウンが主に人間が読むための文書構造を示すのに対し、JSONは主にプログラムがデータを処理するための構造を示すことに特化しています。
システム開発、特にWeb関連の分野では避けて通れない技術ですので、基本的な書き方と使われ方を理解しておくことは非常に重要です。まずは簡単なJSONデータを読んでみたり、書いてみたりすることから始めてみましょう。
Discussion