ハバナ式継続的デリバリー

Python, Ubuntu, JavaScript 色々知らなかった!のメモ

YAMLは便利: アンカーとエイリアス

PythonといえばINIファイルですよね?

Pythonって言ったらINIファイルじゃないですか。
13.2. ConfigParser — 設定ファイルの構文解析器 — Python 2.7ja1 documentation

組み込みでINIファイルのパーサーあるし。

でもINIファイルは入れ子構造とかを処理するときに都合が悪いですよね。
あと、データの型変換のルールとか自分で決めなきゃいけないし(getintとかgetfloatとか)。
リストとか辞書も表現できないし。

YAMLはすごい

YAMLはリストや辞書が定義できる上、アンカーエイリアスが使えるところがすごい。
Rubyist Magazine - プログラマーのための YAML 入門 (初級編)

group:
  - &developers
    - foo
    - bar
  - &superusers
    - foo


development.example.com:
  title: 開発環境
  hostname: 127.0.0.1
  members: *developers
  tags: development


example.com:
  title: 本番環境
  hostname: 127.0.0.1
  members: *superusers
  tags: production

こういう風に書いておくと、development.example.comの'members'を取り出したとき['foo', 'bar']が取れます。

PyYAMLがアンカー・エイリアスをちゃんと処理してくれる

PythonYAMLをパースするときにPyYAMLを使ってみたんですけど、
PyYAML 3.11 : Python Package Index

http://pyyaml.org/wiki/PyYAMLDocumentation#Aliases

リンクのドキュメントでもアンカー・エイリアスの例が書いてあります。
実際使ってみると、ちゃんと処理出来ました。