PythonでYAMLを使ってみよう!基本からサンプルコードまで
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と組み合わせることで、簡単に設定ファイルを扱うことができるので、ぜひ試してみてください。