
AIエージェントはPower Appsを開発できるのか? Codex CLIで検証してみた
みなさん、こんにちは、こんばんは、おはよーございます。
丸紅I-DIGIO 吉正です。
Power Apps、みなさん活用していますでしょうか。PowerApps は Microsoft によるノーコードツールですが、Microsoft の世界の中であれば割となんでもできてしまう便利なしくみです。
社内ツールを Azure や AWS に立てようものなら社内申請や審査で疲弊しますが、PowerApps であれば目くじら立てられることもないので、ちょっとしたツールを作って業務効率化するにはもってこいの強い味方です。
しかしながら、ノーコードツールあるあるで、マウスでポチポチいろんなところをクリックしては値を入力して…といった面倒な操作をしなければならないので、ある程度コードの書けるエンジニアにとってはストレスが溜まる節もあります。
とはいえ時は2026年、AI大バズリの時代です。AIエージェントの助けを借りれば、PowerApps開発もうまいことやれるのでは?ということで、検証してみました。
検証の方向性
方向性としては、Codex CLI を AIエージェントとして使い、PowerApps Studioでキャンバスアプリを作成してもらうことにします。目指す完成形は以下のようなものです。
Office 365 Outlook の予定表を取得して表示する
今日、明日、今週で予定一覧をフィルタできる
予定をクリックすると詳細を表示できる
作成にあたっては、どうも Microsoft 公式の MCP(プレビュー)が用意されているようですので活用してみます。
なお、調べた限りでは、Codex 向けの公式プラグインは提供されていませんでした。そのため、現時点では Claude Code や GitHub Copilot CLI などの公式プラグインが提供されている AI エージェントを利用することを推奨します。が、わたしは OpenAI 派なので Codex で試してみます。世の中的にも情報があまりなかったので、誰かの役に立てば幸いです。
ちなみに Copilot さんが PowerApps に組み込まれているんじゃないかと期待したのですが、Canvas アプリに対してコーディングエージェント的に動かすのは現時点では無理なようでした。計画を立てる部分はやってくれますが、SharePoint List 使いたいのに Datavaerse しか提案してくれないなどイマイチな様子です。Copilot × PowerApps はかなり親和性高いと思うので、Microsoft さんの今後の頑張りに期待です。
やってみる
実行環境の準備
今回は、Windows上に環境をつくります。
まずは、PowerShell を開いて、winget(パッケージ管理システム)で .NET 10 SDK をインストールします。
> winget install --id Microsoft.DotNet.SDK.10インストール後、以下を確認します。10.x.x が出れば OK です。
> dotnet --list-sdks
10.0.301 [C:\Program Files\dotnet\sdk]Power Apps Canvas Apps plugin は dnx も使うので、念のため使えるか確認しておいてください。
> dnx --help
Welcome to .NET 10.0!
---------------------
SDK Version: 10.0.109補足:
dnx は .NET 10で追加された「.NETツールをインストールせずに実行するためのコマンド」です。グローバルツール汚染が少ない、バージョン管理しやすい、コンテナと相性が良いなどのメリットがあります。とりあえず、「dnxは便利ツールを実行するもの」、「dotnetはアプリを作るもの」くらいで認識しておけば大丈夫です。
Canvas アプリの準備
PowerApps > 作成 > 白紙から作成する から、空のキャンバスアプリを作成しておきます。URL情報を後で使うので控えておきます。
また、MCP からアクセスさせる都合上、Coauthoring(コオーサリング)の権限が必要となります。キャンバスアプリの設定 > 更新 > コオーサリング をオンに変更しましょう。

Coauthoring については、以下のドキュメントに記載があります。大した話ではなく、つまりは共同編集者を追加できるよという設定です。AIエージェントもシステムから見たら一人のユーザーです。
MCPの準備
Codex は config.toml に設定を記載するか codex mcp add コマンドで MCP を登録できるとのことなので、codex mcp add コマンドを使って、Canvas plugin の .mcp.json から直接登録を試してみます。
> codex mcp add canvas-authoring -- dotnet dnx Microsoft.PowerApps.CanvasAuthoring.McpServer --yes --prerelease --source https://api.nuget.org/v3/index.json
Added global MCP server 'canvas-authoring'.MCPサーバが追加されたことを確認するために、codex mcp list コマンドを実行します。
> codex mcp list
Name Command Args Env Cwd Status Auth
canvas-authoring dnx Microsoft.PowerApps.CanvasAuthoring.McpServer --yes --prerelease --source https://api.nuget.org/v3/index.json - - enabled UnsupportedStatus = enabled になっているので、本来であればこれで OK となるはずですが、わたしの環境では codex 上で /mcp を実行すると利用できない状態になってしまいました。
/mcp
🔌 MCP Tools
• No MCP tools available.
• canvas-authoring
• Auth: Unsupported
• Tools: (none)MCP 自体、使えないことはないはずなので、Codex の構成ファイルに直接記載してみます。このとき、"command" に "dotnet.exe" をフルパスで記載しないとうまく認識できないようですのでご注意ください。
[mcp_servers."canvas-authoring"]
command = 'C:\Program Files\dotnet\dotnet.exe'
args = [
"dnx",
"Microsoft.PowerApps.CanvasAuthoring.McpServer",
"--yes",
"--prerelease",
"--source",
"https://api.nuget.org/v3/index.json",
]
startup_timeout_sec = 60
tool_timeout_sec = 180設定後、codex を起動するとうまく認識されました。
/mcp
🔌 MCP Tools
• canvas-authoring
• Auth: Unsupported
• Tools: compile_canvas, connect, describe_api, describe_control, get_data_source_schema, list_apis, list_controls,
list_data_sources, sync_canvasここから先はツール実行が行われますので、事前に Codex の /permissions から適切な権限を与えておきます。
MCPの接続
公式ドキュメントを読む限り、/configure-canvas-mcp という Skill を使えそうですが、Claude Code 向けに作られているのでそのまま使うには工夫が必要です。
今回はあくまで検証なので、以下のようなプロンプトを与えて構成を行います。Canvas アプリの準備で作成した空のキャンバスアプリの URL をここで指定しておきます。
canvas-authoring MCP connect ツールを使用して、
現在の Power Apps の共同編集(Coauthoring)セッションを構成してください。
Power Apps Studio の URL は以下です。
<ここに make.powerapps.com の Canvas App 編集 URL を貼り付け>
以下を解析してください。
- environment_id:
URL の /e/ の後に続くパスセグメントから取得する
- app_id:
app-id クエリパラメータから取得し、/apps/ の後ろの最後のセグメントを使用する
- cluster_category:
make.powerapps.com の場合は prod を使用する
その後、canvas-authoring の connect を実行してください。実行後、MCP による connect を許可するかと問われた場合は、Allow を選択してください。
Field 1/1
Allow the canvas-authoring MCP server to run tool "connect"?
app_id: 17718cd6-7ccf-4ac9-bb0e-XXX
cluster_category: prod
environment_id: f0a95d4c-c490-e935-9c24-XXX
› 1. Allow Run the tool and continue.
2. Allow for this session Run the tool and remember this choice for this session.
3. Always allow Run the tool and remember this choice for future tool calls.
4. Cancel Cancel this tool call
enter to submit | esc to cancel今回は Entra ID Join の PC で確認しましたが、 Registered などの環境ではおそらく認証画面がブラウザで起動することになると思いますので、適切なアカウントで認証してください。
うまく行けば、以下のような回答が返ってきます。
• 接続できました。
- environment_id: f0a95d4c-c490-e935-9c24-XXX
- app_id: 17718cd6-7ccf-4ac9-bb0e-XXX
- cluster_category: prod
canvas-authoring MCP の connect は正常に完了しています。PowerApps Studioへの接続
MCPは用意できたので、実際に PowerApps へ接続してみましょう。Canvas アプリの準備で作成した PowerApps 画面に戻ります。

今回は試しに Office 365 Outlook をデータコネクタに追加して、MCP 経由で認識できるか確認してみます。まずは、PowerApps 側でデータコネクタを追加します。

データコネクタの追加後、Codex に以下のプロンプトを投げてみます。
canvas-authoring MCP の list_apis を実行してください。
Office 365 Outlook connector があるか確認してください。以下のように、回答が返ってくれば成功です。
• list_apis を実行しました。
Available APIs: 1
- Office365Outlook
Office 365 Outlook connector は利用可能です。アプリの編集
それでは、Codex に MCP 経由で実際に PowerApps でアプリを作ってもらいましょう。以下のプロンプトで試してみます。
この Canvas App を、Office 365 Outlook の予定表を取得して表示するアプリにしてください。
要件:
- 今日から7日分の予定を一覧表示
- 件名、開始時刻、終了時刻、場所を表示
- 予定を選択すると詳細を右側または詳細画面に表示
- 更新ボタンで予定を再取得
- まず現在のアプリを sync_canvas で取得してから編集
- 変更後は compile_canvas で検証
予定一覧に「今日」「明日」「今週」のフィルターを追加してください。
件名で検索できる検索ボックスを追加してください。以下のような計画を立てて、順調に動いてくれます。
• Updated Plan
└ □ sync_canvas で現在のアプリを取得
□ 画面とコントロール構成を確認
□ Outlook 予定表 UI と式を実装
□ compile_canvas で検証どうやら実装が終わったようです。
• 完了しました。sync_canvas で現在のアプリを /C:/XXX/canvas-src に取得し、/C:/XXX/Screen1.pa.yaml:1 を Outlook 予定表アプリに置き換えました。
実装内容:
- Office 365 Outlook V4CalendarGetItems で今日から7日分の予定を取得
- 件名、開始時刻、終了時刻、場所を一覧表示
- 予定選択時に右側へ詳細表示
- 更新 ボタンで予定を再取得
- 今日 / 明日 / 今週 フィルター
- 件名検索ボックス
検証も完了しています。
compile_canvas: Validation PASSED
Files validated: 2しかしながら、Web UI側ではなんの変化もありません。

もしかしたら、MCP 経由で PowerApps 上への反映はできないのかもしれません。一旦、Codex / MCP さんに聞いてみましょう。
canvas-authoring MCP にローカル YAML を現在の coauthoring セッションへ適用する tool が存在するか確認してください。
利用可能な tool 一覧を確認し、sync_canvas / compile_canvas 以外に push/apply/save/import 相当があるか調べてください。結果は以下でした。
• 確認しました。現在このセッションで利用可能な canvas-authoring MCP tool は以下だけです。
- connect
- sync_canvas
- compile_canvas
- list_apis
- describe_api
- list_controls
- describe_control
- list_data_sources
- get_data_source_schema
sync_canvas / compile_canvas 以外に、ローカル YAML を現在の coauthoring セッションへ反映する push / apply / save /
import 相当の tool は公開されていません。
結論: 現在の canvas-authoring MCP では、ローカル YAML の検証まではできますが、この tool セットだけでは Power Apps
Studio の共同編集セッションへ変更を適用できません。現時点では、PowerApps そのものへの反映はできないようです。
後ほど判明しますが、この回答は嘘ですので信じないでください。
PowerApps Studioへの反映
面倒ですが仕方がありません。手動で反映しましょう。
しかしながら、今回の PowerApps 環境では、「コードの表示」はメニューにありますが、「コードの貼り付け」はメニューにありませんでした。なので、Codex が生成してくれたアプリ全体の .pa.yaml 形式をそのまま PowerApps に持っていく方法がありません。これは困りました。
様々調べた結果、どうにか解決はできたので、その方法を以下に示します。
PowerApps を触ったことのある方ならわかると思いますが、Canvas アプリのコントロールはコピー&ペーストができます。これは、以下のページにも記載がある公式手順です。
コピペできるということは、クリップボードに入るわけです。クリップボードに入るということは、PowerApps 画面上ではコントロールがツリービューで見えていますが、クリップボードに入ったときにはコード(YAML)がテキストで入っている可能性があります。
ツリービューを Ctrl + C でコピーしてみましょう。

Win + V でクリップボードの中身を見れます。どうやらビンゴです。

実際には、以下の値が入っていました。YAMLの一部です。
- ScreenContainer1:
Control: GroupContainer@1.5.0
Variant: AutoLayout
Properties:
Fill: =RGBA(245, 245, 245, 1)
Height: =Parent.Height
LayoutAlignItems: =LayoutAlignItems.Stretch
LayoutDirection: =LayoutDirection.Vertical
LayoutGap: =16
PaddingBottom: =16
PaddingLeft: =16
PaddingRight: =16
PaddingTop: =16
Width: =Parent.Widthということは、アプリ全体の pa.yaml は貼り付けられないものの、コントロール単位であれば貼り付けられそうです。
では、面倒なことは AI にやってもらいましょう。以下のプロンプトを Codex に指示します。
構文・インデント・プロパティ名の形式を厳密に維持して、
Power Apps の Ctrl+V で貼り付け可能な Container 単位のYAMLを生成してください。
アプリ全体の .pa.yaml 形式にはしないでください。いろいろ考えて、頑張って作ってくれました。
• 生成しました。
Ctrl+V 貼り付け用の Container 単位 YAML はここです:
/C:/XXX/OutlookCalendarContainer.paste.yaml:1
形式は先頭が - OutlookCalendarContainer: で、Screens: / App: は含めていません。Screen.OnVisible も使わず、Container 内
だけで予定一覧・検索・フィルター・詳細・更新ボタンが動く形にしています。
検証結果:
compile_canvas: Validation PASSED
Files validated: 2.yaml の内容を開いて PowerApps のツリービュー上でペーストすると、無事に貼り付けることができ、それっぽいアプリが現れました。

PowerApps Studioでの動作確認
ポン出しでどれくらい動くのか不安でしたが、しっかり予定表を取得してくれました。

本当にPowerApps Studioへ反映できないのか
さて、手動での反映ができることはわかりましたが、プレビュー版とはいえ PowerApps Studio へ反映できないのはやはり腑に落ちません。MCP を謳っている以上、ここはしっかり作り込まれていると考えるのが自然です。
GitHub の microsoft/power-platform-skills には、Claude Code や GitHub Copilot CLI 向けの Skill が公開されています。じっくり読んでみた結果、「compile_canvas は成功時に push する」と記載がありました。ということは、思想上は PowerApps Studio への反映ができるはずです。
前回実施時にも、compile_canvas は成功していたので Studio 側への反映がされなかった点が腑に落ちませんが、何はともあれ Codex CLI でもう一度試してみましょう。
GitHub 上で確認したところ compile_canvas が成功した場合に PowerApps Studio へ push する仕様となっているようです。
compile_canvasをもう一度実行して、push 可能か検証してください。結果、うまく反映され、PowerApps Studio 側でも変更が確認できました。
• リトライ成功しました。
実行結果:
compile_canvas: ✓ Validation PASSED
Files validated: 2
GitHub の仕様どおり、この成功時点で PowerApps Studio 側へ push されたと見てよいです。1回目にうまくいかなかった理由はよくわかりませんが、コツとしては以下で良いと思います。
新規に空のキャンバスアプリを作り、Coauthoring を有効にする
念のためキャンバスアプリを再読込しておく
MCP 経由で操作する
まとめ
PowerApps というノーコードツールでも、AIエージェントによるコーディング支援を受けられないかの検証を行いました。
今回は、Microsoft 公式の MCP を使うことで、AIエージェントが YAML を生成し、PowerApps Studio へ反映できることがわかりました。また、データコネクタの接続状況などを踏まえた上で、YAML を作成できることもわかりました。
また、プレビュー版ですので、PowerApps Studio への同期がうまくいかないことも今後あり得ると思いますが、そんなときでも、Studio 上のコントロールに YAML をコピペすることで反映できることがわかりました。
ただし、Codex 向けに Skill を提供してくれているわけではないので、安定して利用したい場合は GA を待つこと、Claude Code や Github Copilot など公式 plugin が提供されている AIエージェントを利用するのが良さそうです。
"まずは作る" という部分を AI がやってくれるだけで、人間の負荷はだいぶ減ります。体裁の修正であればマウスでポチポチやるだけというノーコードツールの利点を享受できますし、人間はロジックに誤りがないかなどテストに集中することができます。
また、Power Apps は良くも悪くも Microsoft のエコシステムの中で完結するため、Azure や AWS 上に新たなシステムを構築する場合と比較すると、ネットワークや認証基盤、インフラ運用などの検討事項を大幅に減らせる点が魅力です。今回のような AIエージェント × ノーコードツールは DX に大きく寄与できると思っていますので、皆さまも活用してみてはいかがでしょうか。(くどいですが、MCPについてはプレビュー取れてからのご利用を推奨します)
Microsoft さんがそのうち、 Codex 向けの Skill にも対応してくれることを切に願いつつ、本記事は締めといたします。
以上
筆者紹介
吉正 尚人(Naoto Yoshimasa)
親会社である丸紅の情シス向けのお仕事を10年。データセンターでのネットワーク機器・サーバーのお守りから、セキュリティ対策の企画~実装・運用までを幅広く経験。近年は、SASEを中心に活動中。余暇の楽しみは、愛猫であるつくね、つみれ(おでんシスターズ)と戯れること。
弊社独自のエコソリューション開発も担当していますので、こういう運用が辛いんだ!といったお悩みありましたら、ぜひご相談ください。