ワークフローで活用する(モデルレビュー編)
本ページでは、『Next Design のモデル情報』と『外部ファイルに定義したレビュー観点』を組み合わせ、AIエージェントによるモデルレビューと Excel への結果出力を自動化する方法を解説します。
本ページでは、ワークフロー、変数、ループ処理、ツール実行などの基本操作を理解していることを前提としています。
初めてワークフローを作成する場合は、先にワークフローで活用する(基本編)を確認してください。
今回のゴール
Next Design のモデルを観点別にレビューするワークフローの構築方法を学び、以下のことができる状態を目指します。
- Next Design モデルやレビュー観点など、複数の情報を組み合わせた繰り返し処理を作成できる
- Next Design のモデル情報と外部ファイルの情報を、AIエージェントへの入力として利用できる
- AIエージェントの出力を整形 し、外部へ出力できる
処理の流れ
本ページでは、以下の流れで解説します。
- モデルレビューに必要なツールとAIエージェントの準備
- 複数のモデルとレビュー観点を組み合わせてレビューするワークフローの作成
- 作成したワークフローの実行とレビュー結果の確認
事前準備
本ページのチュートリアルを実施するには、以下の環境が必要です。
| ツール | バージョン |
|---|---|
| Agentiqs | 1.1 以降 |
| Next Design | 4.0.14.50616 以降 |
また、本チュートリアルでは、 「サンプルデータ 」の以下のファイルを使用します。
C:\agentiqsSampleData\tutorial\next-design-integration\workflow-model-review\input
- 組込みソフト開発.nproj:レビュー対象の Next Design プロジェクト
- reviewPointList.json:レビュー観点
本チュートリアルと同じ操作を行う場合は、あらかじめサンプルデータの環境を構築してください。
1. 利用するツールと AIエージェントを準備する
ツールの作成
-
[ツール] -[新規作成] から、ワークフローで利用する以下のツールを追加します。
infoすでに対象のツールを作成している場合は、この手順は不要です。
ツール 用途 File Access レビュー観点ファイルの読み込みに利用します。 Next Design AIエージェントで Next Design のモデル情報を取得するために利用します。 Next Design Functions ワークフローで Next Design を操作するために利用します。 Microsoft Excel レビュー指摘を Excel に出力する際に利用します。 -
File Access ツールのベースディレクトリにレビュー観点ファイルがあるフォルダを指定します。
サンプルデータを利用する場合は、C:\agentiqsSampleData\tutorialを指定してください。
AIエージェントの準備
-
[エージェント] - [新規作成]を実行し、エージェントギャラリーから『Next Design モデル編集』を選択します。
-
レビューエージェントの基本情報を設定します。

設定項目
設定項目 必須 設定内容 詳細説明 タイトル Next Designモデルレビューエージェント 後から判別できる、わかりやすい名前にしてください。 説明 Next Designの設計モデルを対象に、単一のレビュー観点だけで
記載不足・矛盾・不整合・不明確さを判定し、結果をJSON配列のみで返すレビュー専用エージェントです。システムプロンプト 〇 下記「システムプロンプトの設定内容」を記載してください。 レビューに必要な情報を設定 -
システムプロンプトの設定内容(テキスト欄右上の「□」をクリックしてコピーしてください。)
システムプロンプトを変更する場合出力項目のキー名を変更すると、後続のExcel出力処理も変更する必要があります。
プロンプトを修正する場合、合わせて後続のワークフローも修正してください。
あなたは設計書レビュー専用エージェントである。入力された「Next Designの設計モデルの内容」と「単一のレビュー観点」に対してレビューを実施し、結果をJSON配列のみで出力すること。【入力】- review_point: レビュー観点- target_model: レビュー対象のモデル情報【レビュー方針】- review_point のみを基準に判定し、それ以外の観点で指摘しない。- target_modelに記載された事実のみを根拠に判断し、推測しない。- 問題の有無は target_model内の記述に基づいて判定する。- 該当箇所が見当たらない場合も、その事実を根拠に結果を出力 する。- 同一内容の重複指摘はしない。【出力ルール】- 出力はJSON配列のみとする。- 各要素は以下のキーを必ず含むこと。- "location"- "description"- "viewPoint"- "priority"- "status"- キー名は固定とし、値はすべて文字列とする。- JSON以外の文字は出力しない。【各項目】- "location": 指摘箇所を特定する情報として、対象モデルのパス情報とフィールド名。パス情報は入力で渡されたモデル(target_model)からのパスとすること。IDなど人が 見てもわからないものは記載しない。- 例:target_model = "目標車速演算"で、その配下の"目標車速設定/タップアップ"モデルの識別子フィールドに指摘がある場合、下記の出力となる。"モデル:目標車速演算/目標車速設定/タップアップフィールド:識別子"- "description": 指摘内容を記載する。何が不足・不整合・不明確かを明示する。指摘はですます調で統一し、読みやすいように改行をいれること。指摘がない場合は「<指摘なし> 確認済み・問題なし」とする。- "viewPoint": 入力のreview_pointのTitleを設定する。- "priority": "高" / "中" / "低" のいずれかのみ。- "status": 指摘ありは "Open"、指摘なしは "Closed"。【判定ルール】- review_point に照らして、記載不足、矛盾、不整合、不明確さ、不備が確認できる場合は指摘ありとする。- review_point に照らして問題が確認できない場合は"<指摘なし>"を出力する。- 判定に必要な情報が不足している場合は指摘ありとし、不足内容をdescriptionに具体的に記載する。【出力件数】- review_point に対して複数の独立した問題がある場合は複数件出力すること。- 問題が1件もない場合でも、"<指摘なし>"を1件出力すること。【禁止事項】- review_point 以外の観点での評価- 根拠のない推測- 抽象的すぎる指摘- 同じ意味の重複指摘- キー不足、表記ゆれ、JSON以外の出力 -
2. ワークフローを作成する
本ワークフローは、以下の構成にすることで Next Designで選択したコンポーネント配下のソフトウェアユニットを、『AIエージェントがレビュー観点ごとにレビュー』し、『レビュー結果を整形してExcelに一覧を出力』します。
- 入力パラメータを設定する
- レビュー観点ファイルを読み込む
- レビュー対象のソフトウェアユニットを取得する
- Excel出力の準備を行う
- ソフトウェアユニットごとに、配下のモデル情報を取得する
- レビュー観点ごとにAIエージェントへレビューを依頼する
- レビュー結果を整形してExcelへ出力する
実運用で活用する場合は、対象プロジェクトのメタモデル構造やレビュー方法に合わせて『取得対象』、『レビュー観点』、『出力形式』を変更してください。
1. 入力パラメータを設定する
[ワークフロー設定] - [入出力パラメータ] - [入力パラメータ]を開き、レビュー観点ファイルのパスを入力パラメータとして追加してください。


パラメータの設定項目
| 設定項目 | 設定値 | 説明 |
|---|---|---|
| 変数名 | reviewPointsFilePath | 後から判別できる、わかりやすい名前にしてください。 |
| 説明 | レビュー観点ファイルのパスを保持します。 | 変数の用途が分かるように設定してください。 |
| デフォルト値 | ※のパス | 入力しておくことで、ワークフロー実行時に毎回入力する手間を省けます。 |
※C:\agentiqsSampleData\tutorial\next-design-integration\workflow-model-review\input\reviewPointList.json
2. レビュー観点ファイルを読み込む
"ツール実行"をドラッグ&ドロップで配置し、プロパティを設定してください。

プロパティの設定項目
指定されたレビュー観点ファイルを読み込みます。
| プロパティ | 必須 | 設定項目 | 詳細説明 |
|---|---|---|---|
| タイトル | レビュー観点ファイルの読み込み | 後から判別できる、わかりやすい名前にしてください。 | |
| 説明 | 指定されたレビュー観点ファイルを読み込みます。 | ステップで実施する内容です。 | |
| ツール名 | 〇 | File Access | レビュー観点ファイルを読み込むためのツールです。 |
| 関数名 | 〇 | ReadFile | テキストファイルを読み込みます。 |
| path | 〇 | {{reviewPointsFilePath}} | 入力パラメータで指定した観点ファイルのパスです。 |
| 結果格納先 | 〇 | reviewPoints | 読み込んだ観点ファイルの内容を格納します。 |
3. レビュー対象のソフトウェアユニットを取得する
-
選択中のコンポーネントモデルIDを取得します。
"ツール実行"をドラッグ&ドロップで配置し、プロパティを設定してください。
プロパティの設定項目
ナビゲータで現在選択されている、レビュー対象のコンポーネントモデルのIDを取得します。
プロパティ 必須 設定項目 詳細説明 タイトル 対象コンポーネントモデルID取得 後から判別できる、わかりやすい名前にしてください。 説明 ナビゲータで現在選択されているレビュー対象の
コンポーネントモデルIDを取得します。ステップで実施する内容です。 ツール名 〇 Next Design FunctionsNext Designのモデル情報を取得するためのツールです。 関数名 〇 GetNavigatorSelectedModelId選択中モデルのIDを取得します。 結果格納先 〇 componentModelIdコンポーネントモデルIDを格納します。 -
配下のソフトウェアユニットを取得します。
"ツール実行"をドラッグ&ドロップで配置し、プロパティを設定してください。
プロパティの設定項目
選択中のコンポーネントモデルIDを起点に、レビュー対象となるソフトウェアユニットを取得します。
プロパティ 必須 設定項目 詳細説明 タイトル ソフトウェアユニット一覧の取得 後から判別できる、わかりやすい名前にしてください。 説明 選択中のコンポーネントモデル配下の
ソフトウェアユニットを取得します。ステップで実施する内容です。 ツール名 〇 Next Design FunctionsNext Designのモデル情報を取得するためのツールです。 関数名 〇 GetChildren子要素を取得します。 parentId 〇 {{componentModelId}}選択中のコンポーネントモデルIDを指定します。 fieldName 〇 SoftwareUnitソフトウェアユニット配下の要素を取得します。 結果格納先 〇 unitModels取得したユニット一覧を格納します。
4. Excel出力の準備を行う
-
出力用変数を初期化します。
"変数設定"をドラッグ&ドロップで配置し、プロパティを設定してください。
プロパティの設定項目
Excelへの出力行とレビュー結果の通し番号を初期化します。
プロパティ 必須 設定項目 詳細説明 タイトル Excel出力用の変数を初期化 後から判別できる、わかりやすい名前にしてください。 説明 Excelへの出力行とレビュー結果の通し番号を
初期化します。ステップで実施する内容です。 設定方法 〇 Overwrite現在値を上書きします。 変数名 〇 excelRowCursorExcelへ出力する現在行です。 値 〇 2ヘッダ行の次の行から出力を開始します。 変数名 〇 issueCountレビュー結果の通し番号です。 値 〇 0レビュー結果の通し番号の初期値です。 -
Excelシートを追加します。
"ツール実行"をドラッグ&ドロップで配置し、プロパティを設定してください。
プロパティの設定項目
レビュー指摘を出力するシートを追加します。
プロパティ 必須 設定項目 詳細説明 タイトル レビュー指摘シートの追加 後から判別できる、わかりや すい名前にしてください。 説明 「レビュー指摘」シートを追加します。
既にシートが存在する場合は何も行いません。ステップで実施する内容です。 ツール名 〇 Microsoft ExcelExcelを操作するためのツールです。 関数名 〇 AddSheetシートを追加します。 sheetName 〇 レビュー指摘 追加するシート名です。 結果格納先 result実行結果を格納します。 成功判定格納先 〇 isSuccess成功可否を格納します。 -
ヘッダ行を出力します。
"ツール実行"をドラッグ&ドロップで配置し、プロパティを設定してください。
プロパティの設定項目
レビュー指摘シートの1行目に一覧のヘッダを出力します。
プロパティ 必須 設定項目 詳細説明 タイトル Excelのヘッダ行出力 後から判別できる、わかりやすい名前にしてください。 説明 レビュー指摘シートの1行目に一覧のヘッダを出力します。 ステップで実施する内容です。 ツール名 〇 Microsoft ExcelExcelへ書き込みます。 関数名 〇 SetCellValues指定セルへ値を書き込みます。 rangeAddress 〇 レビュー指摘!A1:F1ヘッダ行の出力先です。 values 〇 [["ID","該当箇所","指摘内容","観点","優先度","ステータス"]]1行目に出力するヘッダです。 wrapText true必要に応じて折り返し表示を設定します。 applyBorders true表として見やすくするため罫線を設定します。
5. ソフトウェアユニットごとに、配下のモデル情報を取得する
-
ユニットモデルごとのループ処理を設定します。
"ループ処理"をドラッグ&ドロップで配置し、プロパティを設定してください。
プロパティの設定項目
レビュー対象のユニットモデルを1件ずつ取り出して後続処理に渡します。
プロパティ 必須 設定項目 詳細説明 タイトル ユニットモデルごとのループ処理 後から判別できる、わかりやすい名前にしてください。 説明 レビュー対象のユニットモデルを1件ずつ取 り出して後続処理に渡します。 ステップで実施する内容です。 反復対象 〇 {{unitModels}}レビュー対象のユニット一覧です。 アイテム変数 〇 unit現在処理中のユニットを格納します。 最大実行回数 3 ループの上限数を設定することができます。対象件数に応じて設定してください。
ここでは、デバッグ用に3を設定します。 -
ユニット配下の全要素取得を設定します。
"ツール実行"をドラッグ&ドロップで"ユニットモデルごとのループ処理"内に配置し、プロパティを設定してください。
プロパティの設定項目
レビュー対象ユニットの全子孫モデルを取得します。
プロパティ 必須 設定項目 詳細説明 タイトル ユニット配下の全要素取得 後から判別できる、わかりやすい 名前にしてください。 説明 レビュー対象ユニットの全子孫モデルを取得します。 ステップで実施する内容です。 ツール名 〇 Next Design FunctionsNext Designのモデル情報を取得するためのツールです。 関数名 〇 GetAllChildren対象配下の全要素を取得します。 parentId 〇 {{unit.Id}}現在処理中のユニットIDを指定します。 結果格納先 〇 unitElements取得した全要素を格納します。
6. レビュー観点ごとにAIエージェントへレビューを依頼する
-
レビュー観点ごとのループ処理を設定します。
"ループ処理"をドラッグ&ドロップで"ユニットモ デルごとのループ処理"内に配置し、プロパティを設定してください。
プロパティの設定項目
レビュー観点の一覧を1件ずつ取り出して後続処理に渡します。
プロパティ 必須 設定項目 詳細説明 タイトル レビュー観点ごとのループ処理 後から判別できる、わかりやすい名前にしてください。 説明 レビュー観点の一覧を1件ずつ取り出して後続処理に渡します。 ステップで実施する内容です。 反復対象 〇 {{reviewPoints}}レビュー観点の一覧です。 アイテム変数 〇 reviewPoint現在処理中の観点を格納します。 最大実行回数 〇 3 ループの上限数を設定することができます。ループのレビュー観点数に応じて設定してください。
ここでは、デバッグ用に3を設定します 。 -
AIレビュー実行を設定します。
"AIエージェント"をドラッグ&ドロップで"レビュー観点ごとのループ処理"内に配置し、プロパティを設定してください。
プロパティの設定項目
ユニット情報とレビュー観点を指定のAIエージェントへ渡してレビュー結果を取得します。
プロパティ 必須 設定項目 詳細説明 タイトル AIレビュー実行 後から判別できる、わかりやすい名前にしてください。 説明 ユニット情報とレビュー観点を指定のAIエージェントに渡してレビュー結果を取得します。 ステップで実施する内容です。 エージェント名 〇 Next Designモデルレビューエージェント「AIエージェントの準備」で作成したレビュー用AIエージェントです。 AIのモデル名 〇 gpt-5.2利用 するAIモデルを指定してください。 ユーザーメッセージ 〇 下記を設定する ユニット情報とレビュー観点を渡します。 結果格納先 〇 issuesレビュー結果を格納します。 ユーザーメッセージの内容:
入力の Next Designモデルをレビュー観点に沿ってレビューし、レビュー結果をJSON形式で出力せよ。レビュー対象モデル:{{unit}}レビュー観点:{{reviewPoint}}子モデル一覧:{{unitElements}}
7. レビュー結果を整形してExcelへ出力する
-
issuesのJSON整形を設定します。
"Pythonスクリプト"をドラッグ&ドロップで"レビュー観点ごとのループ処理"内に配置し、プロパティを設定してください。
プロパティの設定項目
AIレビュー結果の
issuesを JSON配列として解析し、後続処理で扱える形に整えます。AIエージェントのシステムプロンプトで出力をJSON形式に限定していても、利用するAIモデルや応答内容によっては、
Markdown のコードブロックや外側の引用符が付く場合があります。
このスクリプトは、それらを除去して JSON配列として扱える形式に補正します。プロパティ 必須 設定項目 詳細説明 タイトル issuesのJSON整形 後から判別できる、わかりやすい名前にしてください。 説明 AIレビュー結果のissuesをJSON配列として解析し後続処理で扱える形に整えます。 ステップで実施する内容です。 Pythonコード 〇 以下のコードを貼り付ける JSON配列として解析できるように補正します。 Pythonコード:
import reimport jsonraw = getattr(vars, 'issues', None)def try_parse(text):try:return json.loads(text)except ValueError:return Nonedef strip_code_fence(text):if text is None:return texttext = text.strip()fence = re.compile(r'^\s*```(?:json)?\s*([\s\S]*?)\s*```\s*$',re.IGNORECASE)m = fence.match(text)return m.group(1).strip() if m else textdef strip_wrapping_quotes(text, max_times=2):s = text.strip()for _ in range(max_times):if len(s) >= 2 and ((s[0] == '"' and s[-1] == '"') or(s[0] == "'" and s[-1] == "'")):s = s[1:-1].strip()else:breakreturn sif isinstance(raw, list):vars.issues = rawelse:s = '' if raw is None else str(raw)s = s.strip()s = strip_code_fence(s)s = strip_wrapping_quotes(s)parsed = try_parse(s)if parsed is None:try:s2 = bytes(s, 'utf-8').decode('unicode_escape')except UnicodeDecodeError:s2 = ss2 = strip_code_fence(s2)s2 = strip_wrapping_quotes(s2)parsed = try_parse(s2)else:s2 = sif parsed is None:for candidate in (s2, s):start = candidate.find('[')end = candidate.rfind(']')if start != -1 and end != -1 and end > start:parsed = try_parse(candidate[start:end + 1])if parsed is not None:breakif parsed is None:raise Exception('issues を JSON として解析できませんでした。出力の形式を確認してください。')if not isinstance(parsed, list):raise Exception('issues は JSON配列である必要があります。')vars.issues = parsed -
指摘一覧のループ処理を設定します。
"ループ処理"をドラッグ&ドロップで"レビュー観点ごとのループ処理"内に配置し、プロパティを設定してください。
プロパティの設定項目
AIエージェントが返した指摘一覧を1件ずつ取り出して後続処理に渡します。
プロパティ 必須 設定項目 詳細説明 タイトル 指摘一覧のループ処理 後から判別できる、わか りやすい名前にしてください。 説明 AIエージェントが返した指摘一覧を1件ずつ取り出して後続処理に渡します。 ステップで実施する内容です。 反復対象 〇 {{issues}}AIエージェントが返した指摘一覧です。 アイテム変数 〇 issue1件ずつの指摘データを保持します。 最大実行回数 〇 3 想定件数に応じて設定してください。
ここでは、デバッグ用に3を設定します。 -
レビュー結果の通し番号を更新します。
"変数設定"をドラッグ&ドロップで"指摘一覧のループ処理"内に配置し、プロパティを設定してください。
プロパティの設定項目
指摘ごとに、カウント変数をインクリメントします。
プロパティ 必須 設定項目 詳細説明 タイトル 指摘数カウント変数をインクリメント 後から判別できる、わかりやすい名前にしてください。 説明 指摘ごとにカウント変数をインクリメントします。 ステップで実施する内容です。 設定方法 〇 Overwrite現在値を上書きします。 変数名 〇 issueCount指摘の通し番号です。 値 〇 {{issueCount+1}}現在値に1を加算します。 -
Excelへの指摘行出力を設定します。
"ツール実行"をドラッグ&ドロップで"指摘一覧のループ処理"内に配置し、プロパティを設定してください。
プロパティの設定項目
現在の指摘データをレビュー指摘シートの対象行へ出力します。
プロパティ 必須 設定項目 詳細説明 タイトル Excelへの指摘行出力 後から判別できる、わかりやすい名前にしてください。 説明 現在の指摘データをレビュー指摘シートの対象行へ出力します。 ステップで実施する内容です。 ツール名 〇 Microsoft ExcelExcelへ書き込みます。 関数名 〇 SetCellValues指定セルへ値を書き込みます。 rangeAddress 〇 {{"レビュー指摘!A" + excelRowCursor + ":F" + excelRowCursor}}現在行に1件分を出力します。 values 〇 下記参照 指摘1件分の値を出力します。 wrapText true長文を折り返して表示します。 applyBorders true罫線を設定します。 valuesの値:
[["{{issueCount}}",{{issue.location|to_json}},{{issue.description|to_json}},{{issue.viewPoint|to_json}},{{issue.priority|to_json}},{{issue.status|to_json}}]] -
Excel行番号を更新します。
"変数設定"をドラッグ&ドロップで"指摘一覧のループ処理"内に配置し、プロパティを設定してください。
プロパティの設定項目
次の指摘を次行へ出力できるようにExcelの行番号を1つ進めます。
プロパティ 必須 設定項目 詳細説明 タイトル Excel行番号の更新 後から判別できる、わかりやすい名前にしてください。 説明 次の指摘を次行へ出力できるようにExcelの行番号を1つ進めます。 ステップで実施する内容です。 設定方法 〇 Overwrite現在値を上書きします。 変数名 〇 excelRowCursor更新対象の内部変数です。 値 〇 {{ excelRowCursor + 1 }}1行進めます。
3. ワークフローを実行する
作成したワークフローを実行します。
レビュー対象モデルの選択状態やレビュー観点ファイルの形式が
ワークフローの想定と異なる場合、期待したレビュー結果を取得できないことがあります。
- Next Designのファイル(組込みソフト開発.nproj)を開き、対象のソフトウェアコンポーネントを選択します。
サンプルの場合:
組込みソフト開発/ソフトウェアコンポーネント設計/APPレイヤ/車速偏差算出 - Excelを起 動し、レビュー結果の出力先として使用するブックを開きます。
- すでに指摘が記載されている場合は削除し、指摘がない状態としてください。
- ワークフロー右上の[実行]をクリックします。
- 「ワークフロー実行パラメータ」のダイログで[実行]をクリックします。
ループ回数が多いと処理時間が長くなり、トークンの消費量も増加します。
今回はデバッグ用にループ回数を「3」に減らした手順にしています。
動作確認後に、本番用の回数に変更してください。
4. 実行結果を確認する
ワークフローが正常に完了すると、Excelのレビュー指摘シートにレビュー結果が出力されます。
以下の項目が出力されているか確認してください。
- ID
- 該当箇所
- 指摘内容
- 観点
- 優先度
- ステータス

次のステップ
本チュートリアルはサンプルケースです。
実運用に向けて以下を変更して活用してください。
- レビュー観点ファイル:内容を差し替えることで、同じワークフロー構成のまま別観点のレビューにも利用できます。
- 対象プロジェクトのメタモデル構造を確認し、対象モデルの階層やフィールド構成に合わせて、
ワークフローのループ構造、フィールド名、モデル階層を変更してください。