JSONとは
JSONとは、JavaScriptのオブジェクト表記法を由来としたデータの記述方式のことです。JSONは「JavaScript Object Notation」の略称です。Object Notationとは、人が容易に読み書きしてデータを簡単に扱えるように構造化した記述方法であり、フォーマットとして構造化します。
ここではJSONはJavaScriptとどのような関係があるのか、ほかのデータ記述形式との違いはどのようなものかを説明します。
JSONとJavaScriptの関係
プログラミング言語であるJavaScriptの動作において、JSONのオブジェクトはJavaでいうインスタンスと同じように扱えます。もともとは、JavaScriptのオブジェクトを記述するためのデータ構造でしたが、JavaScriptでデータを扱う上で便利に利用できることから、現在ではバックエンドと通信する際のフォーマットとして広く利用されています。
ほかのフォーマットとの違い
JSONと類似するデータの記述形式に、XMLやCSVがあります。JSONは比較的新しいデータ記述形式なので、以前はXMLやCSVのほうが一般的でした。古くからあるプロジェクトでは現在もXMLやCSVは普通に使われています。ここでは、JSONとXML、CSVは何が異なるのか解説します。
JSONとXMLの違い
XMLは、JSONと同様にデータ交換に利用されますが、表記法が異なります。XMLは、拡張可能なマークアップ言語を意味します。マークアップ言語とは、もともとある文章にマークを付与し、構造を明確にした形式の言語です。XMLは3つの中でも古くからあり、汎用機の案件などで使用されている傾向があります。言語としては、COBOLとXMLを組み合わせて使用されることが多いです。
JSONとCSVの違い
CSVもJSON同様にデータ交換で利用されますが、こちらも表記法が異なります。CSVは、Excelをはじめとする表計算ソフトなどで古くから使用されており、データをカンマで区切って記述します。プログラミングの経験がなくても、CSVファイルという呼び方には聞きなじみのある方が多いでしょう。シンプルな形式で直感的な理解がしやすいといわれています。
関連記事:JavaScriptとは?基本の書き方を初心者にわかりやすく解説
JSONの特徴
JSONはJavaScriptでの利用を前提に開発されたテキストフォーマットです。特定のプログラミング言語に依存しない便利なフォーマットとして、JavaScriptだけではなくC言語やJava、Pythonなど多くのプログラミング言語で活用されています。
JSONの主な特徴について解説します。
データ量が少ない
JSONは、XMLと比較すると記述量が少なく、データ容量も少ない傾向があります。テキストデータのため、1ファイルあたりの容量では大差はありませんが、通信回数が増えると無視できないデータ容量です。大規模なプロジェクトではファイルの数も増えていく傾向があるので、データ量が少ないことはメリットになります。
シンプルな表記形式
JSONはJavaScriptのオブジェクト構文に由来しているため、XMLよりもシンプルな表記形式となっており、可読性に優れています。可読性に優れていると、ファイルを作成した人以外も読むことができ、改修のときにも便利です。プロジェクトによってはJSONファイルを頻繁に書き換えるので、可読性の高さは大きなメリットです。
言語に依存しない
異なるプログラミング言語間では、通常、互換性の問題からデータの交換は行えません。テキストベースであるJSONを利用することで、データのやりとりが可能となります。複数のプログラミング言語を使用して開発している場合や、既存の言語から別の言語に書き換えているときなどに特に便利です。
自由度が高い
JSONは、複数のデータを組み合わせた複合データを記述することが可能です。CSVで同様のことを行うと、属性との関連性が分からなくなり、可読性が低下してしまいます。また、XMLでは記述量が増え、管理がしにくくなります。
JSONのメリット
JSONは、使用されているモダン言語のほとんどで読み書き用のライブラリが用意されています。あるデータフォーマットの仕様がどれだけ優れていても、読み書きに必要なサードパーティのライブラリなどを導入しなければならない場合、採用するハードルは上がるでしょう。
JSONは、ほとんどの言語で何もインストールする必要がなく、JSON関係の標準ライブラリを読み込むだけで読み書きができるフォーマットです。
ほかにも、JSONには以下のようなメリットがあります。
環境とバージョン依存の問題が少ない
JSONは安定した、堅牢なフォーマットです。CSVなどの単純な改行区切りやタブ区切りなどの古いフォーマットでは、文字コードの違いによる環境依存のデータ互換性の問題が起こることがあります。また、Excelなどのバイナリーファイル形式の場合は、ソフトウェアのバージョン違いによる非互換性問題がたびたび生じます。
JSONには、これらの問題が発生しにくいメリットがあります。JavaScript構文をベースとしたデータ形式であり、これまでにフォーマットが変更されたことはありません。
構造化したままデータベースに格納できる
JSONは二次元配列にも対応できるフォーマットです。Web開発を行う際には、データの個数が可変になることがあります。たとえば、ネットショップで商品を販売する際、商品によってオプションを変えたり、すべてのオプションのカラムを用意したりすることは現実的ではありません。
配列として1つのカラムにすべてのオプション情報を入れる場合、JSON形式は便利です。JSON形式のフォーマットを文字列として扱い、データベースに保存します。その後、データベースからデータを取得して、JSONデータのデコードを行います。JSONを使用することで、二次元配列に対応でき、よりスマートな開発を実現できるでしょう。
テキストベースで軽い
これまで、ネットワーク通信のフォーマットではXMLが使用されていました。しかし、XMLはタグを利用するために、同じ値で表現する場合でもJSONよりテキスト記述量が多くなり、データ通信量が増加してしまう欠点があります。JSONはテキストの記述量が少ないため、高速な通信を求められる場合に有効です。
JavaScriptとの相性が良い
JSONの人気が高まっている理由の一つに、ReactをはじめとしたVueなどのフロントエンド技術の普及があります。これらのフロントエンドのフレームワークは、JavaScriptなどの言語の開発で使用されます。
JSONは、JavaScriptで扱いやすいフォーマットです。データ通信におけるブラウザ内でのデータ保持や、データフォーマットの両方に適しています。サーバーからJSON形式でデータを受け取るだけで、そのデータをそのまま利用できます。
JSON関係のツール類が豊富
JSONは幅広く使用されているフォーマットであるため、サードパーティのライブラリやツール類が多く存在します。CSVやExcelファイルなどのほかのフォーマットからJSONへ変換するツールやJSON整形ツールなど、定型的な一括変換を行うツールがGitHubなどで公開されており、自らプログラムを書いて処理を行う必要がありません。
ツール類がなくても使用しやすいJSONですが、これらの豊富なサードパーティツールを活用することで、より簡単にデータを扱うことが可能です。
JSONを使用する際の注意点
JSONは利便性が高く幅広く使用されていますが、注意点もあります。JSONのデメリットとも言い換えられるでしょう。特に複雑な構造になりやすい点や、コメントが入れられない分別の方法で情報共有すべき点などは対策しておく必要があります。実際の開発現場では、JSON用の資料を別に用意して共有するなどの工夫が行われています。
複雑な構造になりやすい
JSONはテキストベースで自由度の高いデータを簡単に作成できます。しかし、柔軟なデータ構造を作成できる分、複雑な構造も生まれやすくなる点には注意が必要です。JSONでは、二次元配列なども使用できます。
データの中にオブジェクトや配列を使用すると、プログラミング言語からの読み込み時に、入れ子や繰り返し処理のデータを読み込む回数が増え、処理の数が増えます。この影響によって、処理が重くなったり、処理時間が長くなったりすることがあります。
表記の形式が厳密に決まっている
JSONは自由度の高いデータを作成でき、記述の幅が広いのですが、表記の形式自体は厳密に決まっています。表記の形式を守った上で、自由度の高い記述ができるということです。
表記の形式が厳しいことはバグを防ぐ上では有効なのですが、ちょっとしたミスで読み込みができない、そして原因に気づかず改修に時間がかかってしまう、といった問題も起こる場合があります。
コメントを挿入できない
JSONはコメントの挿入ができません。コメントの挿入ができないことは、複数人で開発をしている場合にデメリットになりえるでしょう。JSONは可読性が高いためコメントがなくても処理の内容を把握しやすいですが、慣れていない人には別途JSONの内容を日本語で説明した資料や、個別での説明などが必要になります。
JSONの文法
JSONを習得するか迷う場合、具体的な文法を見て判断するのも良いでしょう。文法次第で学習難易度が変わるため、勉強を始める前には確認しておくべきポイントといえます。
実際に文法を見ていくと、JSONがシンプルだということがわかりやすいです。ここではJSONのフォーマットやデータ型について紹介していきます。
フォーマット
JSONのフォーマットは以下のような形です。
{
“項目名1”: 値1,
“項目名2”: 値2
.
.
}
-
・項目名と値のペアで記述・項目名はダブルクォーテーションで囲む
・複数のペアを指定する場合はカンマで区切る
・全体を{}または[]で囲む
JSONでは項目名と値をペアで指定し、項目名と値の区切りには「:(コロン)」を使います。項目名はダブルクォーテーションで囲みます。シングルクォーテーションは使用できません。
以下はサンプルです。
{
“total”: 3,
“users”: [{
“name”: “`佐藤”,
“age”: 22
}, {
“name”: “`鈴木”,
“age”: 19
}, {
“name”: “`田中”,
“age”: 20
}]
}
この記述では、3名のユーザー情報を保有しています。ユーザーの情報はnameとageです。これらの情報がusersという配列に格納されており、ユーザー数がtotalに格納されています。
JSONが対応しているデータ型
JSONは以下のデータ型に対応しています。
-
・文字列・数値
・Bool値
・オブジェクト
・配列
・null
文字列
文字列はダブルクォーテーション、バックスラッシュ以外の文字列であれば何でも使用できます。
{“name”: “suzuki”}
数値
数値はダブルクォーテーションで囲む必要はありません。ダブルクォーテーションで囲むと文字列の扱いとなるため注意しましょう。
{“id”, 0}
bool値
bool値の指定が可能です。数値と同じく、ダブルクォーテーションは必要ありません。
{“a” : true, “b” : false}
オブジェクト
オブジェクトの中にオブジェクトを入れることができます。これをネストといいます。
{
“id” : 1,
“name” : “suzuki”,
“attribute” : {
“gender” : “male”,
“phone_number” : “xxxxxxxxxxx”,
“birth” : “2020/01/01”
}
}
配列
オブジェクトの場合は{}を使いますが、配列の場合は[]を使用します。配列内の要素はカンマで区切り、複数入力します。
{
“id”: 1,
“name”: “suzuki”,
“result”: [
89,
90,
23,
56,
54
]
}
null
nullは小文字で指定します。
{“id” : null}
JSONの使用例
JSONを使用する場面についても、学習前に知っておくと良いでしょう。JSONは実際どのような用途で使用されるのか、使用例を紹介します。JSONファイルを作成したり、JSON形式に変換したりするメリットやタイミングがよくわからない場合は、以下の例を把握することでイメージしやすくなるでしょう。
ユーザー生成データの一時保存
JavaScript上で、JSONオブジェクトはインスタンスのような扱いができます。そのため、保持する必要のあるデータや、ユーザーが入力した情報を一時的に保管できます。慣れると簡易的に扱えるので、必要なときに作成し、不要になったら削除する使い方をするケースが多いでしょう。サンプルとして一ファイルだけ残しておいて、ほかの人が参考にして作りやすいようにしておく場合などもあります。
汎用的データの保存フォーマット
JSONは、プログラミングにおける外部保存フォーマットとして非常に便利な形式です。JSON自体がJavaScriptのオブジェクト型をベースにしていることもあり、言語によってはオブジェクト型・辞書型・連想配列などのデータをほぼそのままの形で保存できます。Web開発でよく使用されているPHPにも、配列をJSON形式に変換するメソッドが存在します。
APIサーバーからの応答形式
APIサーバーに接続し、何らかの情報が返答されるときは、JSON形式で返答されるのが一般的です。JavaScriptでAjax通信を利用して、サーバーへGET/POSTする際にJSON形式を使用しますが、ほかのプログラミング言語で接続する際にも基本的にはJSONを使用します。
GETで取得したJSONデータは、各言語に用意されたJSONライブラリやモジュールでパースし、各言語標準のデータ型に変換した上で内容を読み込みます。POSTについても同様です。なお、APIサーバーへ空の接続をするだけであれば必要ありませんが、データのやりとりを行う場合はJSONを扱えなければいけません。
JSONエディターの代表例
JSONはメモ帳のような簡易的なテキストツールへのべた書きや、普段プログラミングに使用しているようなエディターを使用して書くこともできます。しかしJSON専用のエディターもあり、専用エディターだとデータ入力形式の指定や自動的にフォーマットに合わせた形に記述できたりするので便利です。JSONエディターの代表例としては以下が挙げられます。
JSON Editor
「JSON Editor」は端末にインストールして使用するツールです。ほかのエディターとの違いは、データの入力形式や文字色を指定できるなどJSONの記述に対する柔軟性が高いことです。
JSON Editor Online
「JSON Editor Online」はオンライン上で使用するエディターです。左側にテキストが、右側に構造化されたビューが表示されます。どちらか片方を修正するともう一方に修正内容が反映される仕組みです。
JSONに関するよくある質問
JSONに関するよくある質問と回答を紹介します。JSONファイルの用途やメリットを把握しておくことで、自分が勉強すべきか判断しやすいでしょう。また基本的にJSONは単体で使用するものではありません。JSONについて知ることで、ほかのプログラミングスキルなどとどのように組み合わせるかもわかってきます。
Q1. JSONとは何ですか?
JSONとは、JavaScript Object Notationの略です。データ形式の一種で、JavaScriptで作られています。もともとはJavaScriptのオブジェクトを記述するためのデータ構造でしたが、フロントエンドとサーバーサイドをつなぐデータ構造として広く使用されるようになりました。
Q2. JSONファイルは何に使いますか?
JSONファイルはデータを保存するための形式として使用されます。JSONファイルで保存したデータは、サーバーサイドでのデータ処理や、サーバーサイドからフロントエンドにデータを渡して表示する際などに使用されます。
Q3. JSONのメリットは何ですか?
JSONのメリットには、可読性が高い、軽量で処理が高速、コーディングが少なく済む、多くの開発で使用されているので汎用性が高いといったものがあります。またJSONに関する情報や開発を便利にするツールなども豊富なので、さまざまな点で扱いやすいです。
まとめ
JSONとはJavaScript Object Notationの略で、JavaScriptで作られているデータ形式です。サーバーサイドでの処理や、フロントエンドに表示するデータの保存に使用されます。JSONはXMLやCSVよりも新しいデータ形式で、可読性、処理速度、コーディングの少なさ、といった点でメリットがあります。
JSONはプログラミング言語ではなく、JSON単体で開発を行うことはできません。Web開発において、JSONは欠かせない技術の一つです。どのようなプログラミング言語を扱う際も必要となってくるため、ぜひ習得して転職先の幅を広げましょう。
ITエンジニアの転職ならレバテックキャリア
レバテックキャリアはIT・Web業界のエンジニア職を専門とする転職エージェントです。最新の技術情報や業界動向に精通しており、現状は転職のご意思がない場合でも、ご相談いただければ客観的な市場価値や市場動向をお伝えし、あなたの「選択肢」を広げるお手伝いをいたします。
「将来に向けた漠然とした不安がある」「特定のエンジニア職に興味がある」など、ご自身のキャリアに何らかの悩みを抱えている方は、ぜひ無料のオンライン個別相談会にお申し込みください。業界知識が豊富なキャリアアドバイザーが、一対一でさまざまなご質問に対応させていただきます。
「個別相談会」に申し込む
転職支援サービスに申し込む
※転職活動を強制することはございません。
レバテックキャリアのサービスについて