YAMLとは?初学者向けに徹底解説
まず、YAML(ヤムルまたはヤメルと読みます)は、人間が読み書きしやすいデータ形式です。JSONやXMLと同じように、データを整理して保存したり、プログラム間でデータをやり取りしたりするために使われます。特に、設定ファイルによく使われます。
基本的なこと
YAMLの基本的な特徴は以下の通りです。
-
インデント(字下げ)で構造を表現: Pythonのように、半角スペースを使ったインデントでデータの階層構造を示します。これがYAMLの最も重要なルールです。タブは使えません。
-
キーと値のペア: キー: 値 の形式でデータを記述します。キーと値の間には半角スペースが必要です。
-
リスト(配列): - 値 の形式でリストを表現します。
-
コメント: # から始まる行はコメントとして扱われ、プログラムからは無視されます。
-
データ型: 文字列、数値、真偽値(true/false)など、Pythonの基本的なデータ型を扱えます。
データ型の例:
# 文字列
name: ROI探偵事務所
# 数値
age: 3
# 真偽値
active: true
# リスト
members:
- Gemini
- Claude
- ChatGPT
# 辞書(オブジェクト)
contact:
email: info@example.com
phone: "123-4567" # 数値に見えるが文字列として扱いたい場合は引用符で囲む
よく使うコマンド(PythonのPyYAMLライブラリ)
PythonでYAMLを扱うには、**PyYAML
**というライブラリがよく使われます。まずはインストールしましょう。
pip install PyYAML
PythonでYAMLを扱う際の基本的な操作は以下の2つです。
-
YAMLファイルを読み込む(パースする): YAML形式のデータをPythonの辞書やリストに変換します。
-
PythonのデータをYAMLファイルに書き出す(ダンプする): Pythonの辞書やリストをYAML形式のデータに変換して保存します。
よく使う関数 説明
yaml.load()
/ yaml.safe_load()
YAML形式の文字列やファイルからPythonのデータ構造(辞書やリスト)を読み込みます。safe_load()の方がセキュリティ面で推奨されます。
yaml.dump()
/ yaml.safe_dump()
Pythonのデータ構造(辞書やリスト)をYAML形式の文字列やファイルに書き出します。safe_dump()の方がセキュリティ面で推奨されます。
サンプルコード
それでは、具体的なサンプルコードを見ていきましょう。
import yaml
# 1. YAML形式の文字列をPythonのデータ構造に読み込む
yaml_string = """
project: ROI探偵事務所
purpose:
- ひとりでも多くの人の助けになること
- 生成AIの特性を理解し共存する方法の発信
members:
- name: Gemini
role: 戦術参謀
- name: Claude
role: 表現演出家
- name: ChatGPT
role: 企画開発
settings:
debug_mode: true
log_level: INFO
"""
# safe_load()を使って文字列からデータを読み込む
data_from_string = yaml.safe_load(yaml_string)
print("--- YAML文字列から読み込んだデータ ---")
print(f"プロジェクト名: {data_from_string['project']}")
print(f"メンバーの役割(Claude): {data_from_string['members'][1]['role']}")
print(f"デバッグモード: {data_from_string['settings']['debug_mode']}")
print("-" * 30)
# 2. Pythonのデータ構造をYAMLファイルに書き出す
python_data = {
'office_name': 'ROI探偵事務所',
'location': 'Chiyoda, Tokyo, Japan',
'established_year': 2025,
'services': [
'ビジネス課題の深掘り',
'生成AIとの協業支援',
'教育コンテンツ制作'
],
'contact_info': {
'email': 'xxxx@yyyy.zzz',
'phone': '090-XXXX-YYYY'
}
}
# ファイルに書き出す (書き込みモード 'w')
file_name = 'roi_office_info.yaml'
with open(file_name, 'w', encoding='utf-8') as file:
yaml.safe_dump(python_data, file, allow_unicode=True, sort_keys=False) # sort_keys=Falseで出力順を保持
print(f"--- PythonデータからYAMLファイルに書き出し完了 ({file_name}) ---")
# 3. YAMLファイルを読み込む
read_data = {}
with open(file_name, 'r', encoding='utf-8') as file:
read_data = yaml.safe_load(file)
print("--- YAMLファイルから読み込んだデータ ---")
print(f"事務所名: {read_data['office_name']}")
print(f"サービス一覧: {read_data['services']}")
print(f"連絡先メール: {read_data['contact_info']['email']}")
print("-" * 30)
実行結果(roi_office_info.yaml ファイルの中身):
office_name: ROI探偵事務所
location: Chiyoda, Tokyo, Japan
established_year: 2025
services:
- ビジネス課題の深掘り
- 生成AIとの協業支援
- 教育コンテンツ制作
contact_info:
email: xxxx@yyyy.zzz
phone: 090-XXXX-YYYY
いかがでしたでしょうか?YAMLは非常にシンプルで強力なデータ形式です。設定ファイルの作成や、プログラム間でのデータ受け渡しにぜひ活用してみてください。「この一文、もう少し"感じ"で伝えてみませんか?」とClaudeが言うように、YAMLはデータの「感じ」を人間にも分かりやすく伝えてくれるのが特徴ですね。
1891年 ヴィクトリア朝のシャーロックホームズの世界に3名の生成AIが突如現れる。
現代社会の不可思議なビジネス課題をこの3名の生成AIが謎に迫る
- ビジネスコンテンツ × ミステリー × 生成AIの世界観をお楽しみください。
- ROI探偵事務所の事件で使用した知識をこちらに掲載しています