DES(意思決定評価スコア)で自律判断 — AIが自分で実行可否を決める
約7分で読めます
DESとは
DES(Decision Evaluation Score)は、AIエージェントが変更の実行可否を自律的に判断するためのフレームワーク。感覚的な「良さそう」「危なそう」を数値化し、明確な閾値で実行・保留・却下を判定する。
DESの計算式
DES = Σ(メリットスコア) + Σ(デメリットスコア × (1 - 緩和率))
- メリットスコア: 正の値(+10 ~ +50)
- デメリットスコア: 負の値(-10 ~ -50)
- 緩和率: 0.0 ~ 1.0(対策によるリスク軽減度)
判定閾値
| DES範囲 | 判定 | アクション |
|---|---|---|
| +60以上 | 即実行 | エージェントが自律的に実行 |
| +30 ~ +59 | レビュー後実行 | Reviewerに確認後、実行 |
| 0 ~ +29 | 再設計 | 設計を見直して再提案 |
| -1以下 | 却下 | 実行しない。代替案を検討 |
具体例1: DB移行の判断
PostgreSQLからの本番DB移行を検討するケース。
変更: PostgreSQL 14 → PostgreSQL 16へのメジャーアップグレード
メリット:
- パフォーマンス向上(30%高速化): +35
- セキュリティパッチ適用: +25
- 新機能(JSONBの改善等): +15
メリット合計: +75
デメリット:
- ダウンタイムリスク: -30 × (1 - 0.8) = -6
緩和策: Blue-Greenデプロイで切替(緩和率0.8)
- 互換性問題: -25 × (1 - 0.7) = -7.5
緩和策: ステージング環境で事前テスト(緩和率0.7)
- ロールバック困難: -20 × (1 - 0.9) = -2
緩和策: スナップショット取得済み(緩和率0.9)
デメリット合計: -15.5
DES = 75 + (-15.5) = +59.5
判定: レビュー後実行
緩和策をしっかり用意すれば、デメリットの影響を大幅に抑えられる。
具体例2: API公開の判断
社内APIを外部パートナーに公開するケース。
変更: 内部API v2を外部パートナー向けに公開
メリット:
- パートナー連携による売上増: +40
- 開発者エコシステム構築: +20
- ブランド価値向上: +10
メリット合計: +70
デメリット:
- セキュリティリスク増大: -40 × (1 - 0.5) = -20
緩和策: API Gateway + レート制限(緩和率0.5)
- サポートコスト増: -15 × (1 - 0.3) = -10.5
緩和策: ドキュメント整備のみ(緩和率0.3)
- 後方互換性の維持負担: -20 × (1 - 0.4) = -12
緩和策: バージョニング導入(緩和率0.4)
デメリット合計: -42.5
DES = 70 + (-42.5) = +27.5
判定: 再設計
セキュリティの緩和率が0.5と低い。WAF導入や認証強化で緩和率を0.8に上げれば、DESは+49.5(レビュー後実行)に改善する。
具体例3: リファクタリングの判断
レガシーコードの大規模リファクタリングを検討するケース。
変更: モノリスからマイクロサービスへの分割
メリット:
- スケーラビリティ向上: +30
- デプロイ独立性: +25
- チーム並列開発: +20
メリット合計: +75
デメリット:
- 開発工数(3ヶ月): -35 × (1 - 0.2) = -28
緩和策: 段階的移行(緩和率0.2)
- 運用複雑性の増大: -30 × (1 - 0.3) = -21
緩和策: Kubernetes導入予定(緩和率0.3)
- データ整合性リスク: -40 × (1 - 0.4) = -24
緩和策: Sagaパターン導入(緩和率0.4)
- 学習コスト: -15 × (1 - 0.5) = -7.5
緩和策: 社内勉強会実施(緩和率0.5)
デメリット合計: -80.5
DES = 75 + (-80.5) = -5.5
判定: 却下
全面移行は却下。まず1つのドメインだけ分離する「ストラングラーパターン」で再計算すると、工数とリスクが大幅に下がりDESがプラスに転じる。
判定フロー
[変更提案] → メリット列挙 → デメリット列挙 → 緩和策検討
│
↓
[DES計算] → +60以上? ──Yes──→ [即実行]
│
No
↓
+30以上? ──Yes──→ [Reviewer確認] → 承認? → [実行]
│ │
No No → [再設計]
↓
0以上? ──Yes──→ [再設計] → 緩和策追加 → [再計算]
│
No
↓
[却下] → 代替案検討 → [新提案としてDES計算]
DESの実装
def calculate_des(change):
"""DESスコアを計算"""
benefit_total = sum(b["score"] for b in change["benefits"])
risk_total = sum(
r["score"] * (1 - r["mitigation_rate"])
for r in change["risks"]
)
return benefit_total + risk_total
def decide(des_score):
"""DESスコアから判定を返す"""
if des_score >= 60:
return "EXECUTE"
elif des_score >= 30:
return "REVIEW_THEN_EXECUTE"
elif des_score >= 0:
return "REDESIGN"
else:
return "REJECT"
運用上の注意点
- 緩和率の過大評価に注意: 対策が実装済みかどうかで緩和率を変える。計画段階なら0.3、実装済みなら0.8が目安
- メリットの水増しに注意: 「将来的に役立つかも」は+5程度に抑える。確実な効果のみ高スコアを付ける
- 定期的な閾値見直し: プロジェクトのリスク許容度に応じて閾値を調整する
関連記事
A
Agentive 編集部
AIエージェントを実際に使い倒す個人開発者。サイト制作の自動化を実践しながら、その知見を発信しています。