Aegis Architect
AIをコーダーからオペレーターへ変える
このスキルは「たい焼きの型」です。どんなAIが使っても、選んだアーキタイプに従った正しい構造が生成されます。
コンセプト
Before (プロンプト依存):
AI: 「ファイル作ります...あれ、どこに置こう?まあここでいいか」
→ 結果: 構造が崩れる
After (Aegis Architect):
AI: 「aegis-architect scaffold --name stock_price」を実行
Aegis: (ガシャン!) 3ファイルを強制生成
→ 結果: 誰がやっても100%正しい構造
アーキタイプ(型の選択)
プロジェクトの「重さ」に応じて適切な型を選択します。
| アーキタイプ | 用途 | 生成ファイル |
|-------------|------|-------------|
| rust_hexagonal | 堅牢なコアシステム | Domain/Port/Adapter (3ファイル) |
| rust_cli_simple | 小さなCLIツール | main.rs + Cargo.toml |
選び方
「長期運用?外部依存の差し替え?チーム開発?」
→ YES: rust_hexagonal
「単機能のCLIツール?学習目的?PoC?」
→ YES: rust_cli_simple
使い方
ビルド
cd aegis-architect-rs
cargo build --release
アーキタイプ一覧を確認
aegis-architect list
Hexagonal構造で生成(デフォルト)
aegis-architect scaffold \
--name market_analysis \
--description "株価を分析する機能" \
--target ./aegis-core
シンプルなCLIツールとして生成
aegis-architect scaffold \
--name my_tool \
--description "便利ツール" \
--archetype rust_cli_simple
アーキタイプディレクトリを指定
aegis-architect --archetypes-dir /path/to/archetypes scaffold ...
生成されるファイル構造(rust_hexagonal)
target/
├── src/domain/market_analysis.rs # 聖域:純粋なドメインモデル
├── src/ports/market_analysis_port.rs # インターフェース定義
└── src/adapters/market_analysis_adapter.rs # 実装の雛形
設計原則(rust_hexagonal)
┌─────────────────────────────────────────┐
│ Domain (Core) │
│ - 外部依存ゼロ │
│ - 純粋な構造体とビジネスロジック │
│ - ここが「聖域」 │
└─────────────────────────────────────────┘
▲
│ 依存の方向
│
┌─────────────────────────────────────────┐
│ Ports (Traits) │
│ - Domainの型を使うインターフェース │
│ - 外部との境界を定義 │
└─────────────────────────────────────────┘
▲
│
┌─────────────────────────────────────────┐
│ Adapters (実装) │
│ - Portを実装 │
│ - 外部API/DB/ファイルシステムへ接続 │
│ - ここだけが「汚れてよい」 │
└─────────────────────────────────────────┘
なぜツールで強制するのか
| アプローチ | 問題点 | |-----------|--------| | 設計書を書く | 読まれない、守られない | | プロンプトで指示 | AIは忘れる、解釈がブレる | | コードレビュー | 事後対応、手戻りが発生 | | ツールで強制 | 物理的に正しい構造しか作れない |
使用例
ユーザー: 「株価取得機能を追加して」
AI(Aegis Architect使用):
1. プロジェクトの規模を判断 → AEGIS本体なのでrust_hexagonalを選択
2. aegis-architect scaffold --name stock_price を実行
3. 生成された domain/stock_price.rs にドメインモデルを定義
4. ports/stock_price_port.rs にトレイトメソッドを追加
5. adapters/stock_price_adapter.rs に実装を書く
→ 手順を飛ばしたり、構造を無視することが不可能
アーキタイプの追加方法
新しいアーキタイプを追加するには:
archetypes/<name>/ディレクトリを作成manifest.jsonでメタデータと生成ファイルを定義- テンプレートファイル (
.tmpl) を配置
テンプレートでは {{ name }}, {{ pascal_name }}, {{ description }} が使用可能。
今後の拡張
- [ ] validate_arch - 既存コードのアーキテクチャ違反検出
- [ ] migrate_to_hex - レガシーコードの移行支援
- [ ] テスト雛形の自動生成
- [ ] CI連携(PRでvalidate_archを自動実行)