Microsoft公式の情報は頻繁にアップデートされているため、本記事は2026年4月時点の仕様に合わせて整理しています。昔の学習サイトや古い情報では Process Advisor や Per User Plan といった古い名称がまだ残っていますが、今はそれぞれ名称・構成が変わっている点も補足していきます。
📑 目次
- PART 1 ── 要件分析とソリューション構想
- PART 2 ── 実装・トラブルシュート・運用監視
- 振り返って気づいた3つの学び
PART 1 ── Solution Envisioning
① 要件分析とソリューション構想の勘所
PL-600の出題比率で最も大きいのが「ソリューションの構想と要件分析」で、45〜50%を占めています(2024年9月のスタディガイド改訂以降)。ここでは意思決定のフレームを5つに分けて整理します。
1-1. 標準機能で足りないときの判断軸 ── ISVとPoCの使いどころ
アーキテクトが最初にぶつかるのは「OOB(Out of the Box)で賄えるか、ISVを選ぶか、カスタム開発するか」の三叉路です。ここの判断軸がブレると、後工程のライセンス設計・運用コストすべてがズレていきます。
SMS送信は標準機能に存在しない
Power Platformの標準コネクタにはキャリアグレードのSMS送信機能は含まれていません。試験で「SMS通知を実装したい」と出てきたら、反射的にTwilio / Telesign などのISVソリューションまたはサードパーティコネクタを推奨する、と覚えておけば良いです。
なぜ? Power Automateには「テキストメッセージを送信」系のアクションは存在するものの、これはDataverse内のToast通知やTeams通知系に近い話で、電話番号宛のキャリアSMSとは別物。電話番号宛の送信は常にキャリア回線を経由するため、キャリアと契約しているISV経由で送るのが実務の標準解です。
電子サイン(eSignature)はAppSourceから導入する
契約書への電子署名を要件に含む場合、DocuSign / Adobe Sign といったISVソリューションをAppSourceから導入するのが正解です。「AppSourceからダウンロード」という言い方は正確ではなく、AppSourceは環境にインストールするプラットフォームなので、「導入する/構成する」という表現の方が実装イメージに近いです。
なぜ? Dynamics 365やPower Platformには、法的拘束力のある電子署名機能が OOB で提供されていないため。法的有効性を持つ電子署名には認証局との連携、タイムスタンプ、監査ログなどが必要で、これらを全部自前で作るのは現実的ではありません。
要件が曖昧な場合はPoCとトライアル環境
「顧客が何を欲しいか具体化できていない」状況でフル実装に突っ込むのはアーキテクトとして最悪の選択。まずPoC(概念実証)またはトライアル環境で要件を具体化するのが鉄則です。
なぜ? 手戻りコストが開発後期に指数関数的に膨らむから。PoCで3日間〜1週間のサンドボックス検証を挟むだけで、要件の誤解で数十人月を溶かすリスクを大幅に下げられます。試験では「フル開発で提案する」という選択肢が必ず罠として入っているので、そちらに飛びつかないこと。
ISV選定時はロードマップとライセンスコストの両輪で評価
ISVソリューションを採用するときは、機能の有無だけでなくロードマップ(製品が更新され続けるか)と独自のライセンスコストの2点を必ず評価します。ベンダー都合で更新が止まれば、数年後に全置換が必要になります。
1-2. ライセンスと権限モデルの境界線
コールセンターエージェントは Portalライセンス不要
Power Pages(旧Portal)のライセンスは外部ユーザー(B2Cの顧客や取引先など)向けに設計されたもの。社内のコールセンターエージェントは内部ユーザーなので、Dynamics 365 Customer Service などのD365ライセンスで足ります。
なぜ? Power Pagesライセンスは匿名・認証済みの外部訪問者向けに最適化されており、Dataverseへの直接的な読み書き操作は限定的。一方、内部エージェントはDataverseのモデル駆動型アプリでケース管理やナレッジベース検索を行うため、D365 Customer Serviceの機能フルセットが必要になります。ライセンスは「誰が、どの入り口から、どのレベルの機能を使うか」で切り分けられている、と理解しておくと応用がききます。
ポータルのIDプロバイダーは1つに絞るのが基本
Power Pagesで外部顧客のサインインを受ける際、IDプロバイダーは原則1つに絞るのが設計の標準解です。複数のIDプロバイダーを混在させることは技術的には可能ですが、運用複雑化・UX分断・アカウント重複のリスクが跳ね上がります。
なぜ? 同じユーザーがAzure ADでもLocal認証でも登録できてしまうと、Dataverse上に二重の連絡先レコードが生まれ、マイページや注文履歴が分裂します。B2Bパートナー向けと一般消費者向けでサイトを分ける場合など例外はありますが、1サイト1プロバイダーが基本線。
1-3. データ戦略の全体像
製品情報の一次保存場所はDataverseテーブル
製品マスタのようなビジネスの中核データは、原則としてDataverseテーブルで管理します。SharePointリストやExcelに置くのはリスクが大きく、トランザクションの整合性・参照整合性・セキュリティロールによるアクセス制御を欠きます。
Dataverse → データレイク連携は2025年重要更新
ここは情報のアップデートが激しいエリアなので要注意です。「DataverseのデータをAzure Data Lakeへ」と聞くと昔は Export to Data Lake という機能名が出てきましたが、これは2024年11月1日で非推奨、2025年3月25日から段階的に廃止されています。
現在推奨されているのは以下の2択です。
| 選択肢 |
特徴 |
向いているシナリオ |
| Azure Synapse Link for Dataverse |
自社のストレージアカウントにDelta/Parquet形式で連続エクスポート。BYOD的な使い方。 |
既存のデータパイプライン資産がある。ストレージを自分で管理したい。 |
| Link to Microsoft Fabric |
No-copy, No-ETL。Dataverseの境界内にデータを保持したまま、Fabric側から読み取り可能(read replica)。 |
Fabric/Power BIで分析中心。データ移動のコスト・運用を減らしたい。 |
試験対策上の注意:「Synapse LinkとDataflowを使う」という古い参考書の記述は今もまだ出回っていますが、2026年時点では「Synapse Link(またはLink to Fabric)+必要に応じてDataflow」と理解しておくのが正しいです。Fabric Linkが選択肢に入ってくる可能性も高いので、両方押さえておきたいところ。
金額予測にCustomer Insightsはズレている
「売上金額を予測したい」という要件で Customer Insights を選ぶと減点対象です。Customer Insightsは顧客データ統合・セグメンテーション・CLTV分析を主眼にしたプラットフォームで、「売上金額の将来予測」は主戦場ではありません。
なぜ? 売上予測(Revenue Forecast)はD365 Salesの予測機能が一次候補。商談(Opportunity)のパイプラインを分析して売上予測を行うネイティブ機能です。より汎用的な予測モデルを作りたいなら AI Builder の予測モデルも選択肢になります。Customer Insightsは「顧客が誰か・何を買うか」の予測寄りで、「いくらになるか」の予測とは目的関数が違います。
チャートの主戦場はD365ダッシュボード vs Power BI
| 用途 |
選ぶもの |
根拠 |
| シンプルな積み上げ・円・棒グラフで十分 |
Dynamics 365 標準ダッシュボード |
Dataverseと直結。構築・共有コスト低。 |
| クロスデータソース、複雑な計算、DAX、階層ドリルダウン |
Power BI |
DAX・リレーションシップ・RLSが強力。 |
Power PagesとD365ダッシュボードは「OOBで埋め込めない」
Power PagesにDynamics 365の標準ダッシュボードをOOBで埋め込む機能は用意されていません。これは試験に頻出する引っ掛けポイントです。
なぜ? D365標準ダッシュボードはモデル駆動型アプリの内部コンポーネントで、Power Pagesの外部ユーザー向けレンダリングパイプラインとは異なるランタイムで動いているため。一方でPower BIレポートの埋め込みは公式にサポートされているので、ポータル上で分析ビューを見せたいときはPower BIレポートを設計するのが正解です。なお、Power PagesとPower BIの「標準統合」はなく、Power BI埋め込みの設定を自分で行う必要があります。
1-4. 非機能要件として整理すべきもの
試験では「これは機能要件か、非機能要件か?」を見分ける問題がよく出ます。「システムが何をするか」が機能要件、「どのように振る舞うべきか・品質特性」が非機能要件。
クレジットカード情報の非保存 → 非機能要件(セキュリティ)
なぜ? 「カード情報を保存しない」というのは、システムの機能そのものを定義していない。むしろPCI-DSS準拠やデータ保護という品質特性を定義している。機能要件は「決済処理を実装する」。非機能要件は「決済処理が完了後、カード情報を24時間以上保持しない」。この切り分けが重要。
役割ベースアクセス制御 → 非機能要件(セキュリティ)
「ユーザーが自分の役割に必要なデータと機能にのみアクセスできる」も非機能要件です。RBAC(Role-Based Access Control)はセキュリティという品質特性を定義するもの。
1-5. プロセス改善の選択肢2025年重要更新
ここも名称変更が激しいエリアです。「タスクマイニング」と「プロセスマイニング」の両方を含むソリューションで、昔は Process Advisor と呼ばれていましたが、現在はPower Automate Process Miningに統合されています。
| 古い名称(2023年以前) |
現在の名称(2025〜) |
カバー範囲 |
| Process Advisor |
Power Automate Process Mining |
プロセスマイニング(システムログ起点)+タスクマイニング(画面録画起点)の両方を統合 |
補足: 2025年1月から Process Mining thin client app(Webクライアント)が利用可能になり、インストール不要でプロセス分析が可能に。また Fabric OneLake からのデータ取り込みもサポートされるようになりました。試験では新機能そのものが問われる可能性は低いですが、「プロセス分析にはProcess Miningを推奨」と答えられれば十分です。
PART 2 ── Implementation & Operations
② 実装・トラブルシュート・運用監視の勘所
要件を固めた後、実装フェーズとGo-live後のトラブルシュートで押さえるべき論点を、15項目に分けて整理します。ここは「現象 → 調査すべき場所 → 対処法」の型で覚えると効きます。
2-1. Power Pagesのコンポーネント設計
空き情報・在庫・予約可能レコードの一覧表示 → List
「ポータルに空き情報を並べたい」「予約可能な会議室を一覧表示したい」といった要件の答えは、ほぼ例外なくListコンポーネントです。
なぜ? Power PagesのListは、Dataverseのビューをポータルページに直接マッピングする公式コンポーネント。どのテーブル・どのビュー・どのフィルター条件で見せるかをノーコードで設定できます。検索・ソート・ページング、Create/Edit/Delete権限の細かい制御もLiteパーミッションで対応可能。Basic Formと組み合わせれば「選択して申し込む」まで完結します。
ポータルから外部APIを呼ぶ → コンポーネント+Web Template+Site Settings
Power Pagesから外部APIを呼びたいときは、以下の3点セットで実装します。
| 要素 |
役割 |
| コンポーネント(Web Component / React) |
UI描画とユーザー操作の受付 |
| Web Template(Liquid) |
サーバサイドで外部API呼び出しのラッパを作る |
| Site Settings |
APIエンドポイントや認証トークンの設定値を外部化 |
なぜ? クライアントJavaScriptから直接外部APIを呼ぶとCORSと認証情報漏洩のリスクがあるため、Web TemplateというサーバサイドのLiquid経由で呼び出すパターンが安全。エンドポイントや認証情報をSite Settingsで管理しておけば、本番/検証でURLや鍵を切り替える運用も楽になります。
429エラー(Too Many Requests)への対策最新パターン
ピーク時に429エラーが出る場合、以下の2方向で対策します。
| レイヤ |
対策 |
| クライアント側 |
Retry-After ヘッダに従う指数バックオフ(exponential backoff) |
| サーバ側 |
Custom API を作り、リトライ処理や操作のスロットリング制御を集約 |
なぜ? 429 は「短時間に送りすぎた」を意味する標準的なレート制限応答。HTTP標準では Retry-After(または retry-after-ms)ヘッダが返るので、クライアントはこれに従って待機&再送するのが基本線。ただしポータルから直接Dataverse操作を連発する構成だとボトルネックが可視化しづらいので、操作をCustom API側にまとめてサーバサイドで制御する方がエンタープライズ運用では保守しやすいです。「操作の集約+リトライの一元化」がキーワード。
オムニチャネル強化や大型アップデートの前に、ダウンタイム中のメッセージを出したい場合は以下の手順です。
- Power Platform管理センター → Power Pagesサイト → 対象サイトを選択
- 「Site Actions」→「Enable maintenance mode」
- 「Custom page」を選び、独自のカスタムHTMLページのURLを指定
カスタムHTMLページの注意点:
- そのページは公開アクセス可能であること
x-frame-options: SAMEORIGIN ヘッダを含めない(iframeで表示されるため)
- 同じPower Pagesサイト上にホストしない(サイト自身がダウンしているとメンテページも落ちる)
この3点は実装上の落とし穴なので、面接や現場の会話でも高確度で役立ちます。
2-2. Canvasアプリの実装パターン
CanvasにGoogleマップを出す → Launch + Image
Canvasアプリに地図機能を組み込むとき、Googleマップを使う場合は以下の組み合わせになります。
| やりたいこと |
関数・コントロール |
しくみ |
| アプリ内に地図を画像として表示 |
Image コントロール + Google Static Maps API URL |
緯度経度をURLパラメータに渡すと画像PNGが返ってくる |
| 別アプリ(Googleマップ)を起動 |
Launch("https://maps.google.com/...") |
ブラウザまたはモバイルのマップアプリを外部で開く |
補足: Bing Mapsコンポーネントは標準で用意されています(Map control)。Googleマップ縛りでなければBing側で実装する方が楽。案件でGoogleマップ指定があった場合のみ上記のLaunch + Imageパターンを使います。
決済処理中のローディング表示 → Context変数+Visible
保険会社のCanvasアプリで「決済が完了するまでローディングアイコンを出したい」ような要件の実装は以下のパターン。
- 決済ボタンのOnSelectで
UpdateContext({isProcessing: true}) を実行
- ローディングコントロールの
Visible プロパティに isProcessing をバインド
- 決済完了後、
UpdateContext({isProcessing: false}) で非表示に戻す
なぜContext変数か? グローバル変数(Set)はアプリ全体で共有されるので、画面ローカルな表示制御には向きません。Context変数(UpdateContext)は画面内スコープに閉じるため、ボタン状態・ローディング表示・フォーム検証メッセージのような「この画面だけの一時的な状態」を管理するのに最適です。
起動が遅いときに調べる2つの数字
Canvasアプリの起動が遅い場合、確認するのは「データソース数」と「コントロール数」の2点です。
| 観点 |
目安 |
対策 |
| データソース数 |
30を超えると起動時間が顕著に増加 |
統合ビュー/集計ビューに置き換える、不要なものを削除 |
| コントロール数 |
500超で操作レスポンス悪化 |
コンポーネント化、画面分割、仮想化 |
Canvasアプリの監視ツール3種の使い分け
| ツール |
見えるもの |
主な用途 |
| Application Insights |
ユーザー操作ログ、エラー、カスタムテレメトリ |
画面単位の利用状況把握、エラーの原因調査 |
| Power Apps Analytics |
アプリ・接続・サービスの稼働状況 |
「アプリやコネクタに障害がないか」の俯瞰 |
| Dataverse Analytics |
API呼び出し回数、ストレージ消費 |
API制限に近づいていないかの確認、ライセンス最適化 |
覚え方: Application Insights はユーザー行動を見る、Power Apps Analyticsはアプリ健全性を見る、Dataverse Analyticsはデータプラットフォームの消費量を見る。3つのレイヤに分けて覚えると混乱しにくいです。
2-3. 複数アプリを使う場合のライセンス設計2024年以降の名称で整理
ライセンス計算は頻出トピックなので、2024年以降の名称で整理しておきます。
| シナリオ |
適切なライセンス |
金額目安 |
| Canvasアプリ1つだけを使う |
Power Apps per app(1人1アプリ) |
$5/user/app/月 |
| Canvas 2つ + モデル駆動型 3つ(合計5アプリ) |
Power Apps Premium(旧 Per User Plan) |
$20/user/月 |
名称変更の注意: 昔「Power Apps per user」と呼ばれていたものは、現在Power Apps Premiumに改名されています(内容は同じ)。古い教材ではいまだに「per user」「P1/P2」という表記が残っていますが、現行の公式ドキュメントとPL-600の最新出題はPremiumベース。
なぜ5アプリならPremiumか? Per Appは1人1アプリで$5/月。5アプリなら5×$5 = $25/月になり、Premium $20/月より高くつきます。損益分岐点は1人あたり4アプリ。5アプリ以上使うユーザーがいるならPremium、3アプリ以下ならPer Appの方が経済的です。試験では「per appはstackable(積み重ね可能)」という仕様を押さえた上で、計算させる問題が出ます。
2-4. 外部連携トラブル:調査の3点セット
同期がズレる・余計なビジネスロジックが走る
外部システムとDataverseを同期する構成で「データが合わない」「想定外のロジックが発火する」場合、確認する場所は以下の3点です。
| 確認先 |
見るもの |
| SDK(プラグインのトレース) |
サーバサイドのカスタムロジックが何を実行したか |
| トレースログ |
プラグイン・ワークフローの実行履歴と例外スタック |
| 監査(Audit) |
レコード単位の変更履歴(誰が・いつ・何を) |
なぜこの3つか? 異なる粒度で「何が起きたか」を追跡するため。監査は「データの変化」、トレースログは「コードの実行結果」、SDK(プラグイン開発・登録ツール)は「どのコードが動いたか」という違うレイヤーで切り分けられます。3つを突き合わせることで「外部システムから来たデータが、どのプラグインによって書き換えられ、最終的にどうなったか」が追えます。
Go-live後にルックアップに値がない・重複・望ましくない更新
本番切り替え直後に起きがちな以下のような現象です。
- ルックアップ列の参照先が空になっている
- データが重複して入っている
- 意図しない上書き更新が走っている
このときの調査順は次の3点。
- SDK(プラグイン登録ツール)で、どのプラグインがどのイベントに登録されているか確認
- プロセス(ワークフロー)セッションで、実行履歴とエラーを確認
- 投入順序の確認 ── 参照元テーブル(マスタ)より先に参照先(トランザクション)を投入していないか
なぜ投入順序が重要? Dataverseはルックアップ列で参照整合性を取るため、参照先レコード(例:商品マスタ)が存在しない状態でトランザクション(例:受注)を投入すると、ルックアップが埋まらずに欠損します。データ移行時はマスタデータ → トランザクションデータの順が鉄則。
ポータル移行後「このメールアドレスは既に使用されています」
ポータル移行で旧システムから顧客データをDataverseに取り込んだ後、顧客がサインアップしようとすると「メールアドレスが既に使われています」とエラーになるケースがあります。
解決手順は次の2ステップ。
- 該当顧客にポータル招待を再送する(
adx_invitationの仕組み)
- ポータル側のSite Settingsで、Dataverse連絡先テーブルとのマッピング設定を確認
なぜ? 移行データの連絡先レコードは既に存在するが、ポータル認証アカウントとのリンクがない状態。招待リンクを再送することで、Microsoftアカウントやローカル認証と既存連絡先レコードを紐付けできます。Site SettingsのAuthentication/Registration/InvitationEnabled などが正しく有効化されている必要があります。
2-5. ポータルにサインインできない
「ログインできない」症状への定番チェックは以下の2ステップ。
- ブラウザでサードパーティCookieとローカルデータを有効化
- ブラウザの履歴とキャッシュをクリア
なぜサードパーティCookieか? Power Pagesの認証フローでは、IDプロバイダー(Azure AD B2Cなど)のドメインとポータルドメインが異なるケースが多く、その間の認証トークン受け渡しにサードパーティCookieを使っています。ブラウザ側でこれを無効化していると、認証成功後にセッションが確立できずループします。最近のブラウザはデフォルトで制限が厳しいので、このチェックは実務でも頻出します。
2-6. Dataverseコネクタ経由の文書移行
旧システムからDynamics 365へ文書(Note、Attachment、File列)を移行する際、Dataverseコネクタを使う構成が基本形。Dataflows、Azure Data Factory、カスタムアプリなどで取り込み元を作り、Dataverseコネクタを介してD365側に書き込みます。
ポイント: 文書はサイズが大きくAPI呼び出し回数も多いので、APIレート制限(前述の429)に当たりやすい領域。バッチサイズを小さくして分散投入するのがセオリーです。