統合モデル言語(UML)は、互いに無関係な図の集まりであることを意図してはいなかった。それは、複数の視点からソフトウェアシステムを記述できる、整合性のある補完的な視点のセットとして設計されている。成功したアーキテクチャの核心的な原則は、単一の図だけでは物語の全体像を語れないことである。代わりに、クラス図、シーケンス図、アクティビティフローは、共有されるモデル要素を通じて深く結びついている。
しかし、汎用的大規模言語モデル(LLM)の登場により、独自の課題が生じている。開発者がAIを用いて個別のプロンプトを別々に使用して図を生成する際、しばしば断片化された図の集合を無意識のうちに作成してしまう。これは統一された設計図ではなく、むしろ分散した画像の集合となる。本記事では、この不整合のメカニズムを検証し、AIによって生成されたモデルが意味的に整合性を保つための実行可能な戦略を提示する。
分離されたAI生成が不整合を引き起こす主な理由は、永続的な状態が存在しないことにある。標準的なLLMはしばしば完全に孤立した状態で成果物を生成する。別々のプロンプト間で相互参照するための専用のモデルリポジトリや自動化されたメカニズムがなければ、AIはすべてのリクエストをタブラ・ラサ(空白の状態)として扱う。
結果として、あるインタラクションで生成された図は、その瞬間に提供された特定のプロンプトテキストに基づいて構築される。AIは以前のインタラクションで定義されたクラス、属性、または操作について本質的な認識を持たない。この孤立状態は、意味的整合性において、システムの静的構造(コードアーキテクチャ)が、記述された動作(実行時フロー)を支えられなくなる。
モデルが有効であるためには、クラス図がシーケンス図での使用と正確に一致している必要がある。動的視点でオブジェクトがメッセージを受け取っている場合、その操作は静的視点における対応するクラス定義内に法的に存在しなければならない。明示的な同期がなければ、LLMによって生成されたシグネチャは避けられないほど乖離する。
別々のプロンプトに依存する場合、いくつかの種類の不整合が頻繁に発生し、仕様書が明確さではなく混乱の原因となる。
| 不整合の種類 | 説明 | 例示シナリオ |
|---|---|---|
| 操作の不一致 | 論理上は動作を示唆しているが、視点間で命名規則が異なる。 | クラス図ではcheckout()が定義されているが、シーケンス図ではplaceOrder()という同じプロセスに使用されている。 |
| 孤立要素 | コンポーネントが一つの視点には存在するが、別の視点では正当な理由なく消失する。 | 構造的定義ではCartクラスが目立っているが、行動的ワークフローでは完全に省略されたり、置き換えられている。 |
| 矛盾する制約 | 関係に関するルールが、図の間で互いに矛盾する。 | 構造的視点では1対多の関係が定義されているが、シーケンスの相互作用は厳密な1対1の制約を示唆している。 |
これらの問題を防ぎ、包括的なシステムモデルを確保するため、開発者およびアナリストは整合性を維持するように設計された特定のワークフローとツールを採用すべきである。
最も強固な解決策は、汎用的なテキスト生成ツールから離れて、目的に特化したAIツールを活用することである。これらのプラットフォームは、単一の基盤となるモデルリポジトリを維持する。あるビューで要素が作成されると、それは中央データベースに保存され、他のすべてのビューに自動的に共有・同期されることが保証される。
アジャイルモデリングの実践を採用することで、ずれを軽減できる。これは、順次ではなく並行してモデルを作成することを意味する。たとえば、開発者は短期間で動的ビュー(シーケンス図など)をスケッチし、すぐに補完的な静的ビュー(クラス図)に切り替えて、動的フローで必要な操作が構造に存在していることを確認するべきである。
汎用的なLLMを使用する必要がある場合、ユーザーは同期エンジンとして機能しなければならない。これには、正確なクラス名、属性リスト、メソッド署名などの要素定義を、プロンプト間で細部までコピー&ペーストする必要がある。効果的ではあるが、この方法は手作業であり、人的ミスのリスクが高い。
強力な手法として、一つの図形式を別の形式に変換できるツールを使用する方法がある。たとえば、ユースケースのテキストから直接シーケンス図を生成する。2番目の図が最初の図からプログラム的に導出されるため、既存のモデル要素を引き継ぎ、整合性が保証される。
現代のAI機能は、長文のコンテキスト窓やプロジェクト認識型チャットボットを提供することが多い。開発者はこれらの機能を活用して段階的な更新を行うことができる。図を完全に再生成するのではなく、新しい要件に基づいて、アクティビティ図、シーケンス図、クラス図のすべてを同時に更新するようAIに依頼できるため、一貫性の流れを維持できる。
単一の図作成のスピードよりも調和的な統合を優先することで、チームはUML図を単なる図解から信頼できる技術的参照資料へと変革できる。専用ツールの活用か、厳密なプロンプト戦略のどちらであれ、静的構造と動的振る舞いのつながりを確保することは、成功したシステム開発にとって不可欠である。