メインコンテンツへ
Section 03第1部 準備

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 系の仕様に基づいて執筆しています。