😊

PythonでYAMLを使ってみよう!基本からサンプルコードまで

2025/02/06に公開

はじめに

YAMLは、人間が読みやすい形式でデータを記述するためのマークアップ言語です。構造化されたデータの表現に適しており、設定ファイルやデータのシリアル化に広く使用されています。本記事では、YAMLの基本的な概念から、Pythonを使ったサンプルコードまで紹介します。

YAMLの基本構文

YAMLには、データを表現するためのいくつかのスタイルがあります。代表的なものとして「ブロックスタイル」と「フロースタイル」があります。

ブロックスタイル

ブロックスタイルは、インデントを使用して階層構造を表現する方法です。最も一般的なYAMLの記述形式です。

# config.yaml
database:
  host: localhost
  port: 3306
  user: root
  password: secret
  name: mydatabase

フロースタイル

フロースタイルは、インラインでデータを表現する方法です。2種類あります。

シーケンス

シーケンス(配列)をインラインで表現する方法です。

numbers: [1, 2, 3, 4, 5]

マッピング

キーと値のペアをインラインで表現する方法です。

user: {name: John, age: 30, city: Tokyo}

データ型

YAMLはさまざまなデータ型をサポートしています。以下に代表的なものを紹介します。

文字列

name: "YAML Example"

数値

integer: 10
float: 3.14

真偽値

is_active: true

Null値

no_value: null

日付

date: 2024-08-05

改行を扱う方法

YAMLで複数行の文字列を扱う場合、|(リテラル)または>(折りたたみ)のシンボルを使います。

リテラル

改行をそのまま保持します。

description: |
  これはYAMLの
  改行を保持する
  例です。

折りたたみ

改行を空白に置き換えます。

description: >
  これはYAMLの
  改行を空白に置き換える
  例です。

区切り文字について

YAMLでは、ドキュメントの区切りとして---...を使用します。

---

新しいドキュメントの開始を示します。

---
name: "First Document"
---
name: "Second Document"

...

ドキュメントの終了を示します。

name: "YAML Document"
...

PythonでYAMLを使ったサンプルプログラム

では、実際にPythonを使ってYAMLファイルを読み込むサンプルプログラムを作成してみましょう。PyYAMLというライブラリを使います。

環境の準備

まず、PyYAMLをインストールします。

pip install pyyaml

サンプルコード

以下のPythonプログラムは、YAMLファイルを読み込み、その内容を表示する簡単な例です。

import yaml

# YAML 設定ファイルを読み込む関数
def load_config(file_path):
    with open(file_path, 'r') as file:
        config = yaml.safe_load(file)
    return config

# 設定内容を表示する関数
def display_config(config):
    print("データベース設定:")
    print(f"ホスト: {config['database']['host']}")
    print(f"ポート: {config['database']['port']}")
    print(f"ユーザー: {config['database']['user']}")
    print(f"パスワード: {config['database']['password']}")
    print(f"データベース名: {config['database']['name']}")
    
    print("\nロギング設定:")
    print(f"レベル: {config['logging']['level']}")
    print(f"ログファイル: {config['logging']['file']}")

# メイン処理
if __name__ == "__main__":
    config = load_config('config.yaml') #ここはパスを適宜調整してください
    display_config(config)

実行結果

config.yamlファイルの内容を以下のように表示します。

データベース設定:
ホスト: localhost
ポート: 3306
ユーザー: root
パスワード: secret
データベース名: mydatabase

ロギング設定:
レベル: DEBUG
ログファイル: /var/log/myapp.log

まとめ

この記事では、YAMLの基本的な構文やデータ型、Pythonを使ったサンプルコードを紹介しました。YAMLは読みやすく、設定ファイルなどに最適です。Pythonと組み合わせることで、簡単に設定ファイルを扱うことができるので、ぜひ試してみてください。

Discussion