「環境をもらえないと作れない」は、もう前提ではない——顧客テナントに触らずに作り切るための地図
案件が決まってから、最初に手を動かせるまで何をしていただろう。 アカウントの発行を待つ。貸与パソコンの到着を待つ。VPN の設定手順書を待つ。情報システム部門の承認を待つ。契約は成立しているのに、環境が揃うまで着手できない。その待ち時間に、報酬を払ってくれる人はいない。 この待ち時間を、多くの人が「仕方のないもの」として受け入れている。環境を用意してもらわないと開発は始まらない、という前提があるからだ。 その前提を、一度外してみる。 「触らない」は制約ではなく設計になった顧客のテナントに一切接続せず、自分の開発環境だけでアプリを組み上げ、ファイル1つで納品する。この形は以前から理屈のうえでは可能だったが、2026年に入って土台のほうが追いついてきた。 Microsoft の権限設計が、この形を推奨する側に回った。 開発者が AI エージェントに Dataverse を触らせようとすると、テナント全体の管理者同意と環境ごとの許可リスト登録という2段の関門を通る必要がある。この関門は迂回できない。顧客のグローバル管理者にとっては、テナント全体に効く同意を外部の委託先のために出す判断になる。承認のハードルは高い。 顧客のテナントに AI を入れる道は、技術のほうが先に閉じている。 開けようとすること自体が、無理筋になった。 もうひとつ、ゲストアカウントで呼んでもらう抜け道も細くなった。新しく作られた環境では、既定でゲストの Dataverse アクセスが遮断される 設定になっている。「ゲストで招待するから作業して」は、Power Platform では成立しない。 残る道は2つになる。顧客が正規のアカウントを発行してくれるのを待つか、そもそも触らずに作るか。 触らないと決めると、何が起きるか自分の側にすべてが返ってくる。 顧客の環境には、業務で使われている本物のテーブルがある。実際のデータが入っていて、動いているフローがあり、誰がどこまで見られるかの設定が積み上がっている。そこに入れてもらえるなら、現物を見て真似ればいい。 入らないと決めた瞬間、それが全部なくなる。渡された仕様書と、自分の頭のなかにある構造の知識だけで、同じものを組み立て直すことになる。 ここが分かれ目になる。この働き方が成立するかどうかは、契約でも交渉でもなく、構造をどれだけ正確に再現できるかで決まる。 再現しようとすると、必ず詰まる場所がある。しかもその場所は、驚くほど毎回同じところだ。 詰まる場所は4つに分かれる自分の環境で作り直すとき、つまずきは4つの層のどれかで起きる。 第1層:データの形。 テーブルとテーブルをどう繋ぐか。Lookup 列は SQL の JOIN とは違う挙動をするし、Excel から取り込んだ参照は静かに空のまま入る。名前の列を突合キーに使うと、あとから壊れる。 第2層:誰に何が見えるか。 一覧画面から隠すことと、権限で守ることは別物だ。ビューのフィルターはアクセス制御ではない。フォームから列を外しても、その列の中身は守られていない。ビジネスユニットを無効化しても、権限は切れていない。この層の誤解は、納品してから発覚すると信頼の問題になる。 第3層:認証と鍵。 鍵を渡さずに繋ぐ方法。認証は通っているのに拒否されることがあり、401 と 403 を切り分けられるかで原因が変わる。承認する人に本番権限が要らない仕組み。個人PCで作る働き方は、この層を説明できることが前提条件になっている。 第4層:コストと性能。 従量課金は誰に開かせるかで決まる。並列を増やすと遅くなることがある。検証できれいな数値が出たら、まず計器を疑う。 この4層が、「顧客の環境に入らなくても作れる」を実際に支えている中身だ。 環境をもらえば現物を見て済むものを、もらわないと決めたぶん、原理で知っておく必要がある。 それぞれの層で、何を先に読むか以下は、詰まったときに開く場所として並べてある。上から順に読む必要はない。 第1層 データの形 DataverseのLookup列はSQLのJOINではない——Excelインポートで参照が空のままになる理由 DataverseのName列をUpsertの突合キーに使ってはいけない理由と、代替キー設定の3ステップ Dataverse 代替キーで Lookup を張る——取込時正規化と親→子ロードオーダーの作法 フロント入力データをSoRに昇格させるか——判断は「他システムが書き足すか」の一点 Power Platform のローコードは行を作れる。多対多の繋ぎは作れない 第2層 誰に何が見えるか Dataverse のビューフィルターはアクセス制御ではない——ロール深度×BU 構造で守り、API で壊して確かめる Dataverse の列セキュリティ——フォームから外すだけでは列の機密は守れない Dataverse で owner と owningBU をどう使い分けるか——2語に分けると設計判断が言語化できる Dataverse ビジネスユニットの「無効化」は権限を切らない——廃止設計に失効工程を組み込む判断軸 役職名でアクセスを設計すると例外で壊れる――判定軸を「管理範囲」に移す3つの設計パターン 第3層 認証と鍵 Microsoft Entra ID で AI 外部委託を止めずに進める——鍵もデータも渡さない設計の判断軸 Azure SQL への接続情報を外部ベンダーと共有しない——Entra ID の認証梯子で「鍵を渡さない設計」を組む Microsoft Entra クロステナント:同意しても 401 が返る理由と 403 との切り分け方 Power Platform 委任デプロイ:なぜ承認者に本番権限が要らないのか Power Platform 認可設計:そのアプリが消えても残る環境×グループ 3 層の分け方 第4層 コストと性能 Power Platform 従量課金(PAYG)有効化で踏む2つの壁 Power Apps PAYG のコストは「誰に開かせるか」で決まる 並列を増やすと遅くなる理由と、直列ボトルネックを解消する3つの対策 検証で「きれいな数値」が出たら計器を疑え――4種の測定ミスと確かめる手順 作る場所を3つに分ける知識が揃っても、置き場所を間違えると台無しになる。AI に手伝わせるなら、なおさら線を引いておく必要がある。 ...