はじめに
OCIの構成図、描くの面倒じゃないですか。
draw.ioを開いて、アイコンを探して、ドラッグ&ドロップして、線を引いて、配置を整えて……。
設計の本質ではない作業に時間を取られがちです。
そこで、自然言語で指示するだけで .drawio ファイルが出てくるSkillsを作りました。
Claude Code と OpenAI Codex の両方で使えます。
できること
1. 自然言語から構成図を生成
こんな指示をすると:
OCI上に3層Webアプリの構成図を描いてください。
LBの後ろにWebサーバー2台、プライベートサブネットにAppサーバーとAutonomous Databaseを配置してください。
こんな構成図が生成されます:
2. 高可用性構成も一発
WAF + 冗長Web/App + Data GuardのHA構成図を作ってください。
3. 既存ファイルの編集
web-architecture.drawio にObject Storageを追加してください。
すでにある .drawio ファイルを読み込んで、コンポーネントの追加や削除もできます。
AI Coding AssistantのSkillsとは
最近のAI Coding Assistantには「Skills」という仕組みがあります。特定のタスクに特化した指示書(Markdownファイル)を所定のディレクトリに置いておくと、アシスタントがそれを読み込んで専門的なタスクをこなせるようになるものです。
今回のoci-drawioスキルは、Claude CodeとCodexの両方に対応しています。
| 項目 | Claude Code | Codex |
|---|---|---|
| 配置先 | ~/.claude/skills/ |
~/.codex/skills/ or .agents/skills/
|
| 認識方法 | ディレクトリ名 + SKILL.md | YAML frontmatter の name/description |
| 起動方法 |
/oci-drawio で明示起動 |
指示内容から自動マッチ |
両対応のポイントは SKILL.md の先頭にYAML frontmatterを付けることです。Claude Codeはfrontmatterを無視してMarkdown本文を読み、CodexはfrontmatterのnameとdescriptionでSkillを認識します。1ファイルでどちらのツールでも動きます。
---
name: oci-drawio
description: Generate and edit OCI architecture diagrams in draw.io (.drawio) format.
---
# OCI draw.io Diagram Skill
...
導入方法
前提ツール
以下のコマンドが必要です(macOS / Linuxならほぼ入っています)。
-
curl— アイコンのダウンロード -
unzip— zipの展開 -
base64— SVGのエンコード -
python3— JSON生成
インストール
# リポジトリをクローン
git clone https://github.com/araidon/oci-skills.git
cd oci-skills
# Claude Codeにインストール(デフォルト)
./install.sh oci-drawio
Codexを使っている場合は --tool オプションで切り替えられます。
# Codex グローバル(~/.codex/skills/)
./install.sh oci-drawio --tool codex
# Codex プロジェクトローカル(.codex/skills/)
./install.sh oci-drawio --tool codex-local
# Codex リポジトリスキャン(.agents/skills/)
./install.sh oci-drawio --tool codex-repo
セットアップ
インストール後、初回のみセットアップスクリプトを実行します。Oracle公式サイトからOCIアイコン(SVG)をダウンロードして、draw.io用の形式に変換します。
cd ~/.claude/skills/oci-drawio # インストール先に移動
bash setup.sh
これで準備完了です。
仕組み
draw.io XML直接生成
このSkillはdraw.ioのMCPサーバーを使っていません。.drawio ファイルの実体はXMLなので、XMLテキストを直接生成する方式にしています。追加のサーバー設定が不要で、配布しやすいのがメリットです。
コンポーネント辞書
oci_components.json に234個のOCIコンポーネントが登録されています。各コンポーネントにはdraw.ioのstyle文字列、アイコンサイズ、カテゴリ、説明が含まれていて、AIアシスタントはこの辞書を参照して適切なスタイルを適用します。
{
"VCN": {
"style": "shape=image;verticalLabelPosition=bottom;...",
"width": 60,
"height": 60,
"category": "networking",
"description": "Virtual Cloud Network"
}
}
OCI公式アイコンの埋め込み
Oracle公式のSVGアイコンをbase64エンコードしてstyle文字列に埋め込んでいます。
draw.ioのstyleパーサーは ; をデリミタとして使うため、data:image/svg+xml;base64,XXXX ではなく data:image/svg+xml,XXXX の形式で埋め込む必要があります。ここは地味にハマるポイントでした。
また、Oracle公式のSVGにはXMPメタデータが含まれていてbase64が肥大化するため、セットアップ時にメタデータを除去して軽量化しています。
レイアウト規則
SKILL.mdにはOCI構成図のレイアウト規則が定義されています。AIアシスタントはこの規則に従って、Region → VCN → Subnet → Service の階層構造で構成図を配置します。
┌─ Region ──────────────────────────────────────────────────────┐
│ │
│ [IGW]┌─ VCN ──────────────────────────────┐[SGW] │
│ [NAT]│ │ │
│ [DRG]│ ┌─ Edge Subnet ───────────────┐ │ │
│ │ │ [LB] [Bastion] │ │ │
│ │ └─────────────────────────────┘ │ │
│ │ ┌─ App Subnet ────────────────┐ │ │
│ │ │ [App] [App] │ │ │
│ │ └─────────────────────────────┘ │ │
│ │ ┌─ Data Subnet ───────────────┐ │ │
│ │ │ [DB] │ │ │
│ │ └─────────────────────────────┘ │ │
│ └────────────────────────────────────┘ │
└───────────────────────────────────────────────────────────────┘
GatewayアイコンはVCNの枠線上に跨がせて配置するなど、Oracle公式のLandscape Sampleに準拠したスタイルになっています。
対応コンポーネント一覧
234コンポーネントを収録しています。主要なものを抜粋します。
| カテゴリ | コンポーネント |
|---|---|
| Networking | VCN, Subnet, Internet Gateway, NAT Gateway, Service Gateway, DRG, Load Balancer, Network Load Balancer, DNS, FastConnect, VPN, Local Peering Gateway |
| Compute | VM Instance, Bare Metal, Autoscaling, Instance Pools, Functions |
| Database | Autonomous Database, MySQL HeatWave, DB System, Exadata, Data Guard |
| Storage | Object Storage, Block Volume, File Storage, Buckets |
| Security | WAF, Network Firewall, Vault, Bastion, IAM, Cloud Guard, Encryption |
| Container | OKE, Container Instances, OCIR |
| Monitoring | Streaming, Notifications, Logging, Monitoring, Alarms |
| AI/ML | Data Science, Digital Assistant, Language, Vision |
| Integration | API Gateway, Service Mesh, GoldenGate |
全コンポーネントの一覧は oci_components.json を参照してください。
さいごに
「構成図を描いてください」と一言伝えるだけで .drawio ファイルが生成される体験、なかなか便利です。
コンポーネントの追加や新しいレイアウトパターンの提案など、コントリビュートも歓迎しています。



