第2部:AIとアーキテクチャ設計 Step 5 / 36

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などで記録
AIの出力を検証する 次へ:クリーンアーキテクチャをAIと実装