ブレインストーミングとデザイン
コードを書く前に、何を作るのかを理解せよ。
ブレインストーミングのハードゲート
Superpowersは創造的な作業(新機能の構築、新コンポーネントの設計、新しい動作の追加)に厳格なルールを設けています。
╔══════════════════════════════════════════════════════════════╗
║ HARD GATE: NO CODE MAY BE WRITTEN UNTIL THE USER ║
║ HAS EXPLICITLY APPROVED THE PROPOSED DESIGN. ║
╚══════════════════════════════════════════════════════════════╝
これは推奨事項ではありません。AIはデザインの承認なしにコードを書くことはできません。これはv4.3.0で強制されるようになり、v5.0.0ではアーキテクチャの議論にも適用が拡大されました。
なぜブレインストーミングが必要か
コーディングエージェントが最初にすることは通常、コードを書くことです。問いを検討する前に、なぜその問いが存在するのかを理解する前に、より良いアプローチがあるかもしれないと考える前に。
この習慣は、コストのかかる結果を生みます。
- スコープクリープ — AIは不必要な機能を追加します。なぜなら、「明らかに必要」に見えるからです
- 誤ったアーキテクチャ — 正しい問いに答えるために間違った設計が実装されます
- 無駄な作業 — コードは書かれ、テストされ、そして...要件を満たしていないことがわかります
ブレインストーミングはこれを防ぎます。何を作るかが明確になるまでコードの記述を遅らせます。
ブレインストーミングプロセス
ステップ1:探索
AIはあなたが解決したい問題を探索します。現在の状況は何か?理想の結果は何か?誰が影響を受けるか?
ステップ2:質問(一度に一つ)
AIは明確化の質問をします。一度に一つだけ。 あなたが答えます。次の質問はあなたの答えに基づいて行われます。
ステップ3:アプローチを検討する
問題が十分に理解されたら、AIは2〜3つの異なる実装アプローチを提示します。各アプローチにはトレードオフが含まれています。
ステップ4:アプローチを提示する
AIはアプローチを並べて提示し、推奨事項と、どのアプローチを推奨するかの理由を示します。
ステップ5:仕様を作成する
アプローチが選択されたら、AIは簡潔な設計仕様を作成します。これにより実装計画のための入力が確立されます。
ステップ6:承認のためのレビュー
仕様はあなたのレビューのために提示されます。あなたが承認するまで、作業は進みません。
ステップ7:実装計画への引き渡し
承認後、AIはブレインストーミングセッションを完了し、実装計画フェーズに移行します。
一度に一つの質問ルール
これはブレインストーミングで最も頻繁に違反されるルールです。
間違ったアプローチ:
AIが言うこと:
「ユーザー認証システムについていくつか質問があります:
1. どの認証方法を使用しますか(JWT、セッションなど)?
2. ソーシャルログインが必要ですか?
3. パスワードリセット機能を含めますか?
4. どのデータベースを使用していますか?
5. セキュリティ要件は何ですか?」
これは一度に処理するには多すぎます。あなたは回答の優先順位付けを強いられます。回答が後の質問への回答を変えるかもしれません。会話は深さではなく幅に向かいます。
正しいアプローチ:
AIが言うこと:
「ユーザー認証について、まず最も基本的なことから:
どの認証方法を念頭に置いていますか?JWTセッションやOAuthなどのオプションがありますが。」
あなたが答える → AIが次の最も重要な質問をする
一度に一つの質問は会話の流れを維持し、各回答に十分な注意を払うことができます。
選択肢の形式
多肢選択式の質問はブレインストーミングで特に効果的です。
「データストレージについて、どのアプローチが状況に最も合いますか?
A) PostgreSQL — リレーショナルデータ、ACIDトランザクション、複雑なクエリが必要な場合
B) MongoDB — スキーマが柔軟で、ドキュメント構造が変わる可能性がある場合
C) Redis — 高速アクセスが必要で、データをメモリに保持できる場合
D) SQLite — シンプルなデプロイメント、ローカルデータ、外部データベース不要の場合
または別の要件がある場合は説明してください。」
これはあなたが知らなかったオプションを認識させ、他の人がこの問題をどのように分類しているかを教え、回答のための語彙を与えます。
アプローチの提示
AIが十分な情報を集めたら、アプローチを以下のように提示します。
## 提案されたアプローチ
### アプローチA:[名前]
**何をするか:** [一文の説明]
**利点:** [主な強み]
**欠点:** [主なトレードオフ]
**最適な場合:** [このアプローチが意味を持つ状況]
### アプローチB:[名前]
**何をするか:** [一文の説明]
**利点:** [主な強み]
**欠点:** [主なトレードオフ]
**最適な場合:** [このアプローチが意味を持つ状況]
### 推奨事項
[あなたの状況に基づいて、なぜAまたはBを推奨するか]
推奨事項は常に含まれます。AIは選択肢を提示するだけでなく、状況に基づいた意見を提供します。
Visual Companion(v5.0)
v5.0以降、ブレインストーミングセッションにはVisual Companionが含まれる場合があります。これはブレインストーミングが進むにつれてアイデア、接続、決定ツリーをASCIIダイアグラムとして視覚化します。
[ユーザー認証]
│
├── JWT トークン
│ ├── ✓ ステートレス
│ ├── ✓ スケーラブル
│ └── ✗ 取り消しが難しい
│
└── セッションベース
├── ✓ 取り消しが簡単
├── ✓ より安全なデフォルト
└── ✗ サーバー状態が必要
これは複雑なアーキテクチャ決定やシステム設計に特に有効です。
ブレインストーミングのアンチパターン
| アンチパターン | 何が起きるか | 正しいアプローチ |
|---|---|---|
| ブレインストーミングをスキップして実装を始める | 間違ったものを正確に構築する | 実装前に必ずブレインストーミングを完了する |
| 形式的なブレインストーミング | アプローチを真剣に探求せずにプロセスを経る | 代替案を真剣に評価する |
| 最初のアプローチを承認する | トレードオフが評価されない | 少なくとも2つのアプローチを検討する |
| ブレインストーミング中にコードスニペットを書く | 設計前にコードが書かれる | ブレインストーミング出力はテキストのみ |
| 承認なしに「分かった、始めよう」と言う | ハードゲートがバイパスされる | 明示的な承認が必要 |
| ブレインストーミングセッションを途中で切る | 不完全な仕様で計画が始まる | 全7ステップを完了する |
実装計画への引き渡し前のチェックリスト
ブレインストーミングが完了したとみなす前に、以下をすべて確認してください。
これらの項目がすべて確認されるまで、実装計画フェーズへの移行はできません。
要約: ブレインストーミングは計画するためのウォームアップではありません。これは何を構築するかを理解するために投資する思考の実際の作業です。コードを書き始める前に問題を理解している場合、そのコードはより速く書かれ、より速く動作し、より少ない修正を必要とします。