6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Copilot StudioをClaude Code化したら、Copilot Studio自身でPower Platformを構築できた話

6
Posted at

Microsoftの中の人が公開した「Copilot Studio Code」を、Power Platform コードファースト構築リポジトリと組み合わせると、Copilot Studio が、Copilot Studio エージェントを含む Power Platform 環境を構築する側に回る —— という、ちょっとメタな PoC をやってみた話です。

サマリー

  • Microsoft の吉田さん(Taiki Y.)が公開した copilot-studio-code は、Copilot Studio を Claude Code / GitHub Copilot CLI のようなコードエージェント として動かす MCP サーバー。
  • これを ギークフジワラさん(Hiromichi Fujiwara)が公開した Power Platform をコードファーストで構築する開発標準リポジトリ: CodeAppsDevelopmentStandard と組み合わせ、「従業員オンボーディングアプリを Power Platform で作りたい」とだけ伝えたら、Dataverse → Power Apps → Power Automate → Copilot Studio エージェント まで Copilot Studio 上から構築できた
  • Power Apps は Copilot Studio が自分で大量の .tsx を書き、TypeScript ビルドエラーも自分で読んで自分で直してリビルドに成功した。
  • ただし正直に言うと……Copilot Studio はそもそも AI コーディング用に作られていないと思うので コンテキスト上限が低く、会話履歴も直近 10 ターンしか参照されない。リトライ前提・コンテキスト圧縮前提の運用になる。本記事ではその詰まりポイントも全部書きます。

1. はじめに — なぜこれをやってみたのか

Claude Code、Codex CLI、GitHub Copilot CLI。ターミナル/エディタ上の AI コーディングエージェント はもうすっかり定着しました。

一方で、今の自分の関心事は Power Platform のデモ環境を、業務要件から自動でサクッと立ち上げたい です。Dataverse のテーブル設計、Power Apps の React 実装、Copilot Studio エージェントの構築までをAI コーディングエージェントに任せて一気通貫で進めたい。

なぜ「AI で作る対象」を Power Platform にしたいのか

ここはひとつ前置きしたいです。AI コーディングエージェントならフルスクラッチで Web アプリを作る方が自由度は高い。それなのになぜ Power Platform なのか。

理由は 「AI で作ったあとに本番展開できるか」が結局はインフラ層で決まる と私は思っています。

image.png
(出典: ギークフジワラさんの動画「ギーク作成 カスタムエージェント x スキル を利用して自然言語だけで Power Platform を丸ごと構築」より引用)

ギークフジワラさんの動画で説明されていたこの内容は凄くわかりやすいし私も凄く共感しています。
AI が爆速でコードを書いてくれても、認証・認可、統合エコシステム、スケーラビリティ、ガバナンス、ALM/DevOps、AI Ready といった インフラ層を一から積み上げると結局そこでかなりの時間が溶けます。
せっかく作ったアプリがセキュリティ要件で社内展開できない、というのは一番悲しいパターン。

Power Platform は このインフラが最初から整っている(Microsoft のセキュリティ・コンプライアンス基盤の上にある)。なのでAIで開発したアプリをスムーズに社内に展開していけると思っています。

「Copilot Studio Code」を見て思ったこと

そんな中で、Microsoft の吉田さんが LinkedIn で copilot-studio-code を公開しました。

Copilot Studio を Claude Code 的に動かす、ローカルワークスペースを読み書きできる MCP サーバー実装

これを見て、ふと思いました。

これと、Power Platform コードファースト構築リポジトリを組み合わせたら、Copilot Studio から Power Platform を構築できるのでは?

しかも構築物にはCopilot Studio エージェントも含まれる。つまり Copilot Studio が Copilot Studio を作る 構図になる。

これをTeamsやM365 Copilotのポータルから開発できるようになったら凄くない!?……ということで、やってみました。

2. 何ができたか(先に結論)

題材として「従業員オンボーディング業務アプリを Power Platform で作りたい」とだけ Copilot Studio に投げました。

そこから Copilot Studio がやったこと(時系列):

Phase 内容 結果
0 リポジトリ読み込み + Dataverse / Power Apps / Power Automate / Copilot Studio の基本設計
1 Dataverse 詳細設計 + セットアップスクリプト生成 + 実行(ソリューション・テーブル・列・リレーション)
2 Power Apps UI設計、React + TypeScript 実装(大量の .tsx 生成 → ビルド → 自己修復 → デプロイ)
2.5 Power Automate 詳細設計(手順書・プロンプト集生成は今回スキップ)
3 Copilot Studio エージェントの詳細設計 → アイコン画像生成 → 手動でエージェント作成 → デプロイスクリプトで設定一括反映

image.png

image.png

read_file / run_shell / glob など様々なツールが連続して呼ばれているのが見えると思います。Copilot Studio がローカルファイルを読み、Python スクリプトを動かし、結果を会話に戻している。これが全部 Copilot Studio の会話画面の中 で起きています。

最終的に出来上がったPowerAppsのアプリとCopilot Studio エージェント(オンボーディング コーディネーター)はこんな感じです。

image.png
image.png

アイコンも自動生成、説明・指示も全部デプロイスクリプトが書き込んだもの。自分が手で触ったのは空のエージェントを作ったところだけです。
(ロケットのアイコンかわいい)

3. 仕組み — Copilot Studio Code とは何か

copilot-studio-code は一言でいうと、「Copilot Studio から呼べる、ローカルの MCP サーバー」 です。

公開されているツール:

ツール 用途
read_file テキストファイルを読む
list_dir ディレクトリ一覧
glob ファイル検索
grep 正規表現検索
write_file 新規作成・上書き
edit_file exact-match 置換
run_shell ローカルコマンド実行

こういう構図なのかなーと私は解釈しました。

Copilot Studio はクラウド側にあるけど、実際のファイル操作とコマンド実行はローカルの MCP サーバーが担う という構造です。クラウドからローカルへは、Microsoft Dev Tunnel で HTTPS 経路を作って到達させます。

ここまでは吉田さんの公開リポジトリそのものの話で、ここからが自分が試したかった部分です。

4. 組み合わせ — Power Platform コードファースト構築標準

copilot-studio-code のワークスペースとして向けるリポジトリは、なんでもいいわけです。Web アプリのリポジトリでもいい。

でも、自分は Power Platform を構築したい。

そこで、別途整備していた Power Platform をコードファーストで構築するための開発標準リポジトリ(CodeAppsDevelopmentStandard)を、この MCP の WORKSPACE_ROOT に設定しました。

このリポジトリには以下が入っています。

  • AGENTS.md — AI エージェント向けの開発ルール
  • README.md — リポジトリ全体のガイド
  • docs/POWER_PLATFORM_DEVELOPMENT_STANDARD.md — Phase 0 〜 Phase 3 の開発標準
  • docs/DATAVERSE_GUIDE.md — テーブル設計、Lookup、Choice、Web API
  • .agents/skills/{architecture, dataverse, code-apps, power-automate, copilot-studio}/SKILL.md — Phase 別のスキル
  • React + TypeScript + Tailwind + Power Apps Vite Plugin のテンプレート

今回は、.agents/skills を Copilot Studio の Tool として直接登録せずに、シンプルにMCP の read_file / glob で エージェントが自分で読みに行く判断材料として使わせる構成で進めてみました。

5. 実際にやってみた — デモシナリオ

5.1 入力プロンプト

Copilot Studio にリポジトリを読み込ませます。

まずはCopilotStudioCode_CodeAppsのリポジトリのREADMEを読み込んで、このリポジトリの目的、構成、CodeApps開発の進め方を把握してください。

その後、最初に投げたのはこれだけ。

従業員のオンボーディングツールのデモ環境を Power Platform で作りたい

業務要件の詳細は意図的に渡していません(理由は 6 章)。エージェントに自由に設計させました。

5.2 Phase 0 — リポジトリ読み込み + 設計

Copilot Studio はまず以下を順に読みに行きます。

  1. list_dir でリポジトリ構成を把握
  2. read_fileAGENTS.mdREADME.mddocs/POWER_PLATFORM_DEVELOPMENT_STANDARD.md
  3. glob.agents/skills/**/SKILL.md を探索
  4. 必要なスキルだけ read_file

そのあとに出てきた設計案がこちら。

image.png
image.png
image.png
image.png

  • データレイヤー: {prefix}_department(部署マスタ)、{prefix}_tasktemplate(タスクテンプレート)、{prefix}_onboarding(オンボーディングプロセス)、{prefix}_onboardingtask(個別タスク)
  • UI レイヤー: Power Apps(Code Apps)
  • 通知・自動化: Power Automate
  • FAQ・AI アシスタント: Copilot Studio

ちゃんと 「英語スキーマ名 + 日本語表示名」「主テーブル + 従テーブル + マスタ」 という、開発標準のルールに従っています。業務要件から UI を選ぶ判断もしているようにも見えますね。

5.3 認証だけは別ターミナルで

Phase 1(Dataverse 構築)に入る前に、Microsoft 365 / Dataverse へのデバイスコード認証が必要になります。

これは Copilot Studio の会話画面からは無理でした。デバイスコード認証は対話的に https://microsoft.com/devicelogin をブラウザで開いてコードを入力する必要があるので、別のターミナルで python auth_helper.py を先に走らせて .auth_record.json を作っておく 必要があります。

エージェントもこれを認識していて、ちゃんと「先にターミナルで認証を通してください」と案内してきました。
(CodexやClaude codeならデバイスコードまで出してくれましたがCopilot Studioは難しそうです)

image.png

これは Copilot Studio Code 側の制約というより、Copilot Studio がブラウザ操作を伴わない実行環境である以上、避けられない部分なのかなと思っています。

5.4 Phase 1 — Dataverse 構築

認証を済ませたあと、run_shellpython setup_dataverse.py を実行。

ソリューション作成 → テーブル作成 → 列追加 → リレーション設定、まで Dataverse Web API 経由で動きました。
途中でエラーが出たら、エージェントが自分で ログを read_file で読んでリトライ してくれます。

5.5 Phase 2 — Power Apps 実装

Copilot Studioが詳細設計をして、
image.png

その設計に沿って 大量の .tsx ファイルを連続で書き始めました

  • 型定義
  • ページコンポーネント(home / new-hires / new-hire-detail / tasks / templates / resources / not-found)
  • 共通コンポーネント(layout / sidebar / header / list-table)
  • Dataverse データソース連携用のフック
  • ルーター設定

image.png

全部、.agents/skills/code-apps/SKILL.md に書かれた React + TypeScript + Tailwind + Power Apps Vite Plugin のスタックに合わせて…
その後、npm run build

TS2536: Type 'string' cannot be used to index type 'TaskTemplate'

image.png

ビルド失敗。 TypeScript の型エラーが発生。

…で、Copilot Studio はここから 自分でやり直し ました。

  1. エラー箇所のファイルを read_file で再読み込み
  2. T extends object のジェネリック制約だと item[key] が許可されない問題を特定
  3. (item as Record<string, unknown>)[key as string] 形式の型アサーションを 5 箇所に edit_file で適用
  4. 再ビルド

image.png

🎉 ビルド成功

その後、pac code push で Power Apps ソリューションへアップロードして…Power Appsが出来上がりました🎉

image.png

image.png

しかも、出来上がった Power Apps が パッと見、ちゃんとそれっぽい。サイドバー・ヘッダー・テーブルビュー・詳細ビュー、業務アプリとして使えるレベルの構成になっていました。

余談: Copilot Studio 君、途中から余裕がなくなってくる

ビルドエラー修復ループに入ったあたりから、Copilot Studio 君のコメントが日本語から徐々に英語に切り替わっていきました

image.png

最初は:

ListTable コンポーネントを確認します。問題が分かりました。

中盤では:

Now I need to fix all the pages. The ListTable generic constraint is now object instead of Record<string, unknown>...

完全に英語。おそらく コンテキスト上限が逼迫してきて、言語維持が後回しになったんだと思っています(後述の 6 章で詳しく書きます)。

5.6 Phase 2.5 — Power Automate 設計

こちらもしっかりと設計を進めてくれています。

image.png

ただ、今回、開発標準を少し修正しています。

Power Automateをコード開発すると旧デザインで動作したり、上手くアクションを構築できなかったりと、Codex/Claude Code/GitHub Copilot CLIでも動作が安定しなかったため、
Power Automate は新デザイナーのUI上でCopilotを活用した構築に変更。

なので設計のあとは「手順書 + Copilot プロンプト集の生成」です。
ただ、設計できているならここの生成はできるでしょう…ということで、時間の都合上スキップ。

5.7 Phase 3 — Copilot Studio エージェント構築

最後のフェーズ。Copilot Studio エージェント(=自分自身)を構築するパートです。

image.png

Copilot Studio が自分でやったこと:

  1. エージェントの目的・指示・トピックの設計案を提示
  2. アイコン画像の生成案(複数案)を提示 → 選んだ後にアイコン画像を生成
  3. デプロイスクリプト(deploy_agent.py)を生成

人間がやったこと:

  1. Copilot Studio で空のエージェントを作成 → Bot ID を URL からコピーして渡す

ここはギークフジワラさんの動画でも説明されている通り、コマンドで作成できないのでCopilot StudioのUI上から操作する必要があります。
ただ、シンプルにそれだけです。指示文・説明文・アイコン設定・トピック設定、全部デプロイスクリプトが Dataverse Web API 経由で流し込みました。

image.png

image.png

アイコン、ロケットっぽいやつを生成してくれたんですが、いい感じでした。

image.png

image.png

6. 正直なところ・・・色々と詰まった箇所

ここまで読むと「結構 Copilot Studio でできているじゃん」と思うかもしれませんが、現時点ではそんなに甘くない です。

ここからは詰まりポイントを書きます。大きく3つあって、

6.1 そもそも Copilot Studio は AI コーディング用に作られていないと思います(コンテキスト上限が低い)

これが最大の壁です…コンテキスト上限が著しく低い

copilot-studio-code を使ってリポジトリの主要ファイル(AGENTS.md + README.md + 各 SKILL.md)を一通り読み込ませると、それだけでコンテキストの大半を消費 しているように見えました。その後のプロンプトが正常に動かなくなる、応答が極端に短くなる、会話が成立しなくなる、といった兆候が出てきます。

そのため、入力側でも工夫が必要でした。

本当はもっと詳細な業務要件サンプル(架空企業の入退社・異動 IT 手配のメール本文と営業ヒアリングメモ)を渡したかったんですが、それを丸ごと貼ると、その時点で大量にコンテキストを食う。なので今回は「従業員のオンボーディングツールのデモ環境を Power Platform で作りたい」だけに圧縮して、エージェントに自由に設計させる方針にしました。
これはこれで「設計の自走力を見る」検証になったので結果オーライではありますが、詳細に設計したものを渡すことは難しいかなと。

6.2 Copilot Studio は「直近 10 ターン」しか会話履歴を覚えない

これが、今回ハマった中で一番ドキュメント上の根拠がはっきりした制約です。

Microsoft Learn の Generative Orchestration FAQ には、明確にこう書かれています。

For conversations, the system references the last 10 turns of conversation history to fill in inputs and determine the most relevant capabilities to invoke.(訳: 会話においては、システムは入力値の補完や呼び出すべき機能の判断のために、直近 10 ターンの会話履歴を参照する)

出典: FAQ for generative orchestration - Microsoft Copilot Studio

つまり、Phase 0 で出した Dataverse / Power Apps / Power Automate / Copilot Studio の設計は、Phase 2.5 にたどり着く頃には会話履歴から消えている
エラー解消のためにやり取りが増えるとその分消えていく。

実際、自分も Phase 2.5 に進んだとき Copilot Studio がこんな反応をしました。

However, I don't have the conversation history from Phase 0.

(訳: でも、Phase 0 の会話履歴は手元にないんだよね……)

すまん…Copilot Studio君に優しい進め方になっていなかった……Phase毎にwrite_fileでドキュメント出力させておけば良かったです。

そうすれば、後続フェーズで会話履歴が飛んでも、Copilot Studio は read_file で自分が出した設計書を読み直せます。

6.3 動画は「成功した回」だけ撮影しています

これは正直に書いておきます。

実は 何十回もリトライしています!!!!!
大半が恐らくコンテキスト上限の影響で、途中で会話が成立しなくなる

つまり、現時点では再現性が低い「PoC として動いたよ」というレベルで、本番運用ではない。という前提として読んでいただければと…

自然言語ベースの開発が目的であれば、当然ですが素直に Claude Code / Cursor / Codex CLI / GitHub Copilot CLI を使った方が、安定性も生産性も数百倍高いです。

7. それでも、これは試す価値があると思った個人的な理由

正直、現時点では「実用」ではなく「PoC」です。それでも、自分はこの組み合わせに強く未来を感じていますし面白かったです。理由は3つで、

理由 1: AI コーディングエージェントの選択肢が広がる

これまで AI コーディングエージェントといえば、Claude Code / Cursor / Codex CLI / GitHub Copilot CLI が主戦場で、全部「開発者のローカルマシン上のターミナルか IDE」が UIです。

今回の組み合わせは、「Copilot Studio の会話画面」を AI コーディングの UI にできることを示しています。
「ターミナルを開きたくない人」「Microsoft 365 の世界で完結したい組織」にとっては、新しい選択肢になるかなと。

理由 2: Microsoft 純正で完結するインパクト

エンタープライズの統制という観点で、Microsoft エコシステム純正で AI コーディング体験が完結するのはインパクトがあるかなと思っています。
(とはいえ、今回はローカルMCPサーバーを使用していますが)

理由 3: Copilot Studio が Copilot Studio を作る

自分が一番シンプルに興味を持ったところです。
もはやAIエージェントがAIエージェントを構築するのも当たり前の世界になってきている状況で、Copilot Studioも同じことができないかな?と思っていました。

CodeAppsDevelopmentStandard ではCopilot Studio エージェントの設定値を入れ込むスキルが含まれているので、このPoCが安定して動くようになれば&新規作成や接続がコマンドでできるようになれば、Copilot Studio エージェントから、別の Copilot Studio エージェントを設計・構築する ことができそうかなと。
シャドウAIエージェントが大量発生する未来も見えますが、そこはAgent365の出番ですね。

8. まとめ

  • Microsoft の中の人発の copilot-studio-code は、Copilot Studio を AI コーディングエージェント化する MCP サーバー
  • これに Power Platform コードファースト構築標準リポジトリ を組み合わせると、Copilot Studio の会話画面から Dataverse / Power Apps / Power Automate / Copilot Studio エージェント構築 まで進められる。
  • ただし、コンテキスト上限の低さ・直近 10 ターンしか覚えない会話履歴・リトライ前提の現実 はある。本番運用ではなく PoC レベル。素直に開発するなら Claude Code / Codex CLI の方が当然良い。
  • それでも、Copilot Studio が Copilot Studio を作る という未来を感じるCopilot Studioの可能性を模索できたのは面白かったです。

参考リンク

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?