無料で使えるGeminiは、画像入力もできると聞いたので、なんとかOutSystems開発に活かせないか検討してみる。
環境情報
Geminiのアドレス https://gemini.google.com/app
モデルはデフォルトの2.5 Flash。
ODC Studio (Version 1.5.28)
ODC Studioの画像であることがわかるか?
ODC Studioの一部(Server Actionの定義部分)を切り取り、
この画像が何かわかりますか
回答は以下(一部省略、協調は筆者)
この画像は、開発環境または統合開発環境(IDE)の一部を示しているようです。 具体的には、サーバーアクションのリストと、選択されたサーバーアクション「ExceptionTest_ReRaise1」の詳細プロパティを表示しています。
考えられることとしては、以下のようなアプリケーション開発ツールの一部である可能性があります。
ローコード/ノーコードプラットフォーム: OutSystems, Mendix, Salesforce Platformなどのプラットフォームでは、このような視覚的なインターフェースでサーバーサイドのロジックやアクションを定義することがよくあります。 画像の上部にある「Events」「Interface」「Logic」「Data」といったタブも、これらのプラットフォームの典型的な構成要素を示唆しています。
OutSystemsまでは特定できていないが、Low-CodeのIDEというあたりまでついており、製品候補にOutSystemsが入っている。画像だけで、かなりの精度。ただ、特定まではできなかったので、以降のプロンプトでは、OutSystemsと明記する。
要素名の列挙 → 問題なくできた
Server Action名の列挙は問題なくできた。
ODCではまだOutDocがないので、要素の一覧を抽出する代替案として使えるかも。
Server Action
先ほど貼り付けた画像は、ODC Studio (OutSystems Developer Cloud向けのIDE) のスクリーンショットです。
画像からServer Action名を抜き出して列挙してください。
回答は以下の通り。Server Action名のリストが正しく取得できている。
ご提供いただいた情報から、この画像がODC Studioのスクリーンショットであることを確認いたしました。
画像に表示されているServer Action名を以下に列挙します。
ExceptionTest_ReRaise1
ExceptionTest_ReRaise2
ExternalLogicPerformanceTest
Facade
OneMinuteTimer
OneMinuteTimer_Wake
OnlineBatchTimer
RecordToJson
RequestOnlineBatch
SendResetPasswordEmail
Serializejsontestonclickclient
ThreeMinutesTimer
TimeoutTestServerAction
UpdateUser
ZipTestDownload
ZipTestUpload
EntityとAttribute
この画像はODC Studioで、OutSystemsSampleDataから参照したEntityとそれぞれのAttributeを表示したものです。名前を抽出してください。
回答は以下の通り。
はい、承知いたしました。ODC Studioの画像から、OutSystemsSampleDataのEntity名とそれぞれのAttribute名を抽出します。
Entity名:
- OutSystemsSampleData
- Sample_Office
- Sample_OfficeReviews
- Sample_Reviews
Attribute名:
- Sample_Office:
- Id
- Name
- Address
- Latitude
- Longitude
- Sample_OfficeReviews:
- Id
- OfficeId
- ReviewId
- Sample_Reviews:
- Id
- Review
- Rating
- ReviewedBy
- ReviewedOn
Excelフォーマットで出力できるか? → できなかったがCSVやGoogle Spreadsheetsフォーマットでの出力はできた
資料にまとめるときはExcelで出せると便利なので聞いてみた。
この内容Excelフォーマットで出力できる?
回答。だめだったがCSVが行けるなら十分。他の生成AIならOffice出せるものもありそう。ちなみに、回答にはGoogle Spreadsheetsとして出力するオプションがついていたので、GeminiはGoogle Spreadsheetsなら出力できるようだ。
Excelファイルとして直接出力することはできませんが、Excelにコピー&ペーストしやすいように、CSV形式でデータを提供することは可能です。
以下の内容をテキストエディタにコピーして .csv 拡張子で保存するか、直接Excelに貼り付けることで、Excelで利用できます。
Type,Name,Parent_Entity
Entity,OutSystemsSampleData,
Entity,Sample_Office,OutSystemsSampleData
Attribute,Id,Sample_Office
Attribute,Name,Sample_Office
Attribute,Address,Sample_Office
Attribute,Latitude,Sample_Office
Attribute,Longitude,Sample_Office
Entity,Sample_OfficeReviews,OutSystemsSampleData
Attribute,Id,Sample_OfficeReviews
Attribute,OfficeId,Sample_OfficeReviews
Attribute,ReviewId,Sample_OfficeReviews
Entity,Sample_Reviews,OutSystemsSampleData
Attribute,Id,Sample_Reviews
Attribute,Review,Sample_Reviews
Attribute,Rating,Sample_Reviews
Attribute,ReviewedBy,Sample_Reviews
Attribute,ReviewedOn,Sample_Reviews
運用ドキュメントしてSettingリスト作れるか? → できた
ODC PortalでAppのSettings部分のスクリーンショットを取って聞いてみた。
残念ながらODC Portalのリストは1ページあたりの件数が少なすぎるが、いくらか実用性はありそう。
ODC PortalであるAppのSetting一覧を表示した画像です。
これを運用ドキュメントとして管理したいのでCSVにして下さい。
回答(一部省略)。アイコンで表現されているLibrary列も適当な値で埋めてくれている(ただし、S=OutSystemsの標準設定というのは正しくなく、実際はSharePoint接続用コンポーネント。ただ、これはアイコンだけから判断するのは厳しいので仕方ない)。
Library_Icon,Name,Current Value
S,client_id,********
S,client_secret,********
S,site_domain,
S,site_name,
S,tenant_id,
GoogleMaps,GoogleMapsServerKey,********
GoogleMaps,GoogleMapsVersion,3.58
,AlwaysErrorEventSwitch,False
,LoopStopper,False
,QiitaAPI_AccessToken,********
,SecondsToSleep,10
,SwitchForTweMinutesTimer,True
補足:
Library_Icon列: アイコンの種類(S = OutSystemsの標準設定、GoogleMaps = Google Maps関連)を識別するために追加しました。
Current Value列の伏字: セキュリティ上の理由から、画像で伏字になっている値(********)はそのまま伏字で表記しています。実際のドキュメントには、必要に応じて適切な値を記載してください。
ER図の解釈
ODC Studio上にEntityをドラッグ&ドロップすることで作成できる、Entity Diagramsをスクリーンショットして、聞いてみた。なお、配置されているEntityは、(System)に含まれるWorkflow関連のもの。
これはODC Studio上のEntity Diagramsのスクリーンショットです。
ここから何が読み取れますか?
回答(結構なボリュームだったので、ポイントだけピックアップ)
1 エンティティの構造:
- ActivityDefinition:
- Id (識別子)
- Key (ユニークなキー)
- Name (活動の定義名)
- Kind (活動の種類)
Entity内のAttribute名を正しく拾えている。括弧内はAttribute名から推測される意味が入っている。このように推測してくれるということは、AI利用を考えても適切な命名の価値が感じられる。
2 エンティティ間のリレーションシップ(関連性):
- 1対多(One-to-Many)の関係:
- ProcessDefinition から ProcessInstance へ: 1つのプロセス定義から複数のプロセスインスタンスが生成されます。
(中略)
- ActivityInstance から HumanActivityInstance へ: 1つのアクティビティインスタンスは、人間が関与するアクティビティの場合に1つのHumanActivityInstanceを持つ(ただし、HumanActivityInstanceのキーがActivityInstanceIdなので、実質的に1対1か、少なくともActivityInstanceが親)。
関連の多重度も概ね正しく読み取れている(ProcessDefinitionとProcessInstanceなど)。ActivityInstanceとHumanActivityInstanceの関連は、後者のIdに前者のIdを使っているので、OutSystems的には1:1 (実質的には、HumanActivityの時のみ後者のレコードができるだろうから、1:0..1)なのでちょっと違うかと思いつつも、括弧内の補足を見ると結果的には正しい。
Action Flowの解釈 → ある程度読み取ってくれそうだが、実用には厳しいかも
で作成したAction Flow(配置したアイコンは14個)を渡し、以下のプロンプトで聞いてみた。
OutSystemsで作成したAction Flowです。
OutSystemsはローコードなので、ロジックの各ステップはグラフィカルなアイコンで表されます。
以上を踏まえて、記述されているロジックを抜き出して下さい。
回答を見ると、ロジックの流れは追えてそうだが、OutSystems固有の実装要素(Aggregateなど)の知識が不足していそう、またこの方法だと各アイコンのプロパティを渡せないので、実用に供する方法はちょっと思いつかない。
なお、Flowに配置しておいたコメントは読み取って、ロジックの判断にうまく活かせていた。
感想
画像が何であるか、コンテキストを補ってあげたほうがよさそうだった(ODC Studioのスクリーンショットである、など)。
AIを生かすにも、適切な命名規則やコメントは重要そう。
要素を列挙する要素には使えそう。特にODCではOutDoc相当の機能がまだないので、画像を渡して列挙できるとちょっと楽になる。
ただし、おそらくほとんどの環境で、IDE画像を貼り付けるわけにはいかないだろうから、OutSystemsが提供してくれるとかでないと難しいかも。
ODC Studioに組み込んでくれるといいんだが。