アーティサン株式会社
  • 技術ブログ
  • Power Apps
  • Power Automate

Power Apps:「公開」したのに反映されない!バージョンが「テスト」のまま止まる原因と対処【失敗談】

この記事の4行要約

  • 公開ボタンを押すとバージョン一覧の表示は「公開しています」になるが、すぐ「テスト」に変わり、「ライブ」にならない。画面上のエラー表示はない
  • 原因は、アプリ内に残っていた「すでに存在しない環境変数」への参照。数式で使っていなかったため、アプリ チェッカーにも何も出なかった
  • ソリューションに含まれるアプリは、Dataverse 側で依存関係が管理されている。今回は通常の保存は成功したが、「名前を付けて保存」で依存関係のエラーが表示され、公開も完了しなかった
  • 原因の特定には「名前を付けて保存」、予防にはデータパネルのほうきボタン(未使用データの自動削除)が効く
この記事を書いた人
高月富美恵

高月 富美恵たかつき ふみえ

Power Apps Power Automate SharePoint 教育支援

Power AppsやPower Automateを中心に、業務アプリの開発や日々の作業の自動化に取り組んでいます。SharePointも活用しながら、業務に合わせた使いやすい仕組みづくりを支援しています。

PL-500

こんにちは。アーティサンの高月(たかつき)です。

Power Apps のキャンバスアプリを改修して、いつものように「公開」ボタンを押したのに、利用者の画面に反映されない……。エラーメッセージも出ないので、何が起きているのか分からない。そんな経験はありませんか?

先日、まさにこの状態にハマってしまいました。原因を突き止めるまでにかなり遠回りをしたので、今回は失敗談として、試したこと・空振りしたこと・最終的な原因と対処法をまとめておきます。同じ症状で困っている方の時間短縮になればうれしいです。


0. そもそも「保存」と「公開」の違いとは?

本題に入る前に、前提を整理しておきます。

本題に入る前に、前提を整理しておきます。

  • 保存:変更内容を新しいバージョンとして記録する。作成者や、アプリを編集できる共同所有者だけが使える状態
  • 公開:保存したバージョンを、アプリを共有している利用者全員に届ける

(参考:キャンバス アプリを保存して公開する|Microsoft Learn)

make.powerapps.com でアプリの「詳細」→「バージョン」タブを開くと、保存したバージョンの一覧が表示されます。「公開済み」列に 「ライブ」 と表示されているバージョンが、利用者が実際に使っているバージョンです。

(参考:キャンバス アプリを以前のバージョンに復元する|Microsoft Learn)


1. 起きたこと:公開ボタンを押しても「ライブ」にならない

バージョン一覧が「テスト」のまま止まる

アプリを改修して保存し、Studio から「公開」を押しました。バージョン一覧を確認すると、最新バージョンの「公開済み」列は次のように変わりました。

  1. 「公開しています」と表示される
  2. しばらくすると「テスト」に変わる
  3. ……そのまま「ライブ」にならない
公開ボタンを押した直後は「公開しています」と表示される
しばらくすると「テスト」に変わり、「ライブ」は古いバージョンに残ったまま

「ライブ」の表示は数日前に公開したバージョンに残ったままで、利用者には古いアプリが表示され続けていました。何度公開し直しても結果は同じです。

公開処理の流れと、止まっていた場所

公開の内部処理を段階ごとに説明した Microsoft の公式ドキュメントは、残念ながら見つけられませんでした。ただ、後述のとおりブラウザーの開発者ツールでアプリの情報を確認したところ、ライブのバージョンは状態が「Published」、止まっていた最新バージョンは「Packaged」となっていました。

このことから、公開にはアプリのパッケージを作る段階(このとき「公開しています」→「テスト」)と、それを利用者向けの「ライブ」に切り替える段階があり、今回は後半の切り替えで止まっていたのではないかと考えられます。

しかも、エラーメッセージが一切出ない

厄介だったのは、どこにもエラーが表示されないことです。

  • Studio の公開ダイアログ:エラーなし
  • アプリ チェッカー:エラーなし
  • 数式バー:エラーなし

「失敗している」ことは分かるのに、「なぜ失敗しているのか」が分からない状態でした。


2. 原因を探して試したこと(ほぼ空振り)

ここからは、原因にたどり着くまでに試したことです。結果的に本当の原因ではありませんでしたが、同じような症状のときに確認する価値はあると思うので、順番に紹介します。

試したこと①:「読み取り専用」を解除する

公開に失敗した後、Studio を開き直すと、アプリが読み取り専用で開くようになってしまいました。画面上部には「別の場所で既に編集中のコントロールがあるため読み取り専用です」というメッセージが表示されます。

ツリービューの画面名の横に別の編集者のアイコンが出ていたのでカーソルを合わせてみると、表示されたのは……自分自身の名前でした。

Power Apps Studio は、同じユーザーであっても別の場所(別のタブ・別のアプリ・別の端末など)で開いている編集セッションがあれば、そちらに編集権を渡して読み取り専用になります。

他の場所で既に編集権限を持っている場合は、読み取り専用の警告が表示されます。

(参考:Microsoft Power Apps Studio でキャンバス アプリで共同作業する|Microsoft Learn)

今回の場合は、ブラウザーを閉じただけでは解消しませんでした。Studio を開いていた可能性のあるアプリをすべて終了し、15分ほど待ってから開き直すことで、ようやく読み取り専用の表示が消えました。

ただし、読み取り専用が解除されても、公開の結果は変わりませんでした。

試したこと②:作成バージョンを戻す

バージョン一覧を見返すと、公開に失敗し始めたあたりで「Power Apps のリリース」列の値(=Studio の作成バージョン)が新しくなっていました。「Studio の更新が原因かも?」と考え、作成バージョンを以前のものに戻して公開してみました。

作成バージョンは、Studio の「設定」→「サポート」から変更できます。

(参考:Power Apps Studio の作成バージョンを変更する|Microsoft Learn)

結果は……変わらず「テスト」のまま。作成バージョンは原因ではありませんでした。

試したこと③:ブラウザーの開発者ツールで通信を確認する

F12 で開発者ツールを開き、公開時の通信やコンソールのエラーを確認しました。

  • ネットワーク:すべて 2xx / 3xx(エラーなし)
  • コンソール:表示されていた警告は、公開とは関係のないものだけ

アプリの情報を取得する通信の応答を確認すると、ライブのバージョンの状態は「Published」、止まっていた最新バージョンは「Packaged」となっており、「パッケージは作成されたが、公開済みにはなっていない」状態であることは読み取れました。ただ、その理由はどこにも書かれていませんでした。

ここまでの結果を整理すると、次のようになります。

試したこと結果分かったこと
読み取り専用の解除編集できるようになったが、公開は失敗ロックは別の問題だった
作成バージョンを戻す変わらず「テスト」のままStudio の更新は原因ではない
開発者ツールで通信を確認エラーなしブラウザー側は正常。失敗しているのはサーバー側の処理

3. 突破口は「名前を付けて保存」だった

調査が行き詰まっていたので、「いったんアプリのコピーを作って、そちらで作業を続けよう」と考え、Studio で「名前を付けて保存」を実行しました。

保存ボタンの右側のトグルから「名前を付けて保存」を実行できます。

Studio の保存ボタン右側のメニューにある「名前を付けて保存」

すると、これまで一度も出なかったエラーが、その場で表示されたのです。

Error saving to document server. Code: failedToPutApp
... "code":"0x8004f036",
"message":"The dependent component EnvironmentVariableDefinition
(Id=xxx_env_List) does not exist.
Failure trying to associate it with CanvasApp (Id=...) as a dependency.
Missing dependency lookup type = EntityNameLookup."

※ ID などの値は伏せています。

エラーの意味

日本語にすると、だいたい次のような意味になります。

依存先のコンポーネントである環境変数(xxx_env_List)が存在しません。キャンバスアプリの依存関係として関連付けることができませんでした。

つまり、アプリが「存在しない環境変数」を参照している、ということです。

なお、通常の「保存」ではエラーは表示されず、保存も成功していました。

「公開」は後半の処理がサーバー側で行われるため、失敗しても画面にエラーが返ってこないと考えられます。一方、「名前を付けて保存」は保存の結果をその場で返すため、同じ原因のエラーが表示されたのだと思われます。


4. 原因:アプリ内に残っていた「消えた環境変数」への参照

ソリューション内のアプリは、依存関係がチェックされる

今回のアプリはソリューションに含まれるキャンバスアプリでした。

ソリューションに含まれるアプリは、Dataverse 側で「このアプリが使っている部品(環境変数など)」との依存関係が管理されています。参照している部品が環境に存在しないと、この関連付けに失敗してしまいます。

ただし今回は、通常の保存は成功し、失敗したのは「名前を付けて保存」(エラー表示あり)と公開(エラー表示なし)だけでした。どの操作で依存関係がチェックされるのかは分かっていませんが、少なくともこの2つの操作では、関連付けの失敗が影響していたと考えられます。

(参考:ソリューション内からキャンバス アプリを作成する|Microsoft Learn)

(参考:Microsoft Dataverse における Power Platform を使用したソリューション コンポーネントの依存関係の追跡|Microsoft Learn)

アプリが存在しない環境変数を参照していたため、依存関係の登録に失敗した

環境変数とは?

環境変数は、SharePoint のサイトやリストの指定など、環境ごとに変わる値をアプリやフローの外に出しておく仕組みです。開発環境と本番環境で接続先を切り替えたいときに便利です。

ソリューション内のキャンバスアプリで SharePoint などのデータソースを追加すると、設定によっては環境変数が自動で作られます。

(参考:Power Platform ソリューションで環境変数を使用する|Microsoft Learn) (参考:キャンバス アプリでデータ ソース環境変数を使用する|Microsoft Learn)

※ 補足:この設定は、Studio 左下の歯車アイコンから開く「設定」→「全般」にある「データソースの追加時に環境変数を自動で作成する」です。オンにしていると、データソースを追加したときに環境変数が自動で作成されます。

Studio の「設定」→「全般」にある「データソースの追加時に環境変数を自動で作成する」の設定

今回のアプリには、以前の改修で使っていて、その後削除した環境変数への参照だけが残っていました。

なぜ気づけなかったのか

一番の落とし穴は、その参照を数式で一切使っていなかったことです。

  • 数式で使っていない → 数式エラーにならない
  • 数式エラーがない → アプリ チェッカーにも出ない
  • アプリは問題なく動く → 改修中も気づかない
  • 公開の失敗はサーバー側で起きる → 画面にエラーが出ない

「使っていない参照が残っているだけ」で、公開がまるごと止まってしまうとは、正直まったく予想していませんでした。

補足:依存関係はソリューションから確認できる

環境変数とアプリの依存関係は、ソリューションの画面から確認できます。

  1. Power Apps で対象のソリューションを開く
  2. 左側の「オブジェクト」から「環境変数」を開く
  3. 対象の環境変数の縦三点(︙)から「詳細」→「依存関係を表示」を選択する
ソリューションの環境変数一覧で、縦三点メニューの「詳細」から「依存関係を表示」を選ぶ

「削除ブロック」タブには、その環境変数を使っているキャンバスアプリなどが表示され、「次の項目により(環境変数名)の削除がブロックされます。」と案内されます。

依存関係の「削除ブロック」タブに、環境変数を使っているキャンバスアプリが表示される

注意:このように表示されていても、実際に試したところ、依存関係のある環境変数をそのまま削除できてしまいました。原因は分かっていませんが、「依存関係があれば削除はブロックされるはず」と考えず、環境変数を削除する前に依存関係を確認し、アプリ側の参照を先に片付けておくのが安全です。


5. 対処法と再発防止

対処:残っている参照を削除する

アプリ内に残っている参照は、Studio のデータパネルで確認できます。データパネルの一覧から、存在しない環境変数への参照を探して削除します(後述のほうきボタンでも削除できます)。

参照を削除し、保存してから公開し直したところ、バージョン一覧の「ライブ」が無事に最新バージョンへ移り、公開に成功しました!

活用したい!データパネルの「ほうき」ボタン

Studio のデータパネルには、こうした「使っていない参照」をまとめて片付けてくれる便利なボタンがあります。

「データの追加」の右側にあるほうきのアイコンがそれです。カーソルを合わせると「現在使用されていないデータを自動的に削除する」と表示されます。

データパネルの「現在使用されていないデータを自動的に削除する」ボタン

このボタンを押すと、アプリ内のどこからも使われていないデータソースやコネクタを自動で削除してくれます。今回の「存在しない環境変数への参照」も、このボタンで削除されることを確認しました。

「数式では使っていないのに参照だけ残っている」状態は目視では見つけにくいので、改修の区切りや公開の前に一度押しておくのがおすすめです。

ただし、これから使う予定で追加しておいた、まだ数式で使っていないデータソースも、未使用と判断されて削除される可能性があります。改修の途中で使う場合は、ボタンを押したあとにデータパネルを確認し、必要なデータソースが消えていたら追加し直してください。

公開が「テスト」で止まったら、まず試したいこと

今回の経験から、同じ症状に出会ったときにまず試したいことをまとめました。

公開が「テスト」で止まったら、まず試したいこと
  1. まず「名前を付けて保存」を試す:公開では見えないエラーの詳細が表示されることがある
  2. エラーに出てきたコンポーネントを確認する:環境変数など、アプリが参照している部品がソリューション(環境)に存在するか

そして再発防止として、データソースや環境変数を削除・差し替えたあとは、ほうきボタンで未使用のデータを片付けてから公開することを習慣にしたいと思います。


まとめ

  • 公開が「テスト」で止まり、エラーも出ないときは、サーバー側の処理で失敗している可能性が高い
  • ソリューションに含まれるアプリは、使っていない参照でも依存関係のチェック対象になる
  • 原因の特定には、「名前を付けて保存」でエラーを表示させるのが近道
  • 予防には、データパネルのほうきボタンで未使用のデータを削除してから公開するのが効果的

エラーが出ないトラブルほど、遠回りしてしまいがちです。この記事が、同じ症状で困っている方のヒントになればうれしいです。

弊社では、Copilot StudioやPower Platform、SharePointの導入・構築のご支援をしております。「自社の業務だとどんなアプリが作れそうか」「プレビューの機能をどう運用すればよいか」といったご相談も、お気軽にご相談いただけると嬉しいです。弊社としても最新情報を発信していければと思っております。