📋

【番外編2】UiPathのXAMLをGemini 3(高速版)で解析してみた——Sonnet 4.5との粒度比較

に公開

はじめに

この記事は、Zenn の次の記事の番外編2です。

  • 本編: 「UiPathのXAMLから仕様を取得する——AIプロンプトで解析・Mermaid化する手順」 (uipath-xaml-mermaid)
  • 番外編1: 「UiPathのXAMLをAIに読ませてみた実録ログ——Claude Sonnet 4.5で解析〜Mermaid化まで」 (uipath-xaml-mermaid-case-sonnet45)

同じ3つのプロンプト(解析用 → 深掘り用 → Mermaid生成用)を、今度は Gemini 3(高速版) に投げてみた結果をまとめます。

  • プロンプトを投げるだけの作業で 3分もかかっていない
  • Claude Sonnet 4.5 より 粒度が細かく 出てきた

という点を中心に、解析結果のダイジェストと番外編1との比較を書きます。


対象ワークフロー(本編・番外編1と同じ)

対象は次の3つの .xaml です。

  • Main.xaml
  • 顧客データ取得フローチャート.xaml
  • 顧客データ登録フローチャート.xaml

役割の概要は番外編1と同様です(config 読み込み → 取得フロー Invoke → 登録フロー Invoke、取得フローは Web スクレイピング+Excel 出力、登録フローは Excel 読み込み+Web へ1行ずつ登録)。


1. 解析用プロンプト → 構造化された表(Gemini 3 の出力)

本編で紹介した「解析用プロンプト」をそのまま Gemini 3 に渡しました。出力はアクティビティ単位で細かく分解されています。

Main.xaml(7ノード)

ユニーク番号 処理の内容 (DisplayName) 処理の種類 (Activity Type) つながるユニーク番号 備考/使用変数
M01 Main Sequence Sequence M02 変数 dt_config (DataTable) を定義
M02 Excel プロセス スコープ ExcelProcessScopeX M03 Excel操作のコンテキストを開始
M03 範囲を読み込み (ワークブック) ReadRange M04 読み込み先: config.xlsx / 出力: dt_config
M04 顧客データ取得 Sequence M05 内部でワークフロー呼び出し
M05 顧客データ取得フローチャートを呼び出し InvokeWorkflowFile M06 呼び出し先: 顧客データ取得フローチャート.xaml / 引数: argument_config ← dt_config
M06 顧客データ登録 Sequence M07 内部でワークフロー呼び出し
M07 顧客データ登録フローチャートを呼び出し InvokeWorkflowFile (End) 呼び出し先: 顧客データ登録フローチャート.xaml / 引数: argument_config ← dt_config

顧客データ取得フローチャート.xaml(15ノード)

ユニーク番号 処理の内容 (DisplayName) 処理の種類 (Activity Type) つながるユニーク番号 備考/使用変数
G01 設定ファイルをdicに Sequence G02 設定情報をDictionary形式に変換
G02 複数代入 (configDict) Multiple Assign G03 configDict = argument_config.AsEnumerable().ToDictionary(...)
G03 複数代入 (保存先パス) Multiple Assign G04 str_inputfileSavepath = configDict("inputFile保存先")
G04 営業獲得データを取得 Sequence G05 WebアプリAからのデータ抽出
G05 ブラウザを使用 (WebアプリA) NApplicationCard G06 Edgeで営業獲得管理システムを表示
G06 クリック '獲得データを表示' NClick G07 データの表示ボタンをクリック
G07 表データを抽出 NExtractData G08 顧客名、獲得日、金額等を抽出。出力: dt_kakutoku
G08 営業獲得Excelファイル作成 Sequence G09 抽出データの加工とファイル出力
G09 データ テーブルを構築 BuildDataTable G10 出力用 dtOutput を定義(オプション有無/品名列を含む)
G10 繰り返し (データテーブルの各行) ForEachRow G11 dt_kakutoku の各行を処理
G11 データ行を追加 AddDataRow G12 備考を分割して「オプション品名」等を抽出。式: If(CurrentRow("備考").ToString.Contains("なし"), "なし", "あり") 等
G12 複数代入 (ヘッダー除去) Multiple Assign G13 dtOutput = dtOutput.AsEnumerable().Skip(1).CopyToDataTable()
G13 Excel プロセス スコープ ExcelProcessScopeX G14 ファイル出力準備
G14 複数代入 (出力パス生成) Multiple Assign G15 excelfullpath = Path.Combine(..., Now.ToString("yyyyMMdd") & "_営業獲得データ_rpa用inputFile.xlsx")
G15 範囲に書き込み (ワークブック) WriteRange (End) 出力先: excelfullpath / シート: 営業獲得データ

顧客データ登録フローチャート.xaml(14ノード)

ユニーク番号 処理の内容 (DisplayName) 処理の種類 (Activity Type) つながるユニーク番号 備考/使用変数
R01 設定ファイルをdicに、登録データ読み込み Sequence R02 設定変換と入力ファイルの読み込み
R02 複数代入 (configDict / パス) Multiple Assign R03 設定Dic化と excelInputFullpath の生成
R03 範囲を読み込み (ワークブック) ReadRange R04 excelInputFullpath から dt_Exceldata を取得
R04 データ登録 Sequence R05 WebアプリBへの登録開始
R05 ブラウザを使用 (WebアプリB) NApplicationCard R06 登録用Webシステムを開く
R06 クリック 'データを登録する' NClick R07 新規登録画面へ遷移
R07 繰り返し (各行の登録) ForEachRow R08 dt_Exceldata の全行をループ
R08 データ登録を実施 Sequence R09 入力項目へのセット
R09 項目入力 (顧客名/獲得日/金額) NTypeInto R10 各 CurrentRow の値を入力
R10 項目選択 (担当/商品/オプション) NSelectItem R11 ドロップダウンから値を選択
R11 入力内容の確認と登録 Sequence R12 登録確定操作
R12 クリック '確認' NClick R13 確認ボタンを押下
R13 クリック '✅ 登録' NClick R14 最終登録ボタンを押下
R14 クリック 'データを登録する' NClick R07(次行) 次のデータの入力画面へ戻る(ループ)

2. 深掘り用プロンプト → 要確認ステップ(Gemini 3 の出力)

同じ「深掘り用プロンプト」を、上記の表に対して投げました。Gemini 3 は表のユニーク番号に合わせて、次の5つを挙げています。

ユニーク番号 該当する観点 深掘りすべき理由
G02 / R02 複雑なVB式・代入 DataTable を1行で Dictionary 化しており、設定ファイルに空行や重複キーがあるとエラーになるため。
G07 画面要素(セレクター) NExtractData でブラウザ上のテーブルを抽出しており、Webサイトの構造変化に最も影響を受けやすいため。
G11 複雑なVB式・分岐 備考欄の文字列から If 文と Split 関数で値を判定・抽出しており、イレギュラーな入力値に弱いため。
G14 / R02 動的なファイルパス生成 実行時の日付(Now)を用いて保存・参照パスを生成しており、日を跨ぐ処理やファイル不在時の挙動確認が必要なため。
R09 / R10 画面要素(セレクター) NTypeInto や NSelectItem が多数あり、WebアプリB側のIDが動的な場合、操作に失敗するため。

番外編1(Sonnet 4.5)では「G03」「R04」「R01」「G01」「R05」のようにまとまったブロックで挙がっていましたが、Gemini 3 では G02/G03、R09/R10 のようにより細かいステップ番号で出てきます。実装時に「どのアクティビティを直すか」を特定しやすい印象です。


3. Mermaid 生成用プロンプト → フロー図コード(Gemini 3 の出力)

表をそのまま Mermaid 用プロンプトに渡したところ、以下の graph TD が得られました。Invoke ノードにスタイルを付けてあり、ループ(R14 → R07)も明示されています。

Mermaid Live Editor や Zenn のプレビューに貼ると、Main → 取得/登録フローの呼び出しと、登録フロー内のループが一覧できます。


4. 番外編1(Sonnet 4.5)との比較

同じプロンプトで、Claude Sonnet 4.5(番外編1) と Gemini 3 高速版(本記事) を比べたときの違いです。

観点 Sonnet 4.5(番外編1) Gemini 3 高速版(本記事)
ノード数 Main 3 / 取得 4 / 登録 5(計12) Main 7 / 取得 15 / 登録 14(計36)
粒度 シーケンス・スコープ単位で「まとめ」寄り アクティビティ単位で細かく分解
深掘り候補 G03, R04, R01, G01, R05 などブロック単位 G02, R02, G07, G11, G14, R09, R10 などステップ単位
Mermaid シンプルで全体把握しやすい ノード数多く、スタイル付きで「どこが重要か」が図で分かる
作業時間 — プロンプトを投げるだけなので 3分未満

プロンプトの文言は「シーケンスやスコープ単位で大きな流れを」としていますが、Gemini 3 はより細かい粒度で解釈しています。設計レビューや移行時の「どのアクティビティを確認するか」を切り出すには Gemini 3 の出力が使いやすく、全体の流れをざっと見るには Sonnet 4.5 のまとまり方が見やすい、という住み分けになりそうです。


5. やってみて分かったこと

  • 同じプロンプトで別エンジンに投げるだけなので、試すコストはとても低い(3分未満で一通り完了)。
  • 粒度の差はエンジンによる解釈の差として受け止められ、どちらも「間違い」ではなく用途で選べる。
  • 深掘り候補は 観点は同じで、番号の細かさが違う 程度なので、本編のプロンプトがエンジンに依存せず機能していると言えそう。
  • 今後、別モデル(例: 他の高速版や大型モデル)でも同じ3プロンプトを試すと、「プロンプトの汎用性」の検証としてさらに説得力が増す。

おわりに

本記事では、本編の同じ3つのプロンプトを Gemini 3(高速版) に渡した結果を整理し、番外編1(Sonnet 4.5)との粒度の違いを比較しました。

  • 解析 → 深掘り → Mermaid の流れはそのまま再現できた
  • 粒度が細かく、実装・レビュー時に参照しやすい
  • プロンプトを投げるだけの作業で 3分もかかっていない

本編のプロンプトが「エンジンが違っても概ね同じ構造で結果が出る」ことを、番外編1・2で確認できました。別エンジンで試すときの参考になれば幸いです。

Discussion