PoCのfail-fastで「早く学ぶ」ことに成功しても、製品化に入った瞬間に難易度が跳ね上がります。
理由はシンプルで、PoCが扱うのは“学び”で、製品化が扱うのは“約束(契約)”だからです。
この記事では、PoCの学びを 要件定義・基本設計に変換し、エンタープライズとして「抜け漏れが出やすい場所」を最初から潰すためのメモをまとめています。
参考:以前書いた「PoCのfail-fast入門(省略していいコード / してはいけないコード)」
https://qiita.com/arika1125/items/05d2f6f3c0e34d9a9aaf
1. まず押さえる:PoCと製品化で“勝ち筋”が違う
- PoC:早く学ぶ。再現性・観測性・事故防止が最低ライン。あとは捨てられる
- 製品化:継続提供と説明責任。運用・監査・セキュリティ・コストが主戦場
ここで大事なのは、PoCの成果を“コード”ではなく 意思決定できる材料として扱い直すことです。
2. PoCの学びを「意思決定ログ」に翻訳する(最重要)
PoCから製品化に進む前に、これだけは1ページで書けるようにします。
PoC → 製品化 翻訳メモ
- 仮説(1文):
- 成功基準(Go):
- 中止基準(No-Go / timebox):
- 分かったこと(確定):
- 分からなかったこと(追加検証が必要):
- 事故防止の制約(機密/課金/破壊的操作):
- 重要な前提(Assumptions):
- 残すべき観測情報(入力/出力/設定/相関ID等):
ここが曖昧だと、要件定義で「結局どこまで作るの?」が爆発して手戻りします。
3. エンタープライズ設計は“チェック”より先に“ゲート”を作る
チェックリストは有効ですが、それだけだと「箱埋め」になりがちです。
エンタープライズでは、フェーズごとに Go/No-Go(合意条件) を決めるのが効きます。
フェーズゲート例(最小)
-
Gate 0:PoC→製品化判断
- 価値仮説が検証できた / リスクが列挙され追加検証の計画がある
-
Gate 1:要件定義 Done
- スコープ/非スコープ、NFR(最低限)、受入基準、責任分界(RACI)が合意済み
-
Gate 2:基本設計 Done
- アーキ図/データフロー、失敗系、セキュリティ、運用、コスト上限が設計書に固定
-
Gate 3:GA判定
- 品質ゲート(SLO/重大脆弱性/運用体制/監査要件)を満たす
4. “設計書の最小セット”を決める
エンプラで最低限そろえると事故が減る設計書はこのあたりです。
要件定義
- 目的・スコープ / 非スコープ
- ユースケース & 業務フロー
- 機能要件(FR)
- 非機能要件(NFR:可用性/セキュリティ/運用/性能/コスト)
- 受入基準(テスト可能)
- 未決事項(保留一覧)と決める期限
- RACI(責任分界):運用・障害・権限付与・監査対応
基本設計
- 全体アーキ図(責務分割)+データフロー(データの通り道)
- 失敗系(タイムアウト/リトライ/縮退/冪等/レート制限)
- セキュリティ(認証認可、鍵、監査ログ、データ分類→制御)
- 観測性(ログ/メトリクス/トレース、相関ID)
- 運用(監視、アラート、Runbook、ロールバック)
- コスト上限と暴走対策(LLM/外部APIは必須)
ADR(意思決定ログ)
- “なぜそれを選んだか”を短く残す(将来の変更が楽になる)
5. 抜け漏れが出やすい“地雷原”トップ5
- 責任分界が曖昧:運用が回らない
- 失敗系が未設計:外部依存が落ちたときに事故る
- 監査ログ/保持/アクセスレビュー不足:後から入らない
- コスト上限なし:課金暴走で詰む(LLMは特に)
- DR/復旧演習がない:復旧できるつもりで復旧できない
6. (付録)抜け漏れ防止チェックリスト(要件定義〜基本設計)
ここは「レビュー前に埋める」用途。未決は“保留一覧”に寄せる。
6-1. スコープ/合意形成
- スコープ/非スコープが明確
- ステークホルダーとレビュー順序が決まっている
- RACI(責任分界)がある(運用/障害/権限/監査)
- フェーズゲート(Go/No-Go基準)がある
6-2. NFR(可用性・運用・DR)
- SLO/SLI(成功率/遅延/依存失敗率など)が定義されている
- 障害時の縮退方針(どこまで提供するか)がある
- バックアップ/復旧手順があり、復旧演習の方針がある
6-3. セキュリティ/監査
- データ分類があり、ログ/外部送信の具体ルールに落ちている
- 保存/通信の暗号化、鍵管理(KMS/ローテ)が設計されている
- 監査ログ(保持/検索/改ざん耐性/閲覧権限)が要件としてある
- 脆弱性管理(依存スキャン/SBOM/パッチ方針)がある
- 権限棚卸し(アクセスレビュー)の頻度が決まっている
6-4. 失敗系(必須)
- タイムアウト/リトライの標準(上限/総時間/ジッター)がある
- レート制限/サーキットブレーカー/フォールバックが仕様化されている
- 冪等性(重複実行対策)が設計されている
6-5. 観測性
- 相関IDで端から端まで追える
- ログのPIIマスキング/保持/アクセス制御がある
- 主要ダッシュボードと“誰が見るか”が決まっている
6-6. コスト/容量(LLM/外部APIは必須)
- コスト上限(日次/月次/テナント別/機能別)がある
- 課金暴走防止(上限強制/遮断/アラート)がある
- 原価観測(テナント別/機能別)とアクションルールがある
6-7. QA/リリース
- 受入基準(テスト可能)がFR/NFR双方で定義されている
- テスト戦略(統合/E2E/負荷/最低限のセキュリティ)がある
- 環境戦略(dev/stg/prod)とデータ取り扱いがある
- ロールバックが成立する(DB変更含む)
- サポート導線(一次窓口/エスカレーション/対応目標)がある
まとめ
PoCの学びを“約束(契約)”へ変換する。
そのために、FRより先にNFRを握り、失敗系・運用・監査・コストを設計書に固定する。
チェックリストは最後に効かせ、前段は“ゲートと合意形成”で手戻りを防ぐ。