AIエージェント開発の新常識:ドメイン駆動設計(DDD)で複雑なタスクを攻略せよ
Domain-Driven Agents
Domain-Driven Agents
現在、AIエージェントを構築する上で最も注目されている設計アプローチの一つが「Domain-Driven Agents」です。これは従来の汎用的なAIモデルに対し、特定のドメイン知識(専門領域)を深く組み込むことで、推論の精度と実用性を劇的に向上させる手法です。複雑なビジネスロジックや高度な専門性が求められるタスクにおいて、DDD(ドメイン駆動設計)の思想をエージェント設計に持ち込むことで、保守性が高くスケーラブルなAIシステムを実現するためのガイドラインを解説します。
さっき読んだLLMは新規(グリーンフィールド)プロジェクトの方が扱いやすいっていう話だけど…。俺の経験だと逆だな。既存プロジェクトだと上手くいくけど、新規だとそこまででもない(シンプルなお遊びコードを書くなら別だけど)。たぶん、既存プロジェクトにある長年蓄積された構造や慣習に依存できるから、LLMがうまく機能するんだと思う。
俺も小文字の「d」の方のDDD(ドメイン駆動設計)のファンで、ドメインの挙動や癖、使い方を言語に依存しない形でドキュメント化するために、エンティティごとにmdファイルを作る運用をしてる。つまり、Author.tsがあればAuthor.mdを作るって感じ。エージェントにはそれらmdファイルを読み書きするスキルを与えてるよ(リンク省略)。そうすればエージェントが更新したmdがそのままPRに出てくるから便利。今のところ上手くいってる(メインのリポジトリは350k行のTypeScriptモノリスだけどね)。確かに元の投稿にある「境界づけられたコンテキストのグラフ」みたいな高度で複雑なものじゃないけど、自分はやっぱり小文字のDDD派なんだよね。「大規模なDDD」パターンは、やりすぎ(オーバーエンジニアリング)になりがちだと思う。
面接でDDDについて聞かれた時、冗談で「デバッグ駆動開発(Debug Driven Development)」だって言ったことがある。空のディレクトリを作って、最初のバグを投げるんだ。「アプリが何も動かない。動くべきだ…」ってね。皮肉抜きで、今のAIエージェントとの仕事の進め方はまさにそれだよ。