インフラのアーキテクチャ図は書いた翌日から古くなる。Terraformコードが変わるたびにdraw.ioやLucidchartを手で更新するのは現実的でなく、多くの現場ではドキュメントが実態と乖離したまま放置されている。TerravisionはTerraformコードを読み込み、AWS・GCP・Azureのアーキテクチャ図を自動生成するOSSツールだ。完全クライアントサイド処理で、コードは外部サーバーに送られない。CI/CDパイプラインに組み込めばPRマージのたびにダイアグラムが更新される「生きたドキュメント」を実現できる。
この記事ではTerraformインフラの可視化ツールTerravisionを解説します。Terraformのクラウドコスト可視化についてはInfracost活用ガイド:Terraformのクラウドコストをデプロイ前に可視化するOSSツール完全解説をご覧ください。
この記事のポイント
- AWS 200以上・GCP/Azureコアサービスに対応。
pip install terravisionの1コマンドで導入でき、GitリポジトリURLを渡すだけで図が生成される。 - インタラクティブHTML出力はクリッカブルノード・パン/ズーム・検索・データフローアニメーション付き。ステークホルダーへのURL共有にも使える。
- Ollama(ローカルLLM)・AWS Bedrock・OpenAI互換APIによるAIアノテーション機能で、各コンポーネントの説明を自動付与できる。
Terravisionとは:インフラドキュメントの陳腐化問題を解決するOSS
Terravisionは「Turn Terraform code into professional cloud architecture diagrams that stay in sync with your infrastructure」をコンセプトにしたPython製OSSだ。AGPL-3.0ライセンスで公開されており、商用環境での利用は派生物のソース公開義務を伴う(社内ツールとしての利用は一般的にAGPLの制約外)。
| 項目 | 内容 |
|---|---|
| バージョン | v0.39.0(2026年4月30日) |
| ライセンス | AGPL-3.0 |
| 言語 | Python 96.3%、HTML 3.4% |
| 対応クラウド | AWS(200以上)、GCP(コアサービス)、Azure(コアサービス) |
| 出力形式 | PNG / SVG / PDF / インタラクティブHTML / draw.io(mxGraph) |
| AIアノテーション | Ollama / AWS Bedrock / OpenAI互換 REST API |
| 外部通信 | なし(完全ローカル処理) |
なぜ「コードからの自動生成」が必要か
(よくある)"] B -- "Terravision" --> D["CI/CDで自動生成
→ 常に最新"] C --> E["ドキュメントと
実態の乖離"] D --> F["レビュー・監査・
オンボーディングに使える"] style C fill:#ff6b6b,color:#fff style D fill:#4ecdc4,color:#fff
4分でわかる:公式紹介動画
開発者によるデモ動画だ。TerraformコードをそのままTerravisionに渡してAWSアーキテクチャ図が生成されるまでの流れがわかる。
インストールと基本的な使い方
必要な依存関係はPython 3.10以上・Terraform 1.x・Graphviz・Gitだ。Graphvizのシステムインストールを忘れずに。
# Graphviz のインストール(macOS)
brew install graphviz
# Graphviz のインストール(Ubuntu/Debian)
sudo apt-get install graphviz
# Terravision のインストール(推奨: pipx)
pipx install terravision
# または pip(仮想環境内)
pip install terravision
ローカルディレクトリから生成
# PNG形式(デフォルト)で生成
terravision draw --source ./path-to-your-terraform
# SVG形式で生成
terravision draw --source ./path-to-your-terraform --format svg
# draw.io形式(Lucidchartでも読み込み可)
terravision draw --source ./path-to-your-terraform --format drawio
GitリポジトリURLから直接生成
ローカルにリポジトリをクローンしなくても、GitのURLを直接渡せる。
# GitHub リポジトリから直接生成(パブリックリポジトリ)
terravision draw --source https://github.com/user/my-terraform-repo.git
# ブランチ指定
terravision draw --source https://github.com/user/repo.git --branch develop
インタラクティブHTMLで生成・ブラウザで開く
visualiseコマンドはブラウザで開けるインタラクティブHTMLを生成する。ノードのクリック・パン/ズーム・検索・データフローアニメーションが使える。
terravision visualise --source ./path-to-your-terraform --show
--showを付けると生成後に自動でブラウザが開く。出力されたHTMLファイルは単体で動作し、チームへのURL共有やWikiへの添付にそのまま使える。
事前生成のTerraformプランファイルを使う
本番環境のTerraformにクラウド認証を通さずに図を生成したい場合、terraform planの出力を使う方法がある。
# Terraform プランをファイルに書き出す
terraform plan -out=tfplan.bin
terraform show -json tfplan.bin > plan.json
terraform graph > graph.dot
# plan ファイルから生成(クラウド認証不要)
terravision draw \
--planfile plan.json \
--graphfile graph.dot \
--source ./path-to-your-terraform
この方法はCI/CD環境でも有効だ。CIパイプラインでTerraformプランを生成し、そのアーティファクトをTerravisionに渡すことで、本番クラウドへのアクセス権がないCIエージェントでも図の生成が完結する。
200以上のAWSサービスに対応:主要サービスの一覧
Terravisionが対応するAWSサービスは公式ドキュメントに一覧があるが、主なものを挙げる。
| カテゴリ | 対応サービス例 |
|---|---|
| コンピュート | EC2, Lambda, ECS, EKS, Fargate, Batch |
| ネットワーク | VPC, Subnet, ALB, NLB, CloudFront, Route 53, API Gateway |
| ストレージ | S3, EBS, EFS, FSx, Glacier |
| データベース | RDS, Aurora, DynamoDB, ElastiCache, Redshift |
| セキュリティ | IAM, KMS, WAF, Shield, Cognito, Secrets Manager |
| 監視 | CloudWatch, X-Ray, CloudTrail |
| メッセージング | SQS, SNS, EventBridge, Kinesis, MSK |
| CI/CD | CodePipeline, CodeBuild, CodeDeploy |
| AI/ML | SageMaker, Bedrock, Rekognition, Textract |
GCPとAzureはコアサービス(Compute Engine/GKE/Cloud Storage/Cloud SQL等)に対応している。将来的なフルサポートに向けて開発中だ。
200+ サービス
(フルサポート)"] GCP["GCP
コアサービス対応
(拡張中)"] AZ["Azure
コアサービス対応
(拡張中)"] end TF["Terraformコード
(.tf ファイル)"] --> AWS TF --> GCP TF --> AZ AWS --> OUT["PNG / SVG / PDF
インタラクティブHTML
draw.io形式"] GCP --> OUT AZ --> OUT style AWS fill:#ff9500,color:#fff style GCP fill:#4285f4,color:#fff style AZ fill:#0078d4,color:#fff
AIアノテーション機能:各コンポーネントに説明を自動付与
v0.39.0で強化されたAIアノテーション機能は、生成した図の各コンポーネントに自然言語の説明を自動で付与する。アーキテクチャレビューや新メンバーのオンボーディング資料として使いやすくなる。
対応するAIバックエンドは3種類だ。
Ollama(ローカルLLM)
# Ollama でアノテーション(完全ローカル)
terravision draw \
--source ./path-to-your-terraform \
--ai-annotate ollama
# 使用モデルの指定(デフォルト: llama3)
terravision draw \
--source ./path-to-your-terraform \
--ai-annotate ollama \
--ai-model mistral
コードも説明もすべてローカルで完結する。機密インフラの場合はこの方法が最も安全だ。
AWS Bedrock
# AWS Bedrock でアノテーション(boto3 認証が必要)
terravision draw \
--source ./path-to-your-terraform \
--ai-annotate bedrock
# AWS プロファイルを指定
AWS_PROFILE=my-profile terravision draw \
--source ./path-to-your-terraform \
--ai-annotate bedrock
OpenAI互換 REST API
# OpenAI 互換エンドポイントを指定(OpenAI / Azure OpenAI / ローカルサーバー等)
terravision draw \
--source ./path-to-your-terraform \
--ai-annotate restapi \
--ai-endpoint https://api.openai.com/v1 \
--ai-model gpt-4o
CI/CDパイプラインへの組み込み:PRマージのたびに図を更新
Terravisionの実用的な価値が最も発揮されるのはCI/CD統合だ。Terraformコードが変わるたびにアーキテクチャ図を自動生成し、GitHubのWikiやドキュメントリポジトリに自動コミットするパイプラインを作れる。
GitHub Actionsでの例
# .github/workflows/terravision.yml
name: Generate Architecture Diagram
on:
push:
branches: [main]
paths:
- 'terraform/**'
pull_request:
paths:
- 'terraform/**'
jobs:
diagram:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get install -y graphviz
pip install terravision
- name: Generate architecture diagram
run: |
terravision draw \
--source ./terraform \
--format svg \
--output docs/architecture.svg
- name: Commit diagram to docs/
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "docs: アーキテクチャ図を自動更新"
file_pattern: "docs/architecture.svg"
PRのたびにダイアグラムが更新されるため、レビュアーはコードの差分だけでなく図の変化も確認できる。「このPRでLambdaが増えた」「RDSの接続経路が変わった」といった変化が一目でわかる。
draw.io形式でエクスポートしてチームで共有
# draw.io 形式で生成(Lucidchartでも読み込み可)
terravision draw --source ./terraform --format drawio --output infra.drawio
draw.io(diagrams.net)はブラウザベースの無料ツールで、生成した.drawioファイルをそのまま開いてチームで編集できる。Confluenceへの埋め込みやGoogleスライドへの貼り付けにも対応している。
--simplifiedオプション:VPC/サブネットを省略した簡略図
大規模なインフラではVPCやサブネットの入れ子構造が図を複雑にしすぎることがある。--simplifiedオプションで省略した見やすい図も生成できる。
# VPC・サブネットを省略した簡略図
terravision draw --source ./terraform --simplified
# Terragrunt のマルチモジュールプロジェクト
terravision draw --source ./terragrunt-root --terragrunt
Infracostとの組み合わせ:図とコストを一緒に把握する
Terravisionはアーキテクチャの構造を可視化し、Infracostはそのコストを可視化する。2つをCIに組み込むことで、PRのたびに「何がどう変わり、コストはいくら増減するか」がセットでわかる運用ができる。
# GitHub Actions で Terravision + Infracost を同時実行する例
jobs:
infra-review:
steps:
- name: Generate architecture diagram
run: terravision draw --source ./terraform --format svg
- name: Estimate cost diff
uses: infracost/actions/setup@v3
with:
api-key: $
- run: infracost diff --path ./terraform --format json > cost.json
- name: Comment on PR
# diagram + cost diff を PR コメントに投稿
AWSのローカルエミュレータと組み合わせたい場合はMiniStack徹底解説:MIT・無料のAWSローカルエミュレータも参照されたい。
インタラクティブHTMLデモ:生成された図の操作感
公式サイトに3つのクラウドプロバイダーのインタラクティブデモが公開されている。
- AWSデモ — EC2・RDS・ALB・S3・CloudFrontなどを含む典型的な3層構成
- Azureデモ — Azure App Service・SQL Database・Cosmos DB等
- GCPデモ — GKE・Cloud SQL・Cloud Storage等
デモを開くと、以下のインタラクティブ機能が体験できる。
| 機能 | 操作方法 |
|---|---|
| パン | ドラッグ |
| ズーム | スクロールホイール / ピンチ |
| ノードの詳細 | ノードをクリック → サイドパネルで詳細表示 |
| データフローアニメーション | 接続線をクリックでトラフィック方向をアニメーション表示 |
| 検索 | 右上の検索バーでサービス名を検索してハイライト |
このHTMLファイルは単体で動作する。terravision visualiseコマンドで生成したファイルをS3に置いてチームに共有すれば、Confluenceに貼るよりずっとインタラクティブな体験を届けられる。
他のTerraformドキュメントツールとの比較
Terraformエコシステムにはアーキテクチャ図の生成やドキュメント化を支援するツールがいくつか存在する。Terravisionがどの位置にあるかを整理する。
| ツール | 主な用途 | 出力形式 | AIアノテーション | 対応クラウド |
|---|---|---|---|---|
| Terravision | アーキテクチャ図の自動生成 | HTML/PNG/SVG/draw.io | Ollama/Bedrock/REST | AWS/GCP/Azure |
| terraform-docs | モジュールのREADME生成 | Markdown/JSON | なし | クラウド非依存 |
| Infracost | コスト推計 | JSON/表/PR comment | なし | AWS/GCP/Azure |
| Rover | Terraform依存グラフの可視化 | HTML(Cytoscape.js) | なし | クラウド非依存 |
| Pluralith | Pipeline統合型ダイアグラム | HTML/PDF | なし | AWS/GCP/Azure |
terraform-docsはモジュールのinput/outputをMarkdownに書き出すツールで、Terravisionとは補完関係にある。両方をCIに組み込むことで「コードの仕様書(terraform-docs)」と「アーキテクチャの全体図(Terravision)」を自動生成できる。
推奨の組み合わせ
terraform-docs— モジュールごとの変数・出力・依存関係をMarkdown化Terravision— インフラ全体のアーキテクチャ図を生成Infracost— PRごとのコスト差分をコメント投稿
3つをGitHub Actionsにまとめると「コード変更 → 図/ドキュメント/コスト差分が自動更新される」パイプラインが完成する。
まとめ:「ドキュメントが古い」問題をコードで解決する
Terravisionが解決する問題はシンプルだ。「アーキテクチャ図は変更のたびに陳腐化する」という不変の課題に対して、コードから図を生成することで陳腐化の原因そのものを取り除く。
| 観点 | 評価 |
|---|---|
| セットアップのしやすさ | pip install terravision + Graphviz のみ |
| AWS対応範囲 | ◎ 200以上のサービス。ほぼすべてのユースケースをカバー |
| CI/CD統合 | ◎ GitHub Actions等に素直に組み込める |
| 出力形式の多様さ | ◎ HTML/PNG/SVG/PDF/draw.io |
| AIアノテーション | ○ Ollama対応でローカル完結も可 |
| GCP/Azure対応 | △ コアサービスのみ。拡張中 |
| ライセンス | △ AGPL-3.0。SaaSとして外部提供する場合は注意 |
インフラのドキュメント運用に課題を感じているチームであれば、まずpip install terravisionして手元のTerraformディレクトリに向けて実行してみるのが最速の評価方法だ。
FAQ
Q. Terraformのstateファイルやクラウド認証は必要ですか?
不要だ。Terravisionは.tfファイルの静的解析でアーキテクチャ図を生成するため、terraform initもterraform applyも必要ない。クラウドアカウントへのアクセス権がないCI環境でも動作する。事前にterraform planを実行した.jsonファイルを渡す方法もある。
Q. Terragruntには対応していますか?
対応している。--terragruntフラグを付けることでマルチモジュール構成のTerragruntプロジェクトを処理できる。依存モジュール間のリソース関係も図に反映される。
Q. AGPL-3.0ライセンスの制約はどこに影響しますか?
社内ツールとしてCI/CDに組み込んで使う分にはAGPLの影響は一般的にない。問題になるのは「Terravisionを組み込んだサービスを外部ユーザーに提供する(SaaSとして使う)」ケースで、その場合はソースの公開義務が生じる可能性がある。商用利用を検討する場合は法務に確認すること。
Q. draw.io形式でエクスポートした図はどこで開けますか?
diagrams.net(draw.ioのブラウザ版)で無料で開ける。Confluence・Notion・Googleスライドへの埋め込みも可能だ。Lucidchartも.drawio形式のインポートに対応している。
Q. VPCやサブネットが多くて図が複雑になりすぎます
--simplifiedフラグを使うとVPC・サブネットを省略した概要図が生成される。経営層への説明資料には簡略図、詳細なアーキテクチャレビューにはフル図、と使い分けるのが実用的だ。