YAML を書く
今度は YAML を自分の手で書いてみましょう。ダブルクオートの使い方を覚え、壊れた YAML の修正と、白紙からの組み立てに挑戦します。
このセクションを終えるとできること
- コロンや数字を含む紛らわしい値を、ダブルクオートで囲んで書ける。
- 誤った YAML を自分の手で直せる。
- ゼロから小さな YAML を書ける。
前のセクションで、YAML の読み方を 3 つ確認しました。キーと値の組、入れ子、リストです。書くために新しく覚えることは、あと 1 つしかありません。値を囲むダブルクオートです。これを覚えてから、演習に入ります。
ダブルクオートで囲む値
次の 1 行を見てください。
時刻: 12:30人の目には昼の 12 時半ですが、コンピュータはこの 12:30 を誤って理解してしまう可能性があります。「:」が使われているので、これを区切り文字だと理解してしまうかもしれません。こういう紛らわしい値はダブルクオート(")で囲んで、「これは文字の並びです」と明示します。
時刻: "12:30"囲んだほうがよいのは、コロンを含む値、日付や時刻、0 で始まる管理番号のような値です。トーストやコーヒーのような普通の言葉は囲まなくて構いません。迷ったら囲んでおくのが安全です。ダブルクオートで囲んで、困る場面は、この講座の範囲ではまずありません。
誤った YAML を直す:インデントと区切りの間違い
書く練習の一歩目は、修正からです。ありがちな間違いを先に 2 つ知っておくと、自分の書いた YAML がコンピュータに正しく解釈されなかったときに、どこを確認すればよいか見当が付きます。
1 つ目はインデントの間違いです。字下げが揃っていないと、入れ子の関係が変わってしまうか、そもそも解釈できなくなります。2 つ目はコロンやスペースの欠けです。コロンを忘れたり、コロンの直後の半角スペースを忘れたりすると、キーと値の組として解釈されません。
この YAML には誤りが 2 箇所あります。「朝食の中に、主食と飲み物の 2 つの項目がある」と読める形に直してください。
白紙から書く:昼食メニュー
次は白紙からです。今日の昼食を YAML にします。中身は次のとおりです。
- 主菜はカレーライス
- 飲み物は麦茶
- 時刻は 12:30
これを「昼食」という項目の中に、主菜、飲み物、時刻の 3 つの項目として書きます。どの値をダブルクオートで囲むべきかも、自分で判断してください。
上の 3 つの項目を持つ「昼食」の YAML を、白紙から書いてください。
書けたら、もう 1 つ足してみましょう。今日の昼食にはデザートが付きました。プリンとりんごの 2 品です。この 2 品を「デザート」という項目として昼食の中に書き加えてください。2 品をどういう形で並べるかは、前のセクションで読んだ形を思い出して、自分で考えてみてください。
「デザート」という項目を昼食の中に足して、プリンとりんごの 2 品を書き入れてください。
ここまでで、読み方 3 つと書き方の注意 1 つが揃いました。白紙からの YAML も、思ったより書けたのではないでしょうか。
間違えやすい書き方
最後に、書くときに起こりがちな間違いをまとめておきます。
- コロンの直後のスペース忘れ。「主食:トースト」と詰めて書くと、キーと値の組ではなく、全体で 1 つの言葉として解釈されてしまいます
- 全角スペースでの字下げ。インデントに使えるのは半角スペースだけです。見た目はそっくりですが、全角スペースが混ざると正しく解釈されません
- Tab キーでの字下げ。YAML のインデントに Tab は使えません。半角スペースを打ちます
- インデントの深さの不揃い。同じ入れ子に属する項目は、同じ深さに揃えます
キーと値の組として正しく書けている行は、次のどれですか。
YAML のインデント(字下げ)に使えるのは、次のどれですか。
次へ
これで YAML の読み書きが揃いました。次のセクションから OSCAL の中身に入ります。最初のモデルは、管理策の一覧を書き表す Catalog です。ただし、いきなり書くのではなく、NIST が公開している CSF 2.0 の OSCAL ファイルの実物を読むところから始めます。
このセクションは OSCAL 1.2.2 系の仕様に基づいて執筆しています。