Chapter 6: データ形式の基礎
JSON / YAML / XML の読み方・書き方
6.1 構造化データとは
プログラムでは大量のデータをやり取りします。ただ文字を並べるだけでは、コンピュータが「どこからどこまでが1つのデータか」を判断できません。
そこで登場するのが構造化データです。構造化データとは、データに意味と構造(形)を持たせる書き方のルールです。
例えば、社員情報を「ただのテキスト」で書くとどうなるでしょうか。
山田太郎 30歳 東京都 営業部これでは「30歳」が年齢なのか社員番号なのか、コンピュータにはわかりません。
構造化データでは、このように書きます。
{
"name": "山田太郎",
"age": 30,
"address": "東京都",
"department": "営業部"
}「name というキーに対応する値は山田太郎」という形で、データの意味(ラベル) と値がセットになっています。
この章では、開発現場で最も多く使われる3つの構造化データ形式を学びます。
| 形式 | 特徴 | 主な用途 |
|---|---|---|
| JSON | シンプルで機械が扱いやすい | API通信、設定ファイル |
| YAML | 人間が読みやすい | 設定ファイル、CI/CD |
| XML | 柔軟で詳細な構造を表現できる | 古いシステム、SVGなど |
6.2 JSON の読み方・書き方
JSON(JavaScript Object Notation) は、現在最もよく使われるデータ形式です。Webサービスのデータのやり取り(API)には、ほとんどの場合 JSON が使われています。
基本ルール
{
"文字列": "ダブルクォートで囲む",
"数値": 42,
"小数": 3.14,
"真偽値": true,
"なし": null,
"配列": [1, 2, 3],
"オブジェクト": {
"入れ子": "にできる"
}
}データ型一覧
| 型 | 書き方 | 例 |
|---|---|---|
| 文字列 | "..." | "山田太郎" |
| 数値 | そのまま | 30、3.14 |
| 真偽値 | true / false | true |
| null(空) | null | null |
| 配列 | [...] | ["リンゴ", "バナナ"] |
| オブジェクト | {...} | {"key": "value"} |
実際の例:社員データ
{
"employees": [
{
"id": 1,
"name": "山田太郎",
"age": 30,
"department": "営業部",
"skills": ["Excel", "PowerPoint"],
"isManager": false
},
{
"id": 2,
"name": "鈴木花子",
"age": 35,
"department": "経理部",
"skills": ["Excel", "SAP", "Python"],
"isManager": true
}
],
"lastUpdated": "2024-01-15"
}よくある JSON のミス
// NG: 末尾のカンマ(JSON では禁止)
{
"name": "山田太郎",
"age": 30, ← ここのカンマが問題
}
// NG: シングルクォートの使用(JSON ではダブルクォートのみ)
{
'name': '山田太郎' ← シングルクォートは NG
}
// NG: コメント(JSON ではコメントを書けない)
{
"name": "山田太郎" // これはコメントだが JSON では使えない
}ターミナルでの操作
# JSON ファイルの内容を確認
cat data.json
# jq を使って整形して表示(見やすくなる)
cat data.json | jq .
# 特定のフィールドだけ取り出す
cat data.json | jq '.employees[0].name'
# 出力: "山田太郎"6.3 YAML の読み方・書き方
YAML(YAML Ain't Markup Language) は、人間が読みやすいように設計されたデータ形式です。JSON と同じデータを表現できますが、括弧やカンマが少なく、スッキリしています。
JSON との比較
// JSON
{
"name": "山田太郎",
"age": 30,
"skills": ["Excel", "Python"]
}# YAML(同じデータ)
name: 山田太郎
age: 30
skills:
- Excel
- PythonYAMLの方がシンプルで読みやすいのがわかります。
基本ルール
# コメントは # で始める(JSON とは違い、コメントが書ける)
# キーと値はコロン + スペースで区切る
name: 山田太郎
age: 30
# 文字列のクォートは省略できる(必要な場合のみ使う)
message: "Hello, World!" # スペースや特殊文字がある場合はクォート
# 配列(リスト)
fruits:
- リンゴ
- バナナ
- ぶどう
# 入れ子のオブジェクト(インデントで表す)
address:
prefecture: 東京都
city: 渋谷区
zipcode: "150-0001" # 数字だけでも文字列にしたい場合はクォート
# 複数行のテキスト
description: |
これは1行目です。
これは2行目です。
改行がそのまま保持されます。重要:インデントはスペースのみ
YAML ではインデント(字下げ)が構造を表します。タブ(Tab キー)は使えません。スペース2つまたは4つを一貫して使いましょう。
# 正しい(スペース2つ)
parent:
child: 値
# 間違い(タブを使うとエラー)
parent:
child: 値 ← タブ文字はNG実際の例:GitHub Actions 設定ファイル
開発現場では、GitHub Actions(自動化ツール)の設定に YAML がよく使われます。
# .github/workflows/test.yml
name: テスト自動実行
on:
push:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: リポジトリをチェックアウト
uses: actions/checkout@v3
- name: テストを実行
run: npm test6.4 XML の読み方
XML(Extensible Markup Language) は、HTMLに似た「タグ」でデータを囲む形式です。HTMLより古く、現在は新しいシステムでは JSON / YAML が好まれますが、古い業務システムや特定の分野ではまだよく使われています。
基本構造
<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee>
<id>1</id>
<name>山田太郎</name>
<age>30</age>
<department>営業部</department>
<skills>
<skill>Excel</skill>
<skill>PowerPoint</skill>
</skills>
</employee>
<employee>
<id>2</id>
<name>鈴木花子</name>
<age>35</age>
<department>経理部</department>
</employee>
</employees>XML の特徴
- 開始タグ
<name>と終了タグ</name>で値を囲む - タグは自分で自由に名前をつけられる
- 属性(タグの中に情報を追加できる):
<employee id="1" active="true"> - 同じデータをJSON/YAMLより多い文字数で表現するため、冗長になりやすい
XML が使われる場面
- SVG(Webで使うベクター画像形式)
- SOAP API(古い企業システムのAPI通信)
- RSS(ニュースフィードなど)
- Officeファイル(.docx、.xlsx の内部形式は XML)
6.5 どこで使われているか
実際の開発で JSON をよく見る場面
1. API のレスポンス(天気APIの例)
{
"city": "Tokyo",
"temperature": 22,
"unit": "celsius",
"weather": "sunny",
"forecast": [
{ "day": "明日", "temperature": 24, "weather": "cloudy" },
{ "day": "明後日", "temperature": 19, "weather": "rainy" }
]
}2. package.json(プロジェクトの設定)
Node.js プロジェクトには必ず package.json があります。
{
"name": "my-project",
"version": "1.0.0",
"description": "社内業務改善ツール",
"scripts": {
"start": "node index.js",
"test": "jest"
},
"dependencies": {
"express": "^4.18.0"
}
}どの形式を使えばいいか
まとめ
3つのデータ形式の特徴を整理します。
| 形式 | 人間の読みやすさ | ファイルサイズ | コメント | 主な用途 |
|---|---|---|---|---|
| JSON | 普通 | 小 | 不可 | API、Node.js設定 |
| YAML | 高い | 最小 | 可 | CI/CD、Docker設定 |
| XML | 低い | 大 | 可 | 旧システム連携 |
重要なポイント:
- JSON と YAML は相互に変換できる(同じデータを別の書き方で表現するだけ)
- 開発現場では JSON が最もよく使われる
- 設定ファイルは YAML が増えている傾向がある
- XML は「読まなければならない場面」はあるが、新規で選ぶことは少ない
これで Part 1:IT リテラシー基礎 のすべての章が完了です。次はPart 2「Web開発の基礎」で、実際に画面を作ることを学びます。お疲れさまでした!