# MaguyvaのTerraform対応: AIエージェントのためのインフラコンテキスト

Canonical source: https://maguyva.ai/ja/languages/terraform

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

MaguyvaはAST解析とシンボル抽出によりTerraformに対応しており、AIエージェントは変更を提案する前に、モジュール、local値、変数、リソース参照、動的なインフラパターンをたどることができます。

## 対応状況スナップショット

- 対応レベル: AST・シンボル対応
- インフラ
- 拡張子: .tf, .tfvars
- 構文を考慮した検索と構造コンテキストのための実際のAST解析。
- 名前付きシンボルはセマンティック検索と相互参照に利用されます。関係抽出が有効な場合は、グラフナビゲーションも利用できます。
- この言語は検索用にインデックスされていますが、現時点ではコードグラフに永続化されていません。
- AST解析とシンボル抽出の両方に対応しています。

## 最適な用途

- 再利用可能なTerraformモジュール、環境フォルダ、共有インフラパターンを管理するプラットフォームチーム。
- アプリコードの変更が、しばしば対応するインフラの編集や影響レビューを必要とするリポジトリ。
- インフラ定義に手を加える前に、参照関係と影響範囲を理解する必要があるエージェントワークフロー。

## エージェントワークフロー

- プランを編集する前に、変数、local値、モジュール、リソースがどのようにつながっているかをたどる。
- 変更の一貫性を保つために、環境ごとのバリエーションやモジュールの使われ方を比較する。
- エージェントがインフラの変更を提案する前に、想定される下流への影響を調べる。

## Terraformにリポジトリレベルのコンテキストが必要な理由

インフラコードは、多くのAIツールがそれとなく浅いテキスト処理に頼ってしまう場所です。それでは十分ではありません。Terraformの変更には通常、慎重さが求められます。参照関係が多く、モジュール、local値、変数、データソース、環境ごとのフォルダにまたがって広がっています。難しいのは、変更する前に設定全体がどうつながっているかを理解することです。

だからこそ、主要なアプリケーションコードが別の場所にあったとしても、Terraform対応は重要です。リポジトリにインフラコードが含まれているなら、エージェントはそれを当て推量すべき付属物としてではなく、同じシステムの一部として見る必要があります。

## MaguyvaがTerraformでエージェントの理解を助けるもの

MaguyvaはTerraformを構造的にサポートしており、これはモジュール参照、変数の流れ、リソースの関係性をたどるための有用な基盤です。コードが`count`、`for_each`、動的ブロック、共有モジュールを使い始め、実際のプランの形がざっと目を通しただけでは復元しにくくなるほど、これはなおさら重要になります。

実践的な利点は、エージェントが変更を提案する前に、「このモジュールはどこで再利用されているか」「この変数に依存しているものは何か」「どの環境フォルダがパターンから逸脱しているか」といったリポジトリレベルの疑問に答えられることです。

## これがMaguyvaの言語カバレッジについて何を証明するか

Terraformは、言語カバレッジが実際に役立つものかどうかを試すよい試金石です。Maguyvaがアプリケーションコード、運用コード、インフラを、別々の孤島としてではなく、1つのリポジトリレベルの問題として扱えるかどうかを示します。

インフラがサービスコードの隣にある場合は、[Goガイド](/ja/languages/go)が最も近いバックエンドの組み合わせです。同じリポジトリにWebやプラットフォームのパッケージが含まれる場合は、[TypeScriptガイド](/ja/languages/typescript)が適切な併読先です。

## このページが役立つ場面

「エージェントはインフラのコンテキストも保持できるか?」という問いを持っているなら、このページを活用してください。それは、アプリケーション言語だけを尋ねるよりも現実的な問いです。対応マトリクスそのものが必要な場合は、[互換性](/ja/docs/compatibility)をご覧ください。

## エンジンの詳細

- import正規化により `module` と `source` が除去され、モジュールレベルの参照を比較しやすくなります。
- Terraformの言語規則は、関係抽出のために `var`、`local`、`module`、`data`、およびリソースへの参照を認識しますが、現在のグラフポリシーでは、それらをMaguyvaのコードグラフに永続化しません。
- `count`、`for_each`、dynamicブロックなどTerraform特有の制御構造は、単なるテキストではなく第一級の構造として扱われます。

## 役立つMCPエントリーポイント

- `get_task_context`: 「VPCモジュールの出力がECSサービスにどうつながっているかを追跡する」といったプロンプトで、まとまった回答をすぐに得たいときに使用してください。
- `text_pattern_search`: リソースアドレス、モジュール名、変数キーについては、分析を広げる前にまず正確なテキストで検索してください。
