AIエージェント時代の要件定義 〜 決定的な設計から「揺らぎを前提にした構造」へ〜
はじめに
これまでのシステム開発において、要件定義とは「プロセスを完全に定義すること」でした。
入力があり、処理があり、出力がある。
同じ入力には必ず同じ結果が返り、エラーは再現可能である。
良くも悪くも、従来のシステム設計は 決定的 であることを前提としてきました。
AIエージェントは「プロセス」ではなく「目的」で動く
そんな我々の前に登場したのが AIエージェント です。
AIエージェントの最大の特徴は、手順ではなく目的を与えられて動くという点にあります。
ユーザーと対話しながら、
- 何をしたいのかを聞き出し
- 状況に応じて判断を変え
- 必要であれば手段や順序を組み替えながら
- ゴールに向かって自律的に進む
この振る舞いは、従来の「あらかじめ定義されたワークフロー」とは本質的に異なります。
ここで登場するのが、非決定的 という性質です。
同じ入力であっても、文脈や判断によって異なる結果に至る。
この「揺らぎ」こそがAIの強みであり、同時に設計上の難しさでもあります。
すべてを非決定的にすればいいわけではない
とはいえ、システム全体を非決定的にすることは現実的ではありません。
- 課金処理
- データベース更新
- 外部API連携
- 監査やログが必要な処理
これらは常に同じ結果が返ることが求められます。
ここでは決定的な設計でなければ、運用もテストも成立しません。
つまり実際のシステムでは、
- 非決定的な部分
- 決定的な部分
が必ず混在します。
この前提に立ったとき、従来型の要件定義は途端に機能しなくなります。
最初に来るのは非決定的なAIエージェント
AIエージェントを前提としたシステムでは、
構造としてまず最上位に非決定的なAIエージェントになります。
なぜかというと最初に必要なのは、「ユーザーが何をしたいのか」を確定させることだからです。
- 要件そのものが曖昧
- 目的が会話の中で変化する
- 制約条件が後から出てくる
このフェーズは、事前にプロセスを定義することができません。
だからこそ、対話を通じて目的を引き出す非決定的なAIエージェントが必要になります。
逆に従来の決定的なシステムでは、
ユーザー自身が目的やシステムの使い方を理解しておく必要があります。
その目的に応じてメニューや画面を用意しておく必要がありますが、マニュアルやサポートが必須になってきます。
目的が定まった後に、ワークフローを分岐させる
ユーザーの目的がある程度明確になったら、次に行うのは、
その目的を達成するには、どんなワークフローが最適か?
を判断することです。
ここで初めて、
- 非決定的な処理が必要か
- 決定的な処理に落とせるか
という分岐が発生します。
非決定的な処理
- プロンプトベースのAIエージェント
- 探索的・判断的な処理
- 状況に応じて変化するフロー
決定的な処理
- UIで定義された明確なプロセス
- 正確な再現性が求められる処理
このように、目的を起点にして処理の性質を見極め、実行手段を切り替える必要があります。
自前のプログラムは「決定性」を担保する層
- 非決定的な判断:AIエージェント
- 決定的な実行:n8n や自前のプログラム
という役割分担が自然になります。
さらに言えば、決定的な処理ですら、
- ワークフローツールで定義するのか
- プログラムとして実装するのか
という選択が必要になります。
「非決定的・決定的・純粋」を分離する設計パターン
この問題意識は、すでに設計論として整理され始めています。
この記事では、システムの性質を次の3つに分離することが提案されています。
- 非決定的(Non-deterministic)
- 決定的(Deterministic)
- 純粋(Pure)
そして重要なのは、
AIの「揺らぎ」をシステムのコアに伝染させない
という考え方です。
非決定的な層
- AIエージェント
- ユーザーとの対話
- 意図理解や要約、判断
決定的な層
- ワークフローエンジン
- 明示的な条件分岐
- 再現性のある処理
純粋な層
- ビジネスルール
- ドメインロジック
- データ整合性を担保する中核
この「純粋な層」は、AIの揺らぎが直接入り込んではいけない領域です。
要件定義は「プロセス」ではなく「境界」を定義する
ここまでの話を踏まえると、
AIエージェント時代の要件定義で本当に重要なのは、
- どこを非決定的にしてよいか
- どこは必ず決定的であるべきか
- どこが純粋で、絶対に守るべき領域か
を最初に決めることだと言えます。
従来のように、
- 画面
- 入力
- 処理
- 出力
を直線的につなぐ要件定義では不十分です。
要件定義とは、 「揺らぎをどこまで許容するかの境界線を引く作業」 に変わっていきます。
まとめ:AIをどう使うかではなく、揺らぎをどう閉じ込めるか
AI時代のシステム設計で本当に問われるのは、
AIをどこに使うか
ではなく、
AIの揺らぎを、どこまで広げてよいか
です。
この視点を持たずにAIエージェントを導入すると、非決定性がシステム全体に伝染し、
テストも運用も破綻します。
一方で、非決定的・決定的・純粋を意識的に分離できれば、
AIの柔軟性とシステムの安定性を両立できます。
そのための要件定義こそが、これからのAIエージェント時代に本当に求められるものなのだと思います。
Discussion