delhi09の勉強日記

技術トピック専用のブログです。自分用のメモ書きの投稿が多いです。あくまで「勉強日記」なので記事の内容は鵜呑みにしないでください。

AIでコンテキストマップを生成できないか試してみた

概要

新しいシステムに関わると、システムの概要を把握するためにモデルのコードやER図を眺めたりする。ただ、プロダクションレベルのシステムはテーブル数が多いので片っ端から読んでいてもなかなか全貌を把握するに至らない。

従って、DDDなどの文脈などで出てくる「コンテキストマップ」のようなもう少し概念レベルに抽象化した図がほしくなる。

生成AIであれば、モデルのコードやER図からコンテキストマップを生成してくれるのでは?と思いChatGPTを使って試してみた。

結論としてはうまくいかなかった。

やったこと

spreeというOSSRailsのECフレームワークを題材とした。 github.com

既にissueにて生成済みのER図が公開されている。

https://cloud.githubusercontent.com/assets/1022589/3699479/b82a8114-13d4-11e4-9069-c12fe104e0c5.png

1.ER図を食わせてコンテキストマップを生成させる

ChatGPTにはいつからか画像をアップロードできるようになったので、まずは上記のER図を食わせてコンテキストマップを作成するようにお願いしてみた。

すると、「私の機能では、画像から直接情報を読み取って新たな図を作成することはできません。」と言われてしまった。

従って、この方針は少なくともChatGPTではできないので諦めた。

Railsのモデルのファイル名をテキストで食わせてコンテキストマップを生成させる

テキストならいいのでは?ということで、以下のようなspreeのRailsモデルのファイル名を抽出してこれを渡した上で、コンテキストマップを作成するようにお願いしてみた。(Railsは1モデル1ファイルなので楽だった)

...
./core/app/models/spree/order
./core/app/models/spree/order/digital.rb
./core/app/models/spree/order/address_book.rb
./core/app/models/spree/order/checkout.rb
./core/app/models/spree/order/currency_updater.rb
./core/app/models/spree/order/store_credit.rb
./core/app/models/spree/order/emails.rb
./core/app/models/spree/order/payments.rb
...

すると、「ファイル名だけだとモデル間の相互関係が分からないので正確ではない」と前提を付けた上で今度は画像は描いてくれた。

補足しつつ何度か依頼したところ、以下のような画像たちが生成された。

感想

雰囲気は出ているのだが、満足できる図は作成してくれなかった。

システムの概要を把握する目的なのでシンプルでいいと伝えているのだが、いくら伝えても芸術要素を挟み込んでくる。

私のプロンプトが悪かったり、こういうことしたいのであればもっと向いてる生成AIサービスがあったりするのかもしれないので、引き続きトライしてみたい。