0Pricing
Helm Academy · レッスン

mergeOverwrite と dict による Deep Merge

構造化された Values をプログラムで組み立てます。

「mergeOverwrite と dict による Deep Merge」はCoddyKit上の無料Helm Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはHelm Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Helm Academyコースには全4レッスンが含まれています。

テンプレート内でマップを構築します

テンプレート内でマップを組み立てる必要がある場合があります。dict 関数は、キーと値のペアを交互に指定してマップを作成します。

{{ $cfg := dict "level" "info" "json" true }}

マップを組み合わせる理由

チャートのデフォルト値とユーザーによる上書き値があり、それらを1つのマップにまとめたいことがよくあります。それを実現するのが merge です。

浅いマージ

merge 関数は、ソースマップのキーを移行先にコピーしますが、キーがすでに存在する場合は移行先の値を維持します。

{{ $out := merge $user $defaults }}

merge は移行先を優先します

merge では、競合するキーについて最初の引数が優先されます。そのため、ユーザー入力でデフォルト値を上書きしたい場合に適しています。

mergeOverwrite の登場

mergeOverwrite 関数は反対に、後のソースマップで移行先を上書きし、値を上に重ねます。

{{ $out := mergeOverwrite $defaults $user }}

浅くなく深くマージします

どちらのヘルパーも 再帰的に マージします。入れ子になったマップはサブツリー全体を置き換えるのではなく、キーごとに結合されます。

変更に関する注意

注意してください。merge と mergeOverwrite は、最初の引数をその場で変更します。元の値を保持する必要がある場合は、新しい dict を渡してください。

{{ $base := dict }}{{ $r := mergeOverwrite $base .Values.extra }}

階層化されたデフォルト値のパターン

よく使われる pattern は、デフォルトの dict から始めてユーザー値を上に重ねる方法です。これにより、未設定のキーは安全にデフォルトへフォールバックします。

{{ $merged := mergeOverwrite (dict "port" 80) .Values.service }}

マージした値を読み取ります

マージ後の結果は通常のマップと同じように扱い、dot または index 関数を使ってキーを取り出します。

{{ $merged.port }}

結果をシリアライズします

マージした構造を YAML として出力するには、toYaml にパイプで渡し、nindent を使ってブロックを正しいインデントに配置します。

{{ toYaml $merged | nindent 4 }}

1つのキーを取り出します

キー名が動的であったり、特殊な文字を含んでいたりする場合は、ドット記法ではなく index 関数を使ってマップから値を取り出します。

{{ index $merged "log-level" }}

理解度チェック

上書きの方向を確認しましょう。

まとめ

マップを構築する dict、移行先のキーを維持する merge、後の値を優先する mergeOverwrite について学びました。どれも深くマージします。🎉

よくある質問

「mergeOverwrite と dict による Deep Merge」レッスンは無料ですか?

はい。「mergeOverwrite と dict による Deep Merge」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Helm Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Helm Academyコースには全4レッスンが含まれています。

「mergeOverwrite と dict による Deep Merge」で何を学びますか?

構造化された Values をプログラムで組み立てます。 ブラウザで直接実行するハンズオンコードでHelm Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Helm Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのHelm Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「mergeOverwrite と dict による Deep Merge」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このHelm Academyレッスンでコードを書いて実行できますか?

はい。すべてのHelm Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. mergeOverwrite と dict による Deep Merge
  2. tpl:Values の文字列をレンダリングする
  3. range を使った .Files.Glob のファイルループ
  4. fail とカスタム検証ガード
← Helm Academyに戻る