読者です 読者をやめる 読者になる 読者になる

わざわざ残す必要もないことを整理とか気にせずに吐き出していく。そんな空間。

YAMLで静的データ管理

勉強会

 関西PHPカンファレンス201 LT枠にて発表して来ました。尻切れになったことありブログにて補足説明です。時間感覚もうちょっと鍛えます。

 スライドはこちら:slideshareにて

YAMLってなんぞや

 YAMLってのはデータを記述する言語です。YAMLの利点をざっくりと挙げ連ねますと、

  • シンプルで書きやすい&読みやすい。高階層の配列構造も楽々定義可能
    • インデントで階層を定義
    • JSONライクな name: value 方式の記述
  • 複数行テキストやクオート不要等
    • 複数行テキストのサポート アリ
    • 複数行入力モードなら記号のクオートは不要!!
  • 複数言語でのサポート
    • データとしての抽象度も高い!!

シンプルな構文で学習コストも非常に低くオススメです。書き方に関しては

Rubyist Magazineさんhttp://magazine.rubyist.net/?0009-YAML

などを参考にしていただけるとよくわかると思います。

想定する場面

 静的データの扱いって地味に困る場面が多いと思います。

 大抵のFWにはConfigなんてのがついてるんですが,アレに書くほど小さい量じゃないけど、DBで運用する程のモノでもない、見たいな、そういうデータ。

 基本的には変わらないんだけど,修正等も考えて運用上はコードと分離しておきたい、みたいな。

 そういうデータを記述する上でYAMLは非常に便利です。昔だとXMLを使っていたと思うんですが,XML書くのは非常に面倒臭い。PHPのコードでConfig的に書く、というのも考えられるけど,文字列のクオートはいちいち面倒。

 うちのサイトでもAPIドキュメントとかチートシート作ったりするのに、利用しています。

PHPYAML

 PHPYAMLを利用する場合、SPYCというライブラリを利用するのが一般的だと思います。

Google Code SPYC

 ちなみにこのSPYC、なうでヤングなPHPFW fuelphp にはデフォルトで入っています。使い方は過去記事にて紹介しています。

SPYCの実装状況

 とりあえずRuby程使い勝手がいいというわけでも無く,パーサとしての機能は一部、みたいです。実際にどうなるか、についてはためしてみるのが一番だと思うので,とりあえず,即席でSPCYの動作確認ツール作りました。

こちら にて

 いろいろいじってみて、あーこんな感じなんだー便利そーみたいな感じになったら是非是非一度プロジェクト内でもYAML使ってやってくださいな。