YAML構文
はじめに
YAML は、 “YAML Ain’t Markup Language”(YAML はマークアップ言語じゃねーよ) の頭文字を取っており、Grav では config 設定ファイルや、ブループリント、ページの設定のおいても、幅広く使われています。
YAML は設定です、マークダウンがマークアップであるのと同じように。基本的に、人間に読める構造をしたデータフォーマットです。XML や、JSON よりも複雑さや見づらさを減らしつつ、それらと同じ機能を提供します。CSS や JavaScript 、 PHP のような複雑なコードを学ぶことなく、本質的に強力な設定ができます。
YAML は、シンプルに使えるように、ゼロから構築されています。その核心において、YAML ファイルは、データを記述するために使われます。YAML を使用するメリットのひとつは、1つの YAML ファイルの情報を、複数の言語タイプに、簡単に翻訳できることです。
基本的に、YAML ファイルに入力したデータは、Grav 内で表示されるページを作成するライブラリとともに使われます。
YAMLの基本ルール
YAML には、いくつかのルールがあります。さまざまな言語との関係や、プログラミングの曖昧さにより生じる問題を避けるためです。これらのルールのおかげで、どのアプリケーションやライブラリで使われたかに関わらず、1つの YAML ファイルは、一意に解釈されます。
- Grav 内では、いつでも、できる限り YAML ファイルは
.yaml
で終わるべきです。 - YAML は、大文字/小文字を識別します。
- YAML では、タブ文字は使用できません。
基本的なデータ型
YAML は、 マップ型 (ハッシュ型/辞書型)と、 シークエンス型 (配列型/リスト型)と、 スカラ型 (文字列型/数字型)を得意とします。 YAML は、ほとんどのプログラミング言語で使われますが、これらのデータ構造型を中心に構築された言語で、最も良く機能します。たとえば、 PHP, Python, Perl, JavaScript, そして Ruby です。
スカラ型
スカラは、極めて基本的な概念です。それらは、ページ上のデータを構成する文字列と数字です。スカラは、 true
のような真偽値も可能ですし、 5
のような整数値(数字)も、 ウェブサイトの文章やタイトルのようなテキストの文字列も可能です。
スカラは、しばしばプログラミングでは変数と呼ばれます。もし動物のタイプのリストを作るとすれば、それは動物に付けられた名前になるでしょう。
ほとんどのスカラは、クオテーションで囲みませんが、句読点やYAML構文と混同されかねない他の要素(ダッシュやコロンなど)を使うときは、シングルの '
もしくはダブルの "
クオテーションマークを使って、データを囲むでしょう。ダブルクオテーションマークは、ASCII と Unicode 文字をエスケープできます。
integer: 25
string: "25"
float: 25.0
boolean: true
[!Note]
TIP: Wordstrue
,false
,null
,~
そしてダッシュには、YAML で特別な意味があります。これらを真偽値や、null や、datetime 型で使う意図がなければ、クオテーションマークで囲ってください。 バージョンの数字にも同じことが言えます。float 型の数字と区別するため、バージョンの数字もクオテーションマークで囲ってください。
シークエンス型
以下は、Grav で見られるシンプルなシークエンスです。それぞれのアイテムが、ダッシュ始まりの1行に収まる、ベーシックなリストです。
- Cat
- Dog
- Goldfish
このシークエンスでは、それぞれのアイテムは同じレベルです。アイテムとサブアイテムからなる、ネストされたシークエンスを作成したいときは、サブアイテムについて、ひとつのスペースをそれぞれのダッシュ文字の前に置くことでできます。YAML は、インデントにスペースを使います。タブでは ありません 。以下のような例になります。
-
- Cat
- Dog
- Goldfish
-
- Python
- Lion
- Tiger
シークエンスを、より深くネストしたい場合、ただレベルを増やすだけです。
-
-
- Cat
- Dog
- Goldfish
シークエンスには、マップ型やスカラ型など、他のデータ構造を追加できます。
マップ型
マップは、キーとバリューからなるリストを提供します。特定の要素に、名前やプロパティを付けたい場合に、マップは便利です。
animal: pets
この例では、 pets
という値を animal
にマップしています(位置づけています)。シークエンスと合わせて使うときは、 pets
のリストを作ることから始めます。以下の例では、それぞれのアイテムをラベルしているダッシュが、インデントを持ち、それによりその行のアイテムは子要素になっています。そしてマップの行である pets
が親になります。
pets:
- Cat
- Dog
- Goldfish
ドキュメント
YAML に関するより詳しい情報は、それがどのように機能するかの詳細なドキュメントとともに、以下のリンク先のようなリソースをチェックしてください。