Power Appsには、標準機能としてソリューションエクスポート、およびインポート機能があります。モデル駆動型アプリの開発時、開発物を別環境へ移行する際に、この機能を使用してリリースを行っています。
ソリューションには、「マネージドソリューション」と「アンマネージドソリューション」の2つの種類があります。
本記事では、それぞれの「ソリューション」の特徴や違い、使い分けについて紹介していきたいと思います。
概要
ソリューションとは、コンポーネントを格納する箱のようなものです。
通常、開発を行う場合には、少なくとも開発環境と本番環境を用意します。開発環境で構築したコンポーネントは、テスト等を経て、最終的に本番環境へ移行する必要があります。
また、本番運用後も、システム改修を行った場合、開発環境で修正したコンポーネントを本番環境へ移行する必要があります。
その移行を行う際に、移行対象のコンポーネントをまとめる箱が「ソリューション」となります。これは、アプリケーション・ライフサイクル管理(ALM)観点でも有用な機能になります。
そして、冒頭でも説明した通り、このソリューションには、「マネージドソリューション」と「アンマネージドソリューション」の2つの種類があります。それぞれの「ソリューション」の特徴や使い分け方法についての説明を、本記事で行っていきます。
ソリューションリリースについて
まず本題に入る前に、ソリューションリリースの仕組みについて説明します。
概要で「ソリューションとはコンポーネントを格納する箱のようなもの」という説明をしましたが、具体的な使用方法としては、移行元環境で移行対象コンポーネントを含んだソリューションを作成後、「エクスポート」し、移行先環境にそのソリューションを「インポート」します。
イメージは以下の通りです。
ソリューションをエクスポートする際には、そのソリューションのバージョンを指定することができます。ソリューションをインポートする際には、エクスポートした際のバージョン情報で移行先環境へインポートされます。
2つのソリューションの使い分け、特徴
本章では「マネージドソリューション」と「アンマネージドソリューション」の2つのソリューションの、使い分けや特徴について説明します。
ソリューションの使い分け
まず、2つのソリューションのMicrosoft推奨の使い分は以下になります。
- アンマネージドソリューション
- 開発用に使用することを推奨
- マネージドソリューション
- 開発完了後、別環境へ移行するために使用することを推奨
具体的には、次のような流れになります。
- 開発環境で「アンマネージドソリューション」を作成
- 開発完了後、カスタマイズしたコンポーネントをソリューションに追加し、「マネージドソリューション」としてエクスポート
- 2で作成したソリューションを本番環境やUAT環境等の移行先環境へインポート
アプリケーション開発におけるフェーズとMicrosoft推奨ソリューションをまとめた表は以下の通りです。
フェーズ | ケース | Microsoft推奨ソリューション |
開発フェーズ | 開発環境での開発 | アンマネージドソリューション |
別の開発環境への移行 | アンマネージドソリューション | |
テストフェーズ | テスト環境への移行 | マネージドソリューション |
ユーザー受入テストフェーズ | UAT環境への移行 | マネージドソリューション |
本番移行フェーズ | 本番環境への移行 | マネージドソリューション |
各ソリューションの主な違い
各ソリューションの特徴および違いについては、以下の表の通りです。
アクション | マネージドソリューション | アンマネージドソリューション |
ソリューションの新規作成 | 不可 アンマネージドソリューションから、マネージドソリューションをエクスポートし、移行先環境にインポートすることは可能 |
可 |
ソリューションの編集 | 不可 | 可 |
ソリューションエクスポート | 不可 | 可 (マネージド、アンマネージド選択可能) |
ソリューションインポート | 可 コンポーネントは既定のソリューションにマージされず、独立 |
可 コンポーネントが既定のソリューションにマージ |
ソリューション削除 | ソリューション内のコンポーネントおよびデータが物理削除される | ソリューションは削除されるが、コンポーネントは削除されない |
ソリューションチェッカー | 使用不可 | 使用可 |
「アンマネージドソリューション」は、ソリューションチェッカーを使用することができるため、コンポーネントの信頼性を向上させながら開発することができます。
「マネージドソリューション」は、ソリューションを消すことでコンポーネント自体やコンポーネントの修正箇所を削除できるため、切り戻し等も容易にできるのが特徴です。
上記から、各ソリューションを適切なフェーズで使うことで、アプリケーション開発を効率的かつ安全に行うことができることがわかります。
マネージドソリューションの特徴および注意点
前章では、Microsoftが開発完了後の別環境への移行に関して「マネージドソリューション」で移行することを推奨していることを説明しました。
本章では、「マネージドソリューション」でのソリューションインポートの特徴や、注意点について説明していきます。
マネージドソリューションの特徴、注意点
ソリューションバージョンについて
- 過去バージョンのインポート不可
- インポートソリューションのバージョンが既存の同じソリューションのバージョンより古い場合はエラーがでてインポートが不可となる
- 同じバージョンの場合はインポートできるため、既存バージョン以上のソリューションでインポートを行う必要がある
- 再インポート時、ソリューションを上書き更新する
- インポート先環境に同ソリューションが存在していて、かつ既存バージョン以上のソリューションでインポートした場合、インポートソリューションが既存ソリューションを上書きする
ソリューションレイヤーについて
- ソリューションレイヤーは2種類あり、最上位レイヤーがアプリに公開される
- ソリューションレイヤーは、マネージドレイヤーとアンマネージドレイヤーの二部構成となっている
- 最上位のソリューションレイヤーのコンポーネントが、ユーザーが使用する画面に反映される
- マネージドソリューションはインポートした順でマネージドレイヤー上に構成される
- マネージドソリューションでインポートすると、コンポーネントはマネージドレイヤーに構成される
- 複数のマネージドソリューションがインポートされている環境の場合、最後にインポートされたソリューションは、以前インポートされたマネージドソリューションの上に存在する
- 例)「JBS_release」をインポート後、「JBS_release_2」をインポートした場合、「JBS_release_2」が「JBS_release」の上に存在する
- アンマネージドレイヤーはマネージドレイヤーの上に存在する
- インポート先環境でコンポーネントを直接修正、またはアンマネージドソリューションによりアップデートした場合、その修正箇所はアンマネージドレイヤーとして、全てのマネージドレイヤーの上に存在する。
- 注意事項:マネージドレイヤーよりもアンマネージドレイヤーがソリューションレイヤーでは上部にあるため、インポート先環境にアンマネージドレイヤーが存在する場合、その後マネージドソリューションをインポートしても修正が反映されず、アンマネージドレイヤーが優先される
その他
- マネージドソリューションとアンマネージドソリューションは同環境で共存不可
- インポート先に同じソリューションで、異なるソリューション種別のソリューションが既にインポートされている場合、エラーがでてインポートが不可となる
- ソリューション種別を変えたい場合、既存のソリューションを削除してからインポートする必要がある
- 例)環境Aのアンマネージドソリューション「Solution1」をマネージドソリューションとしてエクスポートして環境Bにインポートした後、「Solution1」をアンマネージドソリューションとしてエクスポートして環境Bにインポートすることができない
- マネージドソリューション削除時、コンポーネントは環境から削除される
- マネージドソリューションとアンマネージドソリューションに同一コンポーネントがある場合、マネージドソリューションを削除すると、アンマネージソリューション内のコンポーネントも削除される
ソリューションの使用について
同じ環境に2つの種類のソリューションがあると、ソリューション管理も煩雑になることから、「マネージドソリューション」と「アンマネージドソリューション」はMicrosoftの推奨通り、開発完了前後のフェーズにより使い分けすることをお勧めします。
また、アンマネージドレイヤーでの修正も複雑性が増すことから、できるだけ使用せず、マネージドソリューションでのインポートでコンポーネントをアップデートする方が良いと考えます。
ソリューションレイヤーについて
ソリューションレイヤーの構造
前章でソリューションレイヤーについて触れましたが、構造を図でまとめると以下のような構造になっています。
コンポーネントごとにこのソリューションレイヤーは構成されており、アンマネージドレイヤーは単一レイヤーなのに対して、マネージドレイヤーは階層化されています。
ソリューションレイヤー確認方法
実際に、各コンポーネントのソリューションレイヤーをPower Apps上で確認することができるため、その確認方法を最後に紹介します。
- 「https://make.powerapps.com/」にアクセスし、「ソリューション」タブからソリューションレイヤーを確認するコンポーネントが格納されているソリューションを開く。
- 確認するコンポーネントを選択し、画面上部にあるメニューバーの三点ボタンを押下後、「ソリューションレイヤーの表示」を選択する。
※ 例では取引先企業のフォームを確認するため、該当のフォームを選択。 - ソリューションレイヤーが表示される。最上位のソリューション(順序が一番高いソリューション)が、ユーザーが操作する際に表示される最上位のレイヤーとなる。
- ソリューションレイヤー内のソリューションを選択すると、「更新済み」タブにそのソリューションによって更新された箇所が表示される。
-
「すべて」タブを選択すると、そのコンポーネントのすべてのパラメータ値を確認することができる。
まとめ
- ソリューションには、「マネージドソリューション」と「アンマネージドソリューション」の2つの種類がある
- Microsoftは「アンマネージドソリューション」を開発環境で開発中に使用することを推奨しており、「マネージドソリューション」は開発完了後、別環境へ移行するために使用することを推奨している
- 「アンマネージドソリューション」は編集可能であり、またソリューションチェッカーを使用することができるため、コンポーネントの信頼性を向上させながら開発することができる
- 開発後の移行の際には「マネージドソリューション」を使用することで、有事の際には切り戻しを容易にすることができる
このように、ソリューションをフェーズに応じて使い分けることで、アプリケーション開発を効率的かつ安全に行うことができることが、使い分ける大きなメリットになります。
以上、本記事ではマネージドソリューションとアンマネージドソリューションの特徴や使い分け方法について説明しました。
K.Tanaka(日本ビジネスシステムズ株式会社)
BS本部DPS部CRMグループ所属。主にPower Appsモデル駆動型アプリ、Power Automate、Dynamics 365等のPower Platform製品を活用したシステム導入を行っています。
担当記事一覧