YAML は「Yet another markup language」または「YAML ain’t markup language」の略で、後者の再帰的な頭字語は、YAML がデータ用であり、文書用ではないことを強調するために使われます。YAML は、インフラの展開のための構成ファイルの書き込みに使用されるデータ・シリアル化言語です。たとえば、Docker アプリケーションを Kubernetes にデプロイする場合は、YAML ファイルを使用してインスタンスを構成します。YAML は人間が読むことができるため、導入時にファイルを作成し、指示を読み取るのが容易です。
YAML を初めて利用する場合は、Web 上で最も頻繁に聞かれる YAML の質問の 1 つである複数の行に文字列を分割する方法が必要であることに気づくまでには、それほど時間がかかりません。この記事では、YAML の複数行文字列に対する 2 つの主なアプローチと、その他のよくある質問について説明します。
YAML とホワイトスペース:知っておくべきこと
YAML ファイルは、空白とキャリッジ・リターンを使用しますが、コンテンツは特定のリソースに取り込まれるとシリアル化されます。YAML ファイルを作成する開発者は、インデントとスペースを使用してテキストをフォーマットし、読みやすくすることができます。YAML は、他の言語と同様にホワイトスペースを扱うため、ファイルのフォーマットに必要な数だけ用意できます。
YAML マルチライン・ストリングのブレーク・ライン
YAML ファイルを取り込むときに、行区切りを複数行の文字列に保持したい場合があります。次の擬似コードの例を挙げてください。
キー:
項目1
項目2
項目3
各行項目(例:項目1、項目2、項目3)の後に、キャリッジ・リターンが表示されます。YAML 構文をそのままにしておくと、文字列は次のようになります。
項目1 項目2 項目3
この文字列形式は、キャリッジリターン形式なしで 1 つの長い文字列を作成するため、改行を保持できます。改行は、リテラル・オペレータによって保持できます。リテラル演算子は、パイプ(「|」)文字です。改行を保存するには、YAML 構文を次のように変更する必要があります。
キー: |
項目1
項目2
項目3
「キー」指令の後にパイプの文字が表示されます。アプリケーションが YAML ファイルを取り込むと、次の文字列に変換されます。
item1\\nitem2\\nitem3
「」は、新しい行を表します。この文字列をアプリケーションに印刷すると、各項目にキャリッジ・リターンが付加され、YAML 命令の書式が保持されます。
YAML マルチライン・ブロックとロング・ストリングの比較
長い文字列の場合は、多行ブロックを使用して YAML ファイルを読み取る必要があります。たとえば、YAML ファイルに 250 ワードの段落がある場合、文章を複数行のブロックに分割する必要があります。段落の最後にある場合を除き、キャリッジ・リターンは保持したくないでしょう。YAML ファイルをフォーマットして、長い文字列に複数の行を使用し、文字列をシリアル化して、新しい行文字の代わりに各項目にスペースを追加できます。
新しい行を追加する代わりに空白文字を使用するには、折り畳まれた(「>」)演算子を使用します。
キー: >
項目1
項目2
項目3
YAML は、折りたたまれた演算子で文字列を作成するときにスペースを追加します。文字列は次のようになります。
アイテム1 アイテム2 アイテム3 「n」
YAML Multiline に関するよくある質問
YAML に改行を挿入する方法
リテラル演算子(「|」)を使用すると、YAML 文字列内の改行は保持されます。標準ドキュメントで改行を作成するのと同様に、キャリッジ・リターン・キーストロークを使用して改行を作成します。次の例は、YAML 文字列内のキャリッジ・リターンを保持しています。
キー: |
項目1
項目2
項目3
YAML には空白の行がありますか?
はい。テキストのブロックとして表される文字列には、空白行を含めることもできます。キープ演算子(“|+”)は、空白の空白行と新しい行文字 を保存します。次の YAML は、ブロックの最後に空の行が 2 行ある複数行文字列の例です。
キー: |+
項目1
項目2
項目3
YAML パーサには、上記の構文から次の文字列が表示されます。
item1\\nitem2\\nitem3\\n\\n
YAML はホワイトスペースを気にしていますか?
タブの空白は YAML では不正な文字であるため、全てのインデントは標準的な 1 つのスペース文字で使用する必要があります。タブは引用符付きの文字列で使用できますが、YAML ファイルのフォーマットには使用できません。空白インデントの一貫性は、データの可読性にとって重要です。
YAML ではスペースが許可されていますか?
はい。YAML ファイル全体に標準スペースを配置できます。スペースは、タブ文字ではなく、インデントに使用してください。タブ文字は、YAMLファイルの解析中にエラーを引き起こす可能性があります。