Power Appsの開発を業務として行う際、多くの場合は実際の運用環境と同様の構成を持つ開発環境でアプリケーションを作成します。開発環境で作成したアプリケーションを実運用環境へ移行するにあたり、注意すべき点がいくつか存在します。これらの注意点と移行手順について説明します。
対象者:開発者・受け入れ担当者
この記事で取り扱わない事
- Power Automate Flowのエクスポート
- Power Automate Flowの移行手順
- Microsoft Graph APIのエンドポイント
開発者のタスク
開発者が移行準備として実行すべき手順は以下の通りです。
- リストフォームアプリのエクスポート
- エクスポートしたパッケージの開封
- 移行先の環境情報に合わせた修正を行う
- 受け入れ担当者との情報共有
リストフォームアプリのエクスポート
事前準備
受け入れ担当者の大半はPower Platformの開発に触れたことがないと思われます、このようなレベルの担当者に対しては開発者が出荷時に受け入れ工数をなるべく少なく且つ簡潔に済むよう配慮する必要があります。
- Logic Flowの削除
Power AppsにLogic Flow(Power Automate Flow)を含んだ状態でインポートすると、稼働中のPower Automate Flowが停止します。さらに、複数のPower Appsアプリ間で共有されているPower Automate Flowがある場合、全ての関連するPower Appsアプリに同じ修正を適用する必要が出てきます。このため、受け入れ担当者にPower Automate Flowの削除を伝え、次に示す手順に従ってPower AppsからLogic Flowを除去します。
- ロジックフロー一覧を表示
- 削除したいロジックフローのその他のアクションをクリックしアプリから削除をクリック
- エラー警告が表示されることを確認する。
エラー警告が出ない場合は内部で使用していないロジックフローです。
削除されたLogic Flowは実際には消えていないため、Power Automateのマイフロー一覧にまだ存在します。この記事ではLogic Flowのエクスポートや移行手順には触れませんが、それについては別の記事で説明します。
アプリのエクスポート
フォームアプリの情報画面にアクセスし、リボンメニューからエクスポートパッケージを実行します。
エクスポートしたパッケージの開封
エクスポートパッケージの解凍
フォームアプリをエクスポートするとブラウザ設定のダウンロードフォルダに格納されます。
格納されたファイルは「ファイル名_UTCタイムスタンプ.zip」というzipアーカイブとなっています。
任意のフォルダにアーカイブファイルを解凍(展開)します。
パッケージのUnPacking
解凍したフォルダには、[msapp]という拡張子のバイナリファイル、拡張子がないバイナリファイル、jsonファイルが含まれるフォルダ、そしてフォームアプリの基本情報を記したmanifest.jsonファイルが含まれています。バイナリファイルはそのままでは編集できないためPac CLIを用いてUnPacking(開封を行います)。UnPackingの方法はこちらをご覧ください。
移行先の環境情報に合わせた修正を行う
委託業務で移行先の環境情報が得られない場合、修正せずに受け入れ担当者が理解できるようコメントを付け加え、編集を受け入れ担当者に依頼します。
修正候補となるリストIDを控える
Power Appsでは、リストフォームアプリに限らず、少なくとも一つのデータソースが必要です。リストフォームアプリの場合、データソースはSharePointリストまたはSharePointドキュメントライブラリになります。アプリのプログラムソース内で、リストやドキュメントライブラリのIDを複数箇所に定義し参照することが一般的です。修正を行う際には、対象のリストIDを記録しておくことで、複数箇所の修正作業を容易に行うことができます。
SharePointリストとフォームアプリの関連付け変更
環境を移行する際には、SharePointリストとフォームアプリの関連付けを変更することが必要です。
関連付けの定義は、「Microsoft.PowerApps > app > 数値フォルダ」内の「数値.json」ファイルで行われています。ファイル内で[embeddedApp]を検索し次の3行を移行先環境の値に書き換えます。
- siteId
- listId
- listUrl
以前はこの方法で移行が可能でしたが、現在は移行後に様々な追加修正が必要となっており、そのために定義の修正をさらに進めていきます。
データソース接続定義の変更
はじめにフォームに関連付けられたリストの接続定義を検索し変更します。
前工程で変更したリストIDが使われているファイルは2つです。
- Connections.json
- リスト表示名.json
上記2ファイル内のリストIDを移行先のリストIDに修正します。
移行先環境と開発環境でリスト表示名が同じ場合は以上で定義ファイルの修正は終わりです。
移行先と開発環境でリスト表示名が異なる場合は次の手順も追加実行してください。
リスト表示名の修正
リスト表示名が異なる場合、正しいリストに接続できず、インポート後にエラーが発生することがあります。インポート後のエラーを修正すると、レイアウトを変更したリストフォームがリセットされ、再配置が必要になります。受け入れ担当者にレイアウトの修正を依頼するのは無理があるため、修正を行うことにします。修正を行う箇所は次の箇所です
- Connections.json
- リスト名.json(ファイル名も修正対象)
- Entoropy.json
- AuxDataMap.json
- App.fx.yaml
- FormScreen1.fx.yaml(スクリーン名変更時はスクリーン名.fx.yaml)
VSCodeで作業している際には、「全ファイル一括置換」機能が非常に便利です。ショートカットキー[Ctrl + Shift + H]を使用すると、開いているフォルダ内の全てのファイルに対して検索文字列を一覧表示し、見つかったすべてのインスタンスを一度に置換することができます。また、一括置換を行うことで、置換漏れや置換ミスなどの人的ミスを減らすことが可能です。
受け入れ担当者との情報共有
スムーズな移行を実現するためには、正確な移行手順の共有が最も重要です。特に、インポートする順序に注意し、修正依頼を受けた際には、担当者に正確な指示を提供することが必要です。また、移行先環境でリストIDを見つける方法も共有するべきです。以下に、共有すべき重要な項目を挙げます。
- Pac CLIのインストール法
- Pac CLIの利用法
- SharePoint リストのリストIDを確認する方法
- プログラムソースの修正箇所
- プログラムソースの修正方法
- プログラムソースの修正内容
- Power Appsのインポート手順
受け入れ担当者のタスク
受け入れ担当者の業務は、開発担当者との環境情報の共有状況によって大きく異なります。ドメインやリストIDなどの情報が開発側と共有されている場合、対象のアプリケーションを環境にインポートし、エラーがないかを確認します。エラーが発生した場合は、開発担当者に通知し、修正を依頼することになります。
開発者と環境情報の共有が出来ない場合のタスク
リモートワークが一般的になると、様々なネットワークからの接続が増えますが、組織によってはセキュリティ上の理由から外部接続を許可しないことがあります。このような状況では、外部の開発者にドメイン情報などを共有することができないことがあります。その結果、開発者が新しい環境に適応することができず、受け入れ担当者がソースコードの修正を行う必要が出てきます。開発担当者から修正依頼が届いた場合は以下の点に注意してソースコードの修正を行います。
- ホスト名の誤り
- サイト名の誤り
- リストIdの誤り
- 修正漏れ
ホスト名の誤りに注意
SharePointのホスト名(ドメイン)は、一般的な組織のドメインとは異なります。ありがちな誤りは組織のホスト名を指定することです。SharePointのホスト名を調べる方法はいくつかありますが、最も簡単なのはSharePointにアクセスしてURLバーからアドレスを確認することです。他の確認方法もいくつかご紹介します。
・ブラウザのURLバーからアドレスを確認する
https://<組織ドメイン名>.sharepoint.com/sites/…
太字の部分がSherePointのホスト名です。
・Graph Explorer で確認する
Microsoft Graph API を利用するとMicrosoft365内のリソース情報の取得が容易になります。Microsoft Graph APIでは、ブラウザのURLバーにエンドポイントを入力することで結果を取得できます。また、プログラムを通じて実行し、結果を変数に格納して使用することも可能です。
今回は Graph Explorer を利用して読みやすい書式に成型されたデータで確認する方法を紹介します。
こちらのリンクからGraph Explorerにアクセスして調べたい環境に属するユーザーでログインします。
以下のエンドポイントを入力し、[Run query]ボタンをクリックするか、エンターキーを押してクエリを実行します。
https://graph.microsoft.com/v1.0/sites/root
取得結果の”hostname”が目的のホスト名です。
サイト名の誤りに注意
サイト名は「表示名」ではありません。
- チームサイトの場合は「グループメールアドレス」に指定した文字列です。
- コミュニケーションサイトの場合は「サイトアドレス」に指定した文字列です。
サイト名が不明の場合は次の方法で確認できます。
- ブラウザからインポート対象のリストにアクセスする。
- ブラウザのURLバーのアドレスを確認する
<hostname>/sites/<SiteName>/lists/<ListName>/AllItems.aspx
太字の箇所がサイト名です。
リストIdの誤りに注意
リストIdの誤りは致命的なエラーとなりますので細心の注意を払う必要があります。特に環境内に似たリスト名が複数存在する場合などには複数人でのクロスチェックを行うなどして、誤りの無いよう十分留意します。
・SharePointでリスト設定から確認する
FireFoxの場合List=の後”{“と”}”の間の文字列がリストIdです。
その他のブラウザでは”%7B”と”%7D”の間の文字列がリストIdです。
・Graph Explorerで確認する
Graph Explorerに以下のエンドポイントを入力します。
※{SiteId}はご自身の環境のサイトIdに置き換えてください。
https://graph.microsoft.com/v1.0/sites/{SiteId}/lists
画面右下の[Response preview]エリアで[Ctrl]+[F]キーを押して、リストの内部名を検索します。
画像のようにリスト名がハイライトされますので、完全一致するリストのスキーム(構造)を探します。”id”:”<ListId>”という箇所がありますので<ListId>の部分がリストIdです。画像の場合”e04c248a-731b-4eaf-828c-81ff9134146d”がリストIdとなります。
修正漏れに注意
一番多い修正漏れは「リストId」と「リスト名」の修正忘れです。
VSCodeなどで全ファイル一括置換を活用するなどして、修正忘れが無いよう注意します。
まとめ
Power Appsフォームアプリの移行作業は同一環境内で行う場合においても細心の注意が必要な作業です。
我々開発者であればエラーが発生しても対処法を発見するのはさほど難しくないのですが、普段開発に触れない方が担当するとなると、微細なエラーでも対処が出来ず作業がとん挫することになります。
移行作業を担当する際は経験豊富なスタッフに助力を依頼するか、専門家に依頼することも検討されたほうがいいと思います。
また、今回の記事を参考にされる場合解らないことはお気軽に㈱エクシード・ワンまでお問い合わせください。