MATLAB と Simulink の
生成 AI は、人間とコンピュータとの関わり方を変え続けています。かつては、LLM にエンジニアリングの課題を解決させようとすると、コードを何度もコピーして、手作業でエラーを修正しながら、今度こそ AI が自分の専門分野を正しく理解してくれたはずだと期待する、といった状況になりがちでした。より大きな価値は、推論して、行動し、MATLAB や Simulink のワークフローを自律的に実行できる AI システムによってもたらされます。この変革を実現するのが、エージェント型 AI です。
このガイドでは、解決策を提示し、それを実行する AI システムの構築方法を紹介します。Model Context Protocol (MCP) と新しいエージェント型 AI を通じて LLM を MATLAB や Simulink と連携させることで、コード記述、モデル作成、シミュレーション実行、結果分析をジョブが完了するまで繰り返す AI エージェントを作成することができます。
MATLAB コードの作成に ChatGPT® や Claude® を使ったことがあれば、お決まりの流れはご存じでしょう。質問するとコードが返ってきて、それを MATLAB に貼り付けて実行し、エラーが出たらチャットに戻って内容を説明し、新しいコードを受け取り、また同じことを繰り返す。確かに使えますが、時間がかかり、ストレスもたまります。
エージェント型 AI は、この繰り返し作業を解消します。
非エージェント型 AI |
エージェント型 AI |
|
要求に応じてコードスニペットを生成 |
→ |
コードの記述と直接実行 |
手作業によるコードのコピー、ペースト、実行が必要 |
→ |
タスク完了までの繰り返し処理 |
エラーの解釈や追加指示は人間に依存 |
→ |
エラー検出と自動修正 |
ファイルやデータへのアクセスは不可能 |
→ |
ワークスペースやデータへのアクセス |
コードが実際に動作するか検証できない |
→ |
テスト可能な動作する結果の提供 |
チャットボットを頼れる相棒に変える 4 つの能力
非エージェント型 AI は、レポートを作成するコンサルタントのようなものです。エージェント型 AI は、実際に仕事をこなす相棒のような存在です。問題を解決し、その結果を示したうえで、変更が必要かどうかを確認します。
| 能力 | 説明 | MATLAB 例 |
|---|---|---|
| 推論 | 複雑な問題を手順ごとに分解する | 「このコントローラーを最適化するために、まずプラントを解析して、次に PID を設計し、最後に調整する」 |
| 計画 | 目標達成に向けてアクションを順序立てる | 「ステップ 1: データ読み込み、ステップ 2: モデル学習、ステップ 3: 検証、ステップ 4: エクスポート」 |
| ツール活用 | 外部関数や API を呼び出す | trainnet、sim、または独自の MATLAB 関数を呼び出す |
| 適応 | フィードバックやエラーから学習 | 「エラー発生、次元を確認して再試行」 |
なぜ MATLAB と Simulink をエージェント型 AI と統合するのか?
MATLAB と Simulink は、工学や科学分野で活用されるエージェント型 AI に特に適しています。主な理由は以下のとおりです。
- モデルベースデザイン: 複雑なシステムを構築し、展開前にシミュレーションやテストを実施
- シミュレーション機能: Simulink と連携し、システムレベルのテストや検証が可能
- 特定分野の専門知識: 信号処理、制御、ディープラーニングなどに対応した 100 以上のツールボックスが利用可能
- 専門的なツール: コード解析、可視化、展開機能などを標準搭載
- 信頼性の高い計算: LLM は数学に関して誤った結果を出すことがあるが、MATLAB は正確な計算が可能
LLM が MATLAB と連携するには、利用可能なツールを検出して、適切なパラメーターで呼び出し、結果を受け取る仕組みが必要です。MCP は、この仕組みを提供する標準フレームワークで、AI とツールのやり取りを可能にします。MCP は、AI 向けの USB-C ポートのようなものです。USB-C があらゆるデバイスを周辺機器につなげるように、どんな AI モデルでもさまざまなツールにつなげることができます。その中に MATLAB と Simulink も含まれます。
MCP Server は、AI のリクエストを MATLAB が理解できる形に変換して計算できるようにします。AI エージェントが何を行うかを決定し、MATLAB が計算を実行します。
インストール
GitHub から MATLAB MCP Server を入手します。
# Clone the repository git clone https://github.com/matlab/matlab-mcp-server # Follow setup instructions for your AI client # (Claude Desktop, VS Code with Copilot, Gemini CLI, etc.)
MCP Server は基盤となる接続機能を提供し、Simulink Agentic Toolkit はそれを拡張してモデル固有の機能を使えるようにします。MATLAB Agentic Toolkit と Simulink Agentic Toolkit のいずれも、このプロトコルをベースに構築されています。
MATLAB Agentic Toolkit は、GitHub で公開されている無料のオープンソース パッケージで、AI コーディング エージェントに MATLAB に関する専門知識と、ローカルの MATLAB セッションへのライブ接続を提供します。このツールキットは 2 つの要素で構成されており、MATLAB MCP Server と厳選されたエージェントスキル一式が含まれます。
MATLAB Agentic Toolkit を使用して、フィルター アナライザー アプリで FIR フィルター設計を比較する AI エージェント。
2 つの構成要素: MCP Server とエージェントスキル
MATLAB MCP Server
MCP Server は、MCP 対応のあらゆるエージェントに対して、ユーザーのマシン上で実行されている MATLAB への直接アクセスを提供します。このサーバーには、以下の 5 つの組み込みツールが用意されています。
| ツール | 説明 |
evaluate_matlab_code |
MATLAB コードを実行し、コマンドウィンドウの出力を返します。 |
run_matlab_file |
MATLAB のプログラムファイルを実行します。 |
run_matlab_test_file |
runtests 関数を使ってテストを実行し、結果の合否を構造化された形式で返します。 |
check_matlab_code |
コードアナライザーを使用して静的解析を行います。 |
detect_matlab_toolboxes |
インストールされている MATLAB のバージョンとツールボックスを一覧表示します。 |
このサーバーはさらに、MCP サーバーを利用する AI システム向けに特別に用意された 2 つの MCP リソースを提供します。matlab_coding_guidelines は AI に適切な MATLAB コードを作成する方法を教えるドキュメントで、plain_text_live_code_guidelines は AI にプレーンテキスト形式のライブスクリプトを生成する方法を説明するドキュメントです。AI エージェントは、このリソースを必要に応じて自動的に参照します。
エージェントスキル
エージェントスキルは、MATLAB に特化したエンジニアリング手法を AI エージェントに教えるために Markdown 形式で記述された指示ファイルです。コードライブラリではなく、エージェントの行動を導く構造化プロンプトです。
スキルは、Claude Code の /creating-live-scripts などで明示的に呼び出されることもあれば 、エージェントが関連タスクを認識した際に自動的に有効になることもあります。
エージェントスキルは、AI エージェントが学習段階で得られていない詳細な知識を提供します。こうしたスキルの機能により、AI エージェントは科学や工学分野の高度な問題を、より迅速かつ堅牢に、低コストで解決できるようになります。
エージェント向けツールキットで提供されるスキルは急速に進化しています。現時点でご利用いただけるスキルは、スキルカタログで確認できます。
インストールと構成
要件:
- MATLAB R2020b 以降
- 対応する AI コーディング エージェント
- Git
セットアップ手順
- GitHub から MATLAB Agentic Toolkit のリポジトリをクローンします。
- リポジトリフォルダ内で AI コーディング エージェントを開きます。
- エージェントに「ツールキットをセットアップする」よう指示します。
- セットアップ用のスキルが、残りの処理 (ローカルにインストールされた MATLAB の検出、MCP サーバーのインストール、エージェントへの登録) を実行します。
MCP サーバーは約 2 週間ごとに更新されます。最新の状態を保つには、定期的にリポジトリから最新アップデートを取得してください。
実際のエージェント ワークフロー
ツールキットが有効になると、エージェントはコピーして貼り付けることなく、MATLAB コードの読み取り、作成、実行、テスト、解析を実行できます。代表的なワークフローは、以下のとおりです。
- ユーザーが自然言語でタスクを説明する。
- エージェントがスキルやコーディング ガイドラインに基づく MATLAB の記法ルールに従って MATLAB コードを作成する。
- エージェントが MCP サーバーを通じてコードを実行し、結果を読み取る。
- エラーがあれば、エージェントがデバッグし、修正・再実行を行い、タスクが完了するまで繰り返す。
- ユーザーが最終結果を確認する。
構造化ワークフロー: 調査・計画・実行 (RPI)
大規模なプロジェクトには、構造化されたアプローチが効果的です。
- 調査: エージェントがユーザーのプロンプトからプロダクト要求仕様書 (PRD) を作成します。ユーザーは疑問点を解消しながらやり取りを重ね、参考資料も提供します。
- 計画: エージェントが、実行方法をステップごとに示した
PLAN.mdとフェーズ別のTASKS.mdを生成します。 - 実行: タスクをフェーズごとに実行し、方向修正を行いながら次のフェーズに進みます。
こうした構造化アプローチにより、エージェントを活用したコーディングを、予測しにくいものから管理しやすいものへと進化させることができます。計画ドキュメントは長時間にわたる作業でもエージェントの行動の基準となり、文脈ドリフトを予防できます。
安全のための基本事項
- エージェントがアクセスできる範囲を対象プロジェクトのフォルダーに限定します。
- 透明性と容易なロールバックのために Git を使用します。
- 生成されたコード、コマンド、ファイル操作の内容を必ず確認します。
- 機密情報や規制対象のデータをコーディング エージェントに渡さないようにします。
- 信頼できる MCP サーバーとスキルを使用します。
このツールキットは、Claude Code、GitHub Copilot®、OpenAI Codex™ といった MCP をサポートするすべてのエージェントで利用できます。構成はエージェントごとに異なりますが、基本的な流れは同じで、エージェントの MCP 設定で MATLAB MCP Server を指定します。対応する各プラットフォームでは、セットアップ用スキルにより、この設定が自動化されます。
Simulink Agentic Toolkit は、エージェント型 AI の活用領域をモデルベースデザインへと拡張します。MATLAB Agentic Toolkit がエージェントにコード実行へのアクセスを提供するのに対し、Simulink Agentic Toolkit は、アーキテクチャ、信号、パラメーター、シミュレーション挙動を含む Simulink モデルへの構造化アクセスを提供します。
Simulink Agentic Toolkit は、MATLAB MCP Server を基盤とした GitHub リポジトリです。このツールキットは、Simulink と モデルベースデザインに特化した MCP ツールとエージェントスキルを追加します。
Simulink の MCP ツールとエージェントスキル
MATLAB MCP Serverで利用可能なツールに加えて、このツールキットは、モデル構造の読み取り、ブロックと接続の編集、パラメーター照会、シミュレーション実行を可能にする Simulink に特化したツールを追加します。この専用ツールにより、エージェントはモデルの階層構造を把握し、必要な情報を確認しながら、的確な変更を行うことができます。
ツールキットのスキルは、そのツールを活用して、モデルベースデザインの一般的なタスクに適した推奨ワークフローを実行します。各スキルには、必要なエンジニアリングの文脈 (知識や手順) が含まれており、エージェントは毎回ゼロからワークフローを考えるのではなく、確立されたパターンに従ってタスクを進めることができます。
Simulink Agentic Toolkit は定期的に更新されます。現在、利用可能なツールとスキルについては、GitHub リポジトリをご参照ください。
インストールとセットアップ
インストール手順 (対応エージェントや構成手順を含む) については、Simulink Agentic Toolkit の GitHub リポジトリをご参照ください。
リポジトリの README には、対応エージェントごとにセットアップの説明が記載されており、各リリースに合わせて最新の内容に更新されています。
AI エージェントによる要件管理
このツールキットの最も代表的なユースケースの 1 つが要件エンジニアリングです。AI エージェントは、以下のことが可能です。
- 自然言語による説明や既存のドキュメンテーションから要件を作成
- 各要件を実装するモデル要素に紐付け
- 設計の進行に合わせてトレーサビリティを維持
- カバレッジギャップを示すトレーサビリティ マトリックスを作成
これらの機能により、プロジェクトの進行を遅らせがちな手作業によるドキュメント作成の負担を軽減できます。エージェントが提案し、エンジニアが確認して承認します。
設計実装
エージェントは、既存モデルを修正したり、仕様から新しいシステムを作成したりすることができます。対応するモデルの種類は、以下のとおりです。
- Simulink ブロック線図 (標準的な信号フローモデル)
- Stateflow チャート (ステートマシンと意思決定ロジック)
- Simscape モデル (熱、電気、機械、油圧などの物理システム)
- System Composer アーキテクチャ (システムレベルのアーキテクチャモデル)
5 ステップサイクルの推奨ワークフロー
ステップ |
アクション |
説明 |
1 |
提案 |
エージェントが自然言語で設計案を作成 (アーキテクチャ、数式、パラメーターなど) |
2 |
承認 |
ユーザーが提案内容を確認し、必要に応じて修正 (反復) |
3 |
生成 |
エージェントが Simulink に特化したツールを使用して実行スクリプトを生成 |
4 |
実行 |
MCP サーバーがライブモデルに対してコードを実行 |
5 |
確認 |
ユーザーが Simulink 上で結果を検証 |
例: ブレーキの熱シミュレーション
この Simulink Agentic Toolkit のブログ記事では、Guy Rouleau が、ディスクブレーキの熱モデル全体を提案・承認・生成・実行・確認のサイクルを通じて構築するプロセスを手順を追って解説しています。同氏はエージェントに「平均的なセダン車に取り付けられているディスクブレーキの熱挙動シミュレーションを計画する」よう指示します。
エージェントは、システムアーキテクチャ、パッドとディスクの熱伝達方程式、環境条件、コンポーネント構成図、完全なパラメータ一覧を含む 2 つの仕様書を生成します。その後、アーキテクチャについて 3 回の反復調整を行い (最終的に単純な車両の縦方向モデルにまでスコープを拡張)、エージェントは完全な Simulink モデルを生成します。
テストに向けて、エージェントはコンポーネントレベルのサブシステムテストと閉ループの走行シナリオの両方を作成し、Simulink Test Manager 上で実行できるようにします。初期のプロンプトから検証済みモデルに至るまでの一連のワークフローは、手作業でモデルを構築することなく、この 5 ステップサイクルに沿って実行されます。
シミュレーション、テスト、検証
このツールキットは、検証サイクル全体をサポートしています。
- シミュレーションの実行 (構成管理や並列実行を含む)
- 報告された問題を再現するためにテストケースを作成し、根本原因を特定
- Simulink Test を使用したテストの作成
- 修正を提案し、検証のために再度テストを実行
エンジニアはセットアップ作業の管理ではなく、結果の解釈に集中できます。
モデルベース システムズ エンジニアリング (MBSE)
このツールキットは、MBSE 手法を採用しているチーム向けに、包括的な RFLP (要件、機能、論理、物理) フレームワークをサポートしています。
Simulink Agentic Toolkit を System Composer や Requirements Toolbox と組み合わせて使用することで、エージェントは以下のことが可能になります。
- アーキテクチャ要素に関連付けられた要件を作成・管理
- 機能、論理、物理の各レベルにおけるアーキテクチャモデルの作成
- インターフェース辞書やステレオタイプの生成
- 分析ビューや割り当てセットの作成
システム開発の初期成果物を迅速に作成し、エンジニアが定型的なセットアップ作業ではなく、本質的な問題解決に注力できるようにすることを目的としています。
エンジニアによる監督
Simulink Agentic Toolkit は、人間による監督を前提に設計されています。すべての機能は「エージェントが提案して、エンジニアが判断する」という同じ原則に基づいています。
実践のポイント
- カスタムスキルがツールキットの機能と競合していないか確認する (指示が重複するとエージェントが非効率な方法を選択してしまう可能性があります)
- エージェントが準最適な方法を用いた場合、Simulink 専用ツールを使うよう明示的に指示する
- 実行前に計画書や設計仕様書をエージェントに作成させ、設計判断を早い段階で確定させる
- エージェントが確実に処理できる適切な単位に作業範囲を分割する
LLMs with MATLAB と MATLAB MCP HTTP Client を組み合わせることで、MATLAB コードでエージェントを作成できます。このエージェントは、LLM (OpenAI 互換 API や Ollama™ 上のモデルなど)への接続や外部 MCP ツールを呼び出す MATLAB 関数を提供します。エージェント ワークフローの構築には、複数の実装パターンがあります。
パターン 1: ReAct (推論+行動)
最も一般的なエージェントの動作パターンは、思考と行動を交互に繰り返すものです。LLM は、次に何をすべきかを推論して、アクションを起こし、結果を観察して、再び繰り返します。
% ReAct loop pattern
while ~taskComplete
% Thought: LLM reasons about next step
thought = generate(chat, [context, "What should I do next?"]);
% Action: Execute tool if needed
if needsTool(thought)
result = executeTool(thought.tool_call);
context = [context; result];
end
% Observation: Update state based on results
taskComplete = checkCompletion(context);
end
パターン 2: ツールチェーン
複雑なタスクでは、複数のツールを順番に呼び出す必要があります。あるツールの出力が次のツールの入力になります。
| ステップ | アクション | 目的 |
|---|---|---|
| 1 | コード生成 | 要求に応じて MATLAB コードを生成 |
| 2 | コード解析 | エラーやスタイル、潜在的なバグを確認 |
| 3 | コード実行 | MATLAB で実行し、出力を取得 |
| 4 | 結果評価 | 出力を確認し、修正または成功判定 |
パターン 3: ヒューマンインザループ
セーフティ クリティカルな用途の場合、人による確認ステップを追加します。
% Human-in-the-loop pattern
proposedAction = generate(chat, query);
% Display proposed action for approval
fprintf("Proposed: %s\n", proposedAction.description);
approval = input("Approve? (y/n): ", "s");
if strcmp(approval, "y")
result = executeAction(proposedAction);
else
disp("Action cancelled.");
end
実践ガイドライン
信頼性の高いエージェントを実現するためのポイント
- シンプルに始める: 複雑な連結を構築する前に、単一のツールを確実に動作させる
- 透明性を確保する: デバッグに備え、LLM 呼び出しとツール実行のログを取る
- エラーを適切に処理する: LLM の誤った結果に対処する指数バックオフ付きのリトライ処理を実装する
- 制限を設ける: 反復回数、トークン数、利用可能なツールを制限する
- 敵対的にテストする: ユーザーに提供する前に、意図的に破綻ケースで検証する
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)