🎃

AIエージェント時代の要件定義 〜 決定的な設計から「揺らぎを前提にした構造」へ〜

に公開

はじめに

これまでのシステム開発において、要件定義とは「プロセスを完全に定義すること」でした。
入力があり、処理があり、出力がある。

同じ入力には必ず同じ結果が返り、エラーは再現可能である。

良くも悪くも、従来のシステム設計は 決定的 であることを前提としてきました。

AIエージェントは「プロセス」ではなく「目的」で動く

そんな我々の前に登場したのが AIエージェント です。

AIエージェントの最大の特徴は、手順ではなく目的を与えられて動くという点にあります。

ユーザーと対話しながら、

  • 何をしたいのかを聞き出し
  • 状況に応じて判断を変え
  • 必要であれば手段や順序を組み替えながら
  • ゴールに向かって自律的に進む

この振る舞いは、従来の「あらかじめ定義されたワークフロー」とは本質的に異なります。

ここで登場するのが、非決定的 という性質です。

同じ入力であっても、文脈や判断によって異なる結果に至る。
この「揺らぎ」こそがAIの強みであり、同時に設計上の難しさでもあります。

すべてを非決定的にすればいいわけではない

とはいえ、システム全体を非決定的にすることは現実的ではありません。

  • 課金処理
  • データベース更新
  • 外部API連携
  • 監査やログが必要な処理

これらは常に同じ結果が返ることが求められます。
ここでは決定的な設計でなければ、運用もテストも成立しません。

つまり実際のシステムでは、

  • 非決定的な部分
  • 決定的な部分

が必ず混在します。

この前提に立ったとき、従来型の要件定義は途端に機能しなくなります。

最初に来るのは非決定的なAIエージェント

AIエージェントを前提としたシステムでは、
構造としてまず最上位に非決定的なAIエージェントになります。

なぜかというと最初に必要なのは、「ユーザーが何をしたいのか」を確定させることだからです。

  • 要件そのものが曖昧
  • 目的が会話の中で変化する
  • 制約条件が後から出てくる

このフェーズは、事前にプロセスを定義することができません。

だからこそ、対話を通じて目的を引き出す非決定的なAIエージェントが必要になります。

逆に従来の決定的なシステムでは、

ユーザー自身が目的やシステムの使い方を理解しておく必要があります。

その目的に応じてメニューや画面を用意しておく必要がありますが、マニュアルやサポートが必須になってきます。

目的が定まった後に、ワークフローを分岐させる

ユーザーの目的がある程度明確になったら、次に行うのは、

その目的を達成するには、どんなワークフローが最適か?

を判断することです。

ここで初めて、

  • 非決定的な処理が必要か
  • 決定的な処理に落とせるか

という分岐が発生します。

非決定的な処理

  • プロンプトベースのAIエージェント
  • 探索的・判断的な処理
  • 状況に応じて変化するフロー

決定的な処理

  • UIで定義された明確なプロセス
  • 正確な再現性が求められる処理

このように、目的を起点にして処理の性質を見極め、実行手段を切り替える必要があります。

自前のプログラムは「決定性」を担保する層

  • 非決定的な判断:AIエージェント
  • 決定的な実行:n8n や自前のプログラム

という役割分担が自然になります。

さらに言えば、決定的な処理ですら、

  • ワークフローツールで定義するのか
  • プログラムとして実装するのか

という選択が必要になります。

「非決定的・決定的・純粋」を分離する設計パターン

この問題意識は、すでに設計論として整理され始めています。

https://zenn.dev/loglass/articles/7e40d2a253bfd3

この記事では、システムの性質を次の3つに分離することが提案されています。

  • 非決定的(Non-deterministic)
  • 決定的(Deterministic)
  • 純粋(Pure)

そして重要なのは、

AIの「揺らぎ」をシステムのコアに伝染させない

という考え方です。

非決定的な層

  • AIエージェント
  • ユーザーとの対話
  • 意図理解や要約、判断

決定的な層

  • ワークフローエンジン
  • 明示的な条件分岐
  • 再現性のある処理

純粋な層

  • ビジネスルール
  • ドメインロジック
  • データ整合性を担保する中核

この「純粋な層」は、AIの揺らぎが直接入り込んではいけない領域です。

要件定義は「プロセス」ではなく「境界」を定義する

ここまでの話を踏まえると、
AIエージェント時代の要件定義で本当に重要なのは、

  • どこを非決定的にしてよいか
  • どこは必ず決定的であるべきか
  • どこが純粋で、絶対に守るべき領域か

最初に決めることだと言えます。

従来のように、

  • 画面
  • 入力
  • 処理
  • 出力

を直線的につなぐ要件定義では不十分です。

要件定義とは、 「揺らぎをどこまで許容するかの境界線を引く作業」 に変わっていきます。

まとめ:AIをどう使うかではなく、揺らぎをどう閉じ込めるか

AI時代のシステム設計で本当に問われるのは、

AIをどこに使うか

ではなく、

AIの揺らぎを、どこまで広げてよいか

です。

この視点を持たずにAIエージェントを導入すると、非決定性がシステム全体に伝染し、
テストも運用も破綻します。

一方で、非決定的・決定的・純粋を意識的に分離できれば、
AIの柔軟性とシステムの安定性を両立できます。

そのための要件定義こそが、これからのAIエージェント時代に本当に求められるものなのだと思います。

Discussion