概要
AIに「最適な閾値を教えて」と聞いても、有用な答えは返ってこない。AIはあなたの本番環境のデータを知らないし、リスク許容度も知らない。
108セッション・262件の施策管理メッセージを分析した結果、AIとの設計対話には明確なパターンがあることがわかった。効果的な対話は「3案提示 → 制約で絞り込み → 記録」の3ステップに収束する。本記事では、AIとの設計対話で繰り返し現れた意思決定パターンと、それを再現可能にする手法を記録する。
AIとの設計対話で観察された4つのパターン
パターン1: 「閾値を何にするか → メリデメ教えて → 採用」
最も頻度の高いパターン。具体的な数値の決定で使う。
1人間: 「トレンド強度指標の閾値を何にするか。メリデメを教えてください」2AI: 「案1: 25(標準値)→ 判定結果多め、誤検知のリスク3 案2: 30(厳格)→ 判定結果少なめ、高精度4 案3: パラメータ化 → 柔軟だが複雑性増加」5人間: 「→案2で」6AI: 「了解。PARAMETER.mdに記録します」ポイントは「いくつにすべきか」ではなく「選択肢とトレードオフを教えて」と聞くことだ。AIは最適値を知らないが、各値のトレードオフは説明できる。
パターン2: 「複数の改善軸から選ぶ」
改善の方向性が複数ある場合の意思決定パターン。
1人間: 「判定精度を上げたい。スコア閾値調整・バッチ乗数・両方、どれが効果的?」2AI: 「スコア閾値調整: 判定結果の数に直接影響。閾値を上げると誤検知減少だが機会損失3 バッチ乗数: 判定結果の数は変えず、高確信時のリターン増加。リスクも増加4 両方: 効果は最大だが、2変数同時変更で原因特定が困難に」5人間: 「→両方。ただし段階的に。まずスコア閾値を調整して効果測定、次にバッチ乗数」「両方」を選ぶこと自体は問題ない。重要なのは「段階的に」という制約を自分で付け加えた点だ。AIは選択肢を並べるが、実装順序の判断は人間がする。
パターン3: 「論理演算の設計選択」
フィルター条件の組み合わせ方を決めるパターン。
1人間: 「フェーズ判定でトレンド強度指標と変動幅指標のフィルターを組み合わせます。OR vs AND、どちらが好みですか?」2AI: 「OR: いずれかの条件を満たせば通過。判定結果の数を維持しやすいが精度は下がる3 AND: 両方の条件を満たす場合のみ通過。精度は上がるが判定結果の数が大幅減少4 推奨: まずANDで検証し、判定結果が少なすぎればORに切り替え」5人間: 「ANDで。判定結果の数よりも精度優先」パターン4: 「技術方針の二択」
実装アプローチそのものを決める大きな判断。
1人間: 「予測値データ取得の方針を決めたい。本当にデータ処理エンジンA固有の予測値を外部APIで取るか、2 それともSIMファイルから実測値を計算して代替しますか?」3AI: 「外部API(予測値):4 メリット: 将来期待を反映、外部データソースのコンセンサス5 デメリット: API依存(障害リスク)、固有の予測値データは高額・入手困難6 SIMファイルから実測値計算:7 メリット: 外部依存なし、既存データで完結、コスト08 デメリット: 過去データのみ(将来期待を含まない)9 判断材料: 現在のシステムで外部APIは6つ統合済み。10 7つ目の追加は管理コスト増。実測値で十分な精度が出るなら後者が合理的」11人間: 「→実測値で代替。外部依存を増やしたくない」3ステップの意思決定フレームワーク
108セッションの分析から、効果的な設計対話は3ステップに収束する。
1┌─────────────────────────────────────────┐2│ Step 1: AIに選択肢とメリデメを聞く │3│ 「3案提示してメリデメ比較してください」 │4├─────────────────────────────────────────┤5│ Step 2: 制約に基づいて選択する │6│ パフォーマンス / 複雑性 / リスク │7│ 既存システムとの整合性 / 運用コスト │8├─────────────────────────────────────────┤9│ Step 3: 決定を記録する │10│ ADR / PARAMETER.md / コミットメッセージ │11└─────────────────────────────────────────┘Step 1の具体的なプロンプト
1# 効果的なプロンプトのテンプレート2DESIGN_DECISION_PROMPTS = {3 "閾値決定": (4 "{パラメータ名}の値を決めたい。"5 "3つの候補値を挙げて、それぞれのメリット・デメリットを比較してください。"6 "判断基準: {基準(例: 判定精度 vs 頻度のバランス)}"7 ),8 "方式選択": (9 "{機能名}の実装方式を検討中。"10 "考えられるアプローチを3つ挙げて、"11 "複雑性・パフォーマンス・保守性の観点で比較してください。"12 ),13 "フィルター設計": (14 "{フィルターA}と{フィルターB}の組み合わせ方を決めたい。"15 "AND/OR/段階的適用の3パターンで、"3 collapsed lines
16 "判定結果の数と精度への影響を比較してください。"17 ),18}Step 2の判断基準
制約を先に伝えることで、AIの提案を絞り込む。
1「新機能を設計してください。制約:2 - 既存のトリガーファイルJSON形式は変更しない3 - 処理時間の増加は10%以内4 - 既存テストを壊さない」この「制約を先に伝える」テクニックは、設計対話の効率を劇的に改善する。制約なしだと、AIは理想的だが実現不可能な案を提示する。制約を先に伝えると、最初から実現可能な案だけが提示される。
1# 制約の分類と優先順位2CONSTRAINT_CATEGORIES = {3 "互換性": [4 "既存データ形式を変更しない",5 "既存テストを壊さない",6 "外部API契約の範囲内",7 ],8 "パフォーマンス": [9 "処理時間の増加は10%以内",10 "メモリ使用量は現状+20%以内",11 "APIコール数を増やさない",12 ],13 "運用": [14 "定期ジョブの追加は最小限",15 "監視対象の増加は許容する",3 collapsed lines
16 "ロールバック可能な設計",17 ],18}Step 3の記録先
決定の種類によって記録先が異なる。
1Quick Decisions(5分以内で決まるもの):2 → PARAMETER.md(値と根拠を1エントリで記録)3 例: トレンド強度閾値=30、エラー許容閾値=2.04
5Architecture Decisions(複数の選択肢を比較したもの):6 → DECISIONS.md(ADR形式でコンテキスト・決定・理由を記録)7 例: 統合分析 vs 個別分析、外部API vs ローカル計算8
9Implementation Choices(実装中の小さな判断):10 → コミットメッセージ or .docs/施策ドキュメント11 例: OR vs AND、ループ展開 vs リスト内包表記アンチパターン:やってはいけない設計対話
108セッションで繰り返し見られた失敗パターン。
アンチパターン1: 「最適な値を教えて」
1人間: 「最適なトレンド強度指標の閾値を教えてください」2AI: 「一般的には25が使われますが、30も推奨されます」3→ 文脈なしの一般論しか返ってこないAIはあなたの本番データ、対象項目の特性、リスク許容度を知らない。「最適」を聞くのではなく、「選択肢とトレードオフ」を聞く。
アンチパターン2: 最初の提案をそのまま採用
1人間: 「フィルターを追加してください」2AI: 「トレンド強度フィルター(閾値25)を追加しました」3人間: 「OK」4→ 代替案の検討なしで採用AIの最初の提案は「最も一般的な」選択肢であり、あなたのプロジェクトに最適な選択肢ではない。必ず「他の案は?」と聞く。
アンチパターン3: 決定を記録しない
1セッション1: 「OR結合で行きましょう」2セッション2: 「この条件、AND結合にしますか?OR結合にしますか?」3→ 前回の決定がセッションごとにリセットされる記録されない決定は、存在しない決定と同じだ。次のセッションでゼロから議論になる。
正しいパターン
1人間: 「トレンド強度指標の閾値について3案提示してメリデメ比較してください。2 制約: 現在の対象項目はデータソースA、回帰テスト期間2022-2025」3AI: 「案1: 20 → メリット... デメリット...4 案2: 25 → メリット... デメリット...5 案3: 30 → メリット... デメリット...」6人間: 「→案3。PARAMETER.mdに記録して」7AI: 「PARAMETER.mdに以下を追加しました:8 TREND_STRENGTH_THRESHOLD: 309 設定理由: 誤検知抑制を優先。25との比較で...10 変更条件: 100回以上の処理で成功率比較した場合のみ」実績データ
108セッション・25件のアーキテクチャ議論を分析した結果。
1意思決定パターンの分布:2 閾値・パラメータ決定: 42%(108件中)3 実装方式の選択: 28%4 フィルター設計: 18%5 技術方針の二択: 12%6
7「3案比較」の効果:8 3案提示を依頼した場合: 最初の案を採用した割合 → 31%9 3案提示なしの場合: 最初の案を採用した割合 → 78%10
11 → 3案比較により、「最初の案に飛びつく」確率が78%→31%に低下。12 より適切な選択ができている。13
14決定の記録先:15 PARAMETER.md: 47件5 collapsed lines
16 DECISIONS.md(ADR形式): 25件17 コミットメッセージ: 残り(未構造化)18
19施策管理関連メッセージ: 262件20 うちアーキテクチャ議論: 25件(約10%)AIが「3案」を出すときの質を上げるコツ
「3案出して」と言うだけでは、AIは似たような案を3つ並べることがある。質を上げるには、軸を指定する。
1# 軸を指定する例2COMPARISON_AXES = {3 "パラメータ値": "保守的・標準・積極的の3段階で提示して",4 "アーキテクチャ": "シンプル・標準・拡張性重視の3段階で提示して",5 "フィルター": "緩い・標準・厳格の3段階で提示して",6}7
8# 実際のプロンプト例9PROMPT_WITH_AXES = """10判定フィルターの設計を3案提示してください。11軸: フィルター厳格度(緩い・標準・厳格)12各案について以下を記載:131. 判定結果の通過率の推定142. 誤検知除去率の推定153. 実装の複雑性2 collapsed lines
164. 既存コードへの影響17"""学んだこと
1. 「3案提示して比較」が最も効果的
AIは1案だけだと過度に自信を持つ。「これが最適です」という口調で提案する。しかし3案並べると、各案の弱点を客観的に説明する。最初の案をそのまま採用する確率が78%から31%に低下した。
2. 制約を先に伝えると、実現不可能な案を排除できる
「既存形式は変更しない」の一言で設計の方向が定まる。制約なしで聞くと、AIは「データフォーマットを変更すれば効率的です」のような根本的な変更を提案してくる。それは正しいが、本番稼働中のシステムでは採用できない。
3. 決定を記録しないと翌セッションでゼロから議論になる
ADR/PARAMETER.mdへの記録は設計対話の「成果物」だ。対話そのものは揮発性が高い。108セッションのうち、記録されなかった決定の30%以上が後のセッションで再議論になった。記録された決定で再議論になったのは2件だけだった。
まとめ
AIとの設計対話で重要なのは以下の3点だ。
- 「3案提示してメリデメ比較」をデフォルトにする: AIに1案だけ出させない。3案並べることで客観的な比較が生まれ、最初の案に飛びつく確率が78%から31%に低下する
- 制約を先に伝えて実現可能な案に絞る: 「既存形式変更なし」「処理時間+10%以内」「テスト破壊なし」の制約を最初に示す。AIが理想的だが非現実的な案を提示するのを防止する
- 決定はADR/PARAMETER.mdに即時記録する: Quick DecisionsはPARAMETER.md、Architecture DecisionsはDECISIONS.md。記録されない決定は次のセッションで消える