設定ファイルの参照

YAMLアンカー展開する前に参照先を確かめる

定義の位置、エイリアスの参照先、展開済みの値を確認できます。

YAMLアンカーの解析と展開

YAML入力

展開済みYAML

入力はこのブラウザー内で処理します。送信・実行・保存せず、URLにも含めません。

マージは初期状態でオフです。オンでは明示キーが優先され、マージ元は先のマップが優先されます。浅いマージのみ対応し、マージ例では設定変更もプレビューします。

yaml 2.9.0 · 入力のバージョン指令は選択と一致する必要があります。出力にもバージョンを宣言します。

入力500,000 UTF-16単位 / UTF-8で2 MB、100文書、元ノードと展開訪問各50,000、深さ100、グラフ5,000行。出力とスカラー処理量は各200万、タイムアウト5秒。

入力の参照グラフ

矢印は定義から使用箇所へ向かいます。どちらの位置もクリックで入力に戻れます。「参照先あり」は定義を特定できた意味で、循環グラフを展開できるとは限りません。

YAMLを入力するか解析を実行してください。

YAMLアンカーの名前を再利用すると、後続のエイリアスが参照する定義も変わります。設定を読む際は名前だけで判断せず、実際の行・列を確認することが大切です。このツールは定義を個別に並べ、参照先を追跡できます。

YAMLエイリアスを展開した結果は入力とは別に表示します。YAML参照のつながりを調べながら、必要なときだけYAMLマージキーを有効にして継承値を確認できます。展開に失敗しても、収集済みの関係は診断用に残ります。

YAMLアンカーを追跡する理由

同じ名前でも、実際に使われる定義は異なります

参照している定義に戻れる

YAMLアンカーが同名で複数あっても、エイリアスは同じ文書内の直前までで最も新しい定義に結びつきます。文字列中の&や*は参照として数えず、実際の構文から位置を取得します。

同じ印を持つ異なる色の定義から後続の参照へ線が伸び、循環する線だけが赤く残っている図。

上書きの結果を見てから適用

マージを有効にすると、引き継がれる値と明示設定で置き換わる値を確認できます。マージ配列では先のマップが優先されます。結果を入力へ戻す操作には確認画面があり、一度取り消せます。

二つの元マップが結果につながり、明示設定が継承値を置き換え、変更のない入れ子の塊はそのまま残る図。

展開結果を読み解く手順

参照位置と設定の優先順位を確認する三つの操作

01

スキーマとマージを別々に選ぶ

初期値はYAML 1.2コアで、マージは両バージョンともオフです。1.1への切替ではyesや日付の暗黙型が変わります。%YAML指令は選択と一致させてください。マージ例では入力の置換とマージ設定の有効化を一緒に確認します。

02

定義または使用位置を選ぶ

参照行のどちらの端も、クリックすると入力の正確な行・列に移動します。未使用の定義も表示し、グラフは1ページ50件です。未解決参照や検出した循環の辺は失敗後も残りますが、上限超過時は部分的なグラフになります。

03

置換を確認してから実行する

結果の使用、例の読み込み、クリア、ファイル入力では置換前後の行数を表示します。適用後の取り消しは入力・設定・出力・診断をまとめて復元します。手動ではCtrl/Cmd+Enter、自動では入力停止から350ミリ秒後に実行し、古い結果は書き出せません。

参照グラフと型を保った出力

YAMLの構造とアプリ固有の設定を分けて確認

構文上の位置を特定

字句解析と構文木からアンカー属性やエイリアスを調べます。アンカーが別行にあっても、文字列キーに付いていても追跡できます。引用符内や複数行文字列の内容はデータとして扱い、文書ごとに定義表を作り直します。

循環を展開せずに検出

依存関係を先に調べるため、再帰的な内容を増やし続ける必要がありません。自己参照は有効なYAMLでも、別名のない有限テキストにはできません。該当する辺を示し、収集済みの参照を残して出力全体を停止します。

浅いマージの優先順位

マージ元はマップ、マップへのエイリアス、マップの配列に対応します。先のマップが初期値を提供し、明示キーは記述位置に関係なく優先されます。入れ子のマップは値として丸ごと置換し、配列は連結しません。

スカラーをJSON経由で変換しない

構文木のノードを複製するため、大きな整数、数値の表記、非有限浮動小数点数、timestampの元トークンを維持します。生成したYAMLを同じスキーマでもう一度解析し、保持検査を通った場合だけ書き出せます。

バージョン・型・展開の制限

完全で有限のYAML出力だけを書き出します

指令と選択を一致させる
yaml 2.9.0で1.2コアまたは1.1を使用します。%YAML指令が選択と異なる場合は停止し、設定を勝手に変更しません。各出力文書に選んだバージョンを宣言します。マージは独立した拡張で、1.1でも初期状態はオフです。
マージキーの構文を区別
拡張オンではプレーンな<<と!!mergeがマージに使われます。エンジン拡張として複数のマージキーも受け付け、ソース順に処理して先のマップを優先します。明示キーは常に優先です。引用符付き<<と!!str <<は普通の文字列で、出力にも引用符を付けます。オフではプレーンな<<も文字列キーとなり、通常の重複キーはエラーです。
文字列キーと対応タグに限定
キーは文字列に解決される必要があり、固定した文字列へのエイリアスも使えます。数値・真偽値・null・コレクションのキーを文字列化して受理することはありません。コア型とtimestamp、binaryに対応し、binaryにはパディング付き正規Base64が必要です。不明なタグとset・omap・pairsは拒否し、独自コンストラクターは実行しません。
元のバイト列は維持しない
アンカーとエイリアスの構文、コメント、元の空白は出力から除かれます。数値とtimestampはNumberやDateで丸めず元の表記を維持し、特殊浮動小数点数とbinaryもYAMLの型のまま残します。文字列の引用や配置は変わる場合があるため、確認してから適用してください。元ファイルは自動で上書きしません。
文書やアプリの境界を越えない
エイリアスは自身の文書内の先行定義だけを使用します。前方参照は失敗し、同名アンカーの再定義は通常のキー重複と区別します。Composeの変数展開、GitLab extendsや!reference、Helmテンプレート、JSON $ref、リモートincludeや別ファイルの読み込みは評価しません。
すべての展開経路に上限を適用
入力は500,000 UTF-16単位とUTF-8で2 MB、100文書、元ノード50,000個、深さ100までです。展開は50,000回の訪問までで、繰り返し参照、上書きされるマージ元、マージキーも数えます。元と展開値のスカラー長は合計200万単位の処理予算を共有し、出力は別に200万文字までです。グラフは5,000行、Workerは5秒まで。失敗時は出力全体を止め、途中で切れたYAMLは渡しません。

YAMLアンカーのよくある質問

名前の再利用、配列、元の書式について

同じアンカー名をもう一度使えますか?

はい。YAMLアンカーの再定義は許可され、エイリアスは同じ文書内で自分より前にある最新の定義を使います。グラフにはそれぞれの位置が表示されます。後に出てくる定義や別文書の定義は参照先になりません。

解析すると元のアンカーは書き換わりますか?

解析だけでは入力を変更しません。展開結果は別に表示し、「結果を入力に使う」で置換を確認してから適用します。一度の取り消しで入力・設定・解析結果を復元できます。参照位置をクリックするだけで入力が変わることもありません。

展開するとコメントや書式は失われますか?

コメントと元の空白は出力に残りません。文字列の引用符や配置も変わることがあります。数値とtimestampは元の表記を保持します。元の編集内容が必要な場合は、適用前にプレビューを確認し、必要に応じて取り消してください。

配列にもアンカーやエイリアスを使えますか?

使えます。配列全体を別の値として展開したり、別の配列の一要素として参照したりできます。ただし要素の展開挿入や配列連結にはなりません。循環や処理上限に達した場合は書き出しを停止します。

Composeのinclude先とアンカーを共有できますか?

YAMLアンカーの有効範囲は単一文書です。このツールはCompose includeや変数展開を処理しません。テキストを連結しても文書をまたぐ参照は有効にならないため、ファイル間の再利用には対象アプリの設定規則を使ってください。

確認してほしい参照やスカラーの例がありますか?

YAMLアンカーを確認する

YAMLアンカーの参照位置と展開値を並べて確認し、設定を置き換える前に意図した構造か確かめましょう。

展開後も対象アプリ独自の検証が必要です。