AIに設計を相談する
アーキテクチャの選択は重要な決定です。AIに選択肢を提案させ、トレードオフを議論することで、より良い設計判断ができます。
AIへの設計相談の基本
効果的な相談の流れ
1
要件と制約を伝える
何を作りたいか、技術的な制約は何か
2
選択肢を提案させる
複数のアプローチを比較検討
3
トレードオフを議論する
各選択肢のメリット・デメリットを確認
4
決定し、詳細設計に進む
選んだ方針に基づいて具体化
実践例1:技術選定の相談
状態管理ライブラリの選定
Next.js 14 (App Router) でプロジェクト管理ツールを作っています。 状態管理ライブラリを選定したいです。 【要件】 - タスク一覧、プロジェクト一覧などのデータをキャッシュしたい - 複数のコンポーネント間でデータを共有したい - サーバーからのデータとクライアントの状態を区別したい - チームメンバーが学習しやすいものが良い 【候補】 1. React Context + useState 2. Zustand 3. Jotai 4. TanStack Query (React Query) それぞれのメリット・デメリットと、おすすめを教えてください。
AIの回答を受けて深掘り
「TanStack Queryを推奨されましたが、オフライン対応も必要になるかもしれません。その場合でも対応できますか?」
「ZustandとTanStack Queryを組み合わせる場合、どのように使い分けますか?」
「学習コストが低いのはどれですか?チームに React 初心者がいます」
実践例2:アーキテクチャパターンの選択
バックエンドのアーキテクチャ相談
FastAPI でバックエンドを構築しています。 現在は以下のような構造ですが、コードが複雑になってきました。 現在の構造: app/ ├── main.py ├── api/ │ └── endpoints/ # 全てのロジックがここに ├── models/ └── schemas/ 【課題】 - エンドポイントのファイルが肥大化(500行超え) - テストが書きにくい - ビジネスロジックとDBアクセスが混在 【質問】 1. どのようなアーキテクチャパターンが適切ですか? 2. リポジトリパターン、サービス層の導入は有効ですか? 3. 具体的なフォルダ構成を提案してください
提案される構成例
app/
├── main.py
├── api/
│ └── v1/
│ ├── endpoints/ # ルーティングのみ
│ │ ├── tasks.py
│ │ └── users.py
│ └── dependencies.py # 依存性注入
├── services/ # ビジネスロジック
│ ├── task_service.py
│ └── user_service.py
├── repositories/ # データアクセス
│ ├── task_repository.py
│ └── user_repository.py
├── models/ # SQLAlchemyモデル
├── schemas/ # Pydanticスキーマ
└── core/ # 設定、例外など
├── config.py
└── exceptions.py
実践例3:設計上の判断を相談
リアルタイム機能の実装方法
プロジェクト管理ツールにリアルタイム同期機能を追加したいです。 複数ユーザーが同時にタスクボードを見ているとき、 誰かがタスクを移動したら全員の画面に反映させたいです。 【技術スタック】 - Frontend: Next.js 14 - Backend: FastAPI - DB: MySQL - インフラ: AWS (予定) 【検討している方法】 1. WebSocket 2. Server-Sent Events (SSE) 3. ポーリング 4. Firebase Realtime Database 【考慮事項】 - 同時接続数は最大100人程度 - コスト を抑えたい - 既存の FastAPI サーバーを活かしたい 最適なアプローチを提案してください。
ポイント:AIの提案を鵜呑みにせず、「なぜその選択が良いのか」「他の選択肢と比べてどう違うのか」を必ず確認しましょう。
AIと設計ドキュメントを作る
設計が決まったら、ドキュメント化もAIに手伝ってもらいましょう。
アーキテクチャ決定記録(ADR)の作成
今の議論を基に、アーキテクチャ決定記録(ADR)を作成してください。 フォーマット: # ADR-001: [タイトル] ## ステータス 承認済み / 提案中 / 廃止 ## コンテキスト なぜこの決定が必要になったか ## 決定 何を決定したか ## 選択肢 検討した選択肢とその評価 ## 結果 この決定によって予想される影響
設計相談の注意点
やるべきこと
- ○ 制約条件を明確に伝える
- ○ 複数の選択肢を比較させる
- ○ トレードオフを明確にさせる
- ○ 最終決定は人間が行う
避けるべきこと
- ✗ AIの提案を無批判に採用
- ✗ 制約を伝えずに質問
- ✗ 「最良」を求めすぎる(正解は一つではない)
- ✗ 将来の変更可能性を無視
まとめ
- ✓ 要件と制約を明確に - AIが適切な提案をするための前提情報
- ✓ 複数の選択肢を比較 - 一つの答えを求めず、選択肢を出させる
- ✓ トレードオフを理解 - 各選択肢のメリット・デメリットを把握
- ✓ 深掘り質問をする - 「なぜ?」「他の方法は?」と追加質問
- ✓ ドキュメント化する - 決定事項をADRなどで記録