azure-resource-visualizer について
Azure のリソースグループを分析し、Mermaid 図と Markdown でアーキテクチャを記録するスキルです。リソースの発見、関係の整理、読み取り専用の分析を通じて、Azure 環境の把握を支援します。
主な機能
- 01リソースグループとリソースの発見
- 02構成と依存関係の調査
- 03ネットワーク・データ・ID 関係の整理
- 04階層化した Mermaid 図の生成
- 05Markdown の一覧と説明の作成
活用シーン
- 01Azure リソースグループ内の構成把握
- 02Azure サービス間の接続の文書化
- 03ネットワークと ID の依存関係の確認
- 04リソースを変更せずにアーキテクチャ文書を作成
MCP 対応
Azure MCP ツールを使って、リソースグループやリソースの検出、詳細の取得ができます。クエリには Azure CLI も利用でき、分析は読み取り専用で、アーキテクチャ文書を作成します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill azure-resource-visualizerインストール後、Claude Code で/azure-resource-visualizerを入力して読み込まれたか確認します。
同梱ファイルassets/template-architecture.mdLICENSE.txt
詳細
Azure Resource Visualizer - アーキテクチャ図ジェネレーター
ユーザーは、個々のリソースがどのように組み合わさっているかを理解するための支援や、それらの関係を示す図の作成を求めることがあります。あなたの使命は、Azure リソースグループを調査し、その構造と関係を理解し、アーキテクチャを明確に図示する包括的な Mermaid 図を生成することです。
主な責務
- リソースグループの検出: 指定がない場合は、利用可能なリソースグループを一覧表示する
- リソースの詳細分析: すべてのリソース、その構成、および相互依存関係を調査する
- 関係のマッピング: リソース間のすべての接続を特定して文書化する
- 図の生成: 詳細で正確な Mermaid 図を作成する
- ドキュメントの作成: 図を埋め込んだ明確な Markdown ファイルを作成する
ワークフロープロセス
ステップ 1: リソースグループの選択
ユーザーがリソースグループを指定していない場合:
- ツールを使用して利用可能なリソースグループを照会します。このためのツールがない場合は、
azを使用します。 - リソースグループをその場所とともに番号付きリストで提示します
- ユーザーに番号または名前で 1 つ選択するよう求めます
- 続行する前にユーザーの応答を待ちます
リソースグループが指定されている場合は、それが存在することを検証して続行します。
ステップ 2: リソースの検出と分析
リソースグループを取得したら:
-
Azure MCP ツールまたは
azを使用して、リソースグループ内のすべてのリソースを照会します。 -
各リソースを分析し、以下を把握します:
- リソース名と種類
- SKU/階層情報
- 場所/リージョン
- 主要な構成プロパティ
- ネットワーク設定 (VNet、サブネット、プライベートエンドポイント)
- ID とアクセス (マネージド ID、RBAC)
- 依存関係と接続
-
以下を特定して関係をマッピングします:
- ネットワーク接続: VNet ピアリング、サブネットの割り当て、NSG ルール、プライベートエンドポイント
- データフロー: アプリ → データベース、Functions → ストレージ、API Management → バックエンド
- ID: リソースに接続するマネージド ID
- 構成: Key Vault を指すアプリ設定、接続文字列
- 依存関係: 親子関係、必要なリソース
ステップ 3: 図の構築
graph TB (上から下) または graph LR (左から右) 形式を使用して、詳細な Mermaid 図を作成します:
図の構造ガイドライン:
graph TB
%% Use subgraphs to group related resources
subgraph "Resource Group: [name]"
subgraph "Network Layer"
VNET[Virtual Network<br/>10.0.0.0/16]
SUBNET1[Subnet: web<br/>10.0.1.0/24]
SUBNET2[Subnet: data<br/>10.0.2.0/24]
NSG[Network Security Group]
end
subgraph "Compute Layer"
APP[App Service<br/>Plan: P1v2]
FUNC[Function App<br/>Runtime: .NET 8]
end
subgraph "Data Layer"
SQL[Azure SQL Database<br/>DTU: S1]
STORAGE[Storage Account<br/>Type: Standard LRS]
end
subgraph "Security & Identity"
KV[Key Vault]
MI[Managed Identity]
end
end
%% Define relationships with descriptive labels
APP -->|"HTTPS requests"| FUNC
FUNC -->|"SQL connection"| SQL
FUNC -->|"Blob/Queue access"| STORAGE
APP -->|"Uses identity"| MI
MI -->|"Access secrets"| KV
VNET --> SUBNET1
VNET --> SUBNET2
SUBNET1 --> APP
SUBNET2 --> SQL
NSG -->|"Rules applied to"| SUBNET1
図の主な要件:
- レイヤーまたは目的ごとにグループ化: ネットワーク、コンピューティング、データ、セキュリティ、監視
- 詳細を含める: ノードのラベルに SKU、階層、重要な設定を含めます (改行には
<br/>を使用) - すべての接続にラベルを付ける: リソース間で何が流れるか (データ、ID、ネットワーク) を記述します
- 意味のあるノード ID を使用: 理にかなった略語 (APP、FUNC、SQL、KV)
- 視覚的な階層: 論理的なグループ化のためのサブグラフ
- 接続の種類:
-->はデータフローまたは依存関係-.->はオプション/条件付きの接続==>は重要/主要なパス
リソースの種類の例:
- App Service: プラン階層を含める (B1、S1、P1v2)
- Functions: ランタイムを含める (.NET、Python、Node)
- データベース: 階層を含める (Basic、Standard、Premium)
- ストレージ: 冗長性を含める (LRS、GRS、ZRS)
- VNet: アドレス空間を含める
- サブネット: アドレス範囲を含める
ステップ 4: ファイルの作成
template-architecture.md をテンプレートとして使用し、[resource-group-name]-architecture.md という名前の Markdown ファイルを作成します。内容は以下のとおりです:
- ヘッダー: リソースグループ名、サブスクリプション、リージョン
- 概要: アーキテクチャの簡単な概要 (2~3 段落)
- リソースインベントリ: すべてのリソースを種類と主要なプロパティとともに一覧表示する表
- アーキテクチャ図: 完全な Mermaid 図
- 関係の詳細: 主要な接続とデータフローの説明
- 注記: 重要な所見、潜在的な問題、または推奨事項
運用ガイドライン
品質基準
- 正確性: 図に含める前に、すべてのリソースの詳細を確認する
- 網羅性: リソースを省略せず、リソースグループ内のすべてを含める
- 明確性: 明確で説明的なラベルと論理的なグループ分けを使用する
- 詳細レベル: アーキテクチャの理解に重要な構成の詳細を含める
- 関係性: 明らかなものだけでなく、すべての重要な接続を示す
ツールの使用パターン
-
Azure MCP Search:
intent="list resource groups"を使用してリソースグループを検出しますintent="list resources in group"をグループ名とともに使用して、すべてのリソースを取得しますintent="get resource details"を個々のリソースの分析に使用します- 特定の Azure 操作が必要な場合は
commandパラメーターを使用します
-
ファイルの作成:
- 常にワークスペースのルート、または存在する場合は
docs/フォルダーに作成します - 明確で説明的なファイル名を使用します:
[rg-name]-architecture.md - Mermaid 構文が有効であることを確認します(出力前に構文を頭の中でテストします)
- 常にワークスペースのルート、または存在する場合は
-
ターミナル(必要な場合):
- MCP では利用できない複雑なクエリには Azure CLI を使用します
- 例:
az resource list --resource-group <name> --output json - 例:
az network vnet show --resource-group <name> --name <vnet-name>
制約と境界
常に行うこと:
- ✅ 指定されていない場合はリソースグループを一覧表示する
- ✅ 続行する前にユーザーの選択を待つ
- ✅ グループ内のすべてのリソースを分析する
- ✅ 詳細で正確な図を作成する
- ✅ ノードのラベルに構成の詳細を含める
- ✅ サブグラフを使用してリソースを論理的にグループ化する
- ✅ すべての接続に説明的なラベルを付ける
- ✅ 図を含む完全な markdown ファイルを作成する
決して行わないこと:
- ❌ 重要でないと思われるリソースをスキップする
- ❌ 検証せずにリソースの関係について推測する
- ❌ 不完全な図やプレースホルダーの図を作成する
- ❌ アーキテクチャに影響する構成の詳細を省略する
- ❌ リソースグループの選択を確認せずに続行する
- ❌ 無効な Mermaid 構文を生成する
- ❌ Azure リソースを変更または削除する(読み取り専用の分析)
エッジケースとエラー処理
- リソースが見つからない場合: ユーザーに通知し、リソースグループ名を確認します
- 権限の問題: 何が不足しているかを説明し、RBAC の確認を提案します
- 複雑なアーキテクチャ(50 以上のリソース): レイヤーごとに複数の図を作成することを検討します
- リソースグループ間の依存関係: 図の注記に外部依存関係を記載します
- 明確な関係がないリソース: 「その他のリソース」セクションでグループ化します
出力形式の仕様
Mermaid 図の構文
- 垂直レイアウトには
graph TB(上から下)を使用します - 水平レイアウトには
graph LR(左から右)を使用します(横長のアーキテクチャに適しています) - サブグラフの構文:
subgraph "Descriptive Name" - ノードの構文:
ID["Display Name<br/>Details"] - 接続の構文:
SOURCE -->|"Label"| TARGET
Markdown の構造
- メインタイトルには H1 を使用します
- 主要なセクションには H2 を使用します
- サブセクションには H3 を使用します
- リソースの一覧には表を使用します
- 注記や推奨事項には箇条書きを使用します
- 図には
mermaid言語タグ付きのコードブロックを使用します
対話の例
ユーザー: 「本番環境のリソースグループを分析して」
エージェント:
- サブスクリプション内のすべてのリソースグループを一覧表示する
- ユーザーに選択を求める: 「どのリソースグループですか? 1) rg-prod-app、2) rg-dev-app、3) rg-shared」
- ユーザーが選択: 「1」
- rg-prod-app 内のすべてのリソースをクエリする
- 分析: App Service、Function App、SQL Database、Storage Account、Key Vault、VNet、NSG
- 関係を特定: App → Function、Function → SQL、Function → Storage、All → Key Vault
- サブグラフを含む詳細な Mermaid 図を作成する
- 完全なドキュメントを含む
rg-prod-app-architecture.mdを生成する - 表示: 「rg-prod-app-architecture.md にアーキテクチャ図を作成しました。7 つのリソースと 8 つの主要な関係が見つかりました。」
成功基準
成功した分析には以下が含まれます:
- ✅ 有効なリソースグループが特定されている
- ✅ すべてのリソースが検出され、分析されている
- ✅ すべての重要な関係がマッピングされている
- ✅ 適切なグループ化を伴う詳細な Mermaid 図
- ✅ 完全な Markdown ファイルが作成されている
- ✅ 明確で実行可能なドキュメント
- ✅ 正しくレンダリングされる有効な Mermaid 構文
- ✅ プロフェッショナルでアーキテクトレベルの成果物
あなたの目標は、Azure アーキテクチャに対する明確さと洞察を提供し、優れた可視化を通じて複雑なリソースの関係を容易に理解できるようにすることです。