Power Apps や Power Automate で以前作成したものを使って効率よく作成する


# はじめに

Power Apps や Power Automate でアプリ、フローを作成する際、以前作成したアプリやフローを基に効率よく作成したいという時があります。

いくつかアプローチがあるため、整理をしたいと思います。

# 以前作成したものを見ながら一から作成する

こちらはシンプルです。まずは、以前作成したアプリやフローを開きます。別ウインドウでアプリやフローの編集画面で開き、見様見真似で作成します。少なからず開発効率はあがりますが、後述する方法と比較するとあまり効率は良くないです。

# アクションをコピーしたり、コードをコピーしたりする

部分的にコピーをして貼り付けをすることでも効率化できます。Power Apps、Power Automate それぞれのアプローチは以下の通りです。

## Power Apps でコードをコピーする

現在、Power Apps ではコードをコピーして別のアプリに張り付けることができます。
中身は市民開発者の方にとって難解と思いますが、手っ取り早くコントロールをコピーすることができます。

① コピー対象のコントロールを選択してコードをコピーします。個人的に、コンテナーを使ってコントロールをまとめておくと、沢山のコントロールを選択しなくてよいので、コピーが楽と思います。
※スクリーン自体はコピーして貼り付けできないため、スクリーン内のコピーしたいコントロールを選択して、コードをコピーして、別のアプリのスクリーンに貼り付けます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/5e193b43-8c6a-4cf6-8a6c-753a32c59d81.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/476e091a-e906-47b7-b133-fbfdafc69b9f.png)

一気に同じ画面になりました。プロパティ、数式もコピーされるため、プロパティを一個一個コピーするより非常に楽です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/892500d3-d228-4d8f-bfb3-b7009b452d3f.png)

## Power Automate でアクションをコピーする

Power Automate の場合、アクションをクリップボードにコピーして、別のウインドウ、タブで開いているフローの編集画面にて、クリップボードからアクションを追加できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/569ba0b2-32a4-4f5a-b777-536fd6fb379e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/27d34340-6e69-4c7a-bbc4-f9d1a61483bc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/12d8fb09-1a41-4c9a-8bba-1595e741925b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/896e8652-73fa-4c8a-826f-a5d135288984.png)

# 別名で保存する

以前作成したアプリやフローを別名で保存、つまりコピーを作成することができます。
似たフローを作成する場合はこちらの方法を使うのが便利です。

## Power Apps

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/3e339cdb-7a0b-4891-93f5-386a93bfa396.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/dc642ee1-9ed8-4326-b8b9-642e45414569.png)

## Power Automate

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/01b7c754-1413-4be4-8b49-51ebfaa1beaa.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/35e9f90d-270e-46ad-9023-556595be5361.png)

# (主に他人から譲りうけるとき) パッケージをもらう

自分が作成したわけではない場合、パッケージとして zip ファイルにエクスポートして、そちらをもらい、インポートすることでコピーを作成することができます。

同じ環境にインポートする際、元々のアプリを上書きしないよう、インポートの設定は、「新しく作成する」にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/66fe0a77-10a9-460e-b415-798ed230846c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6f3123a1-dd24-4458-9b11-caea52263803.png)

インポートはこちらからやります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/0dd76a12-9469-4e65-998e-427b6457bcc2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/ebb533e8-d016-40ae-93d8-23cf497803c8.png)

Power Automate の場合も同様です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/72d0ebc7-e5af-422f-a2f4-d5b883338a31.png)

# コピーを送信してもらう

Power Automate の場合、わざわざ一旦 zip ファイルにしないで、コピーを送信する機能もあります。

※たまに上手くいかないことがあります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8d9f2a29-dda2-45df-973f-b87c0457196e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/cc167f5c-5302-423f-9a45-b02e61f80b4f.png)

# (主に他人から譲りうけるとき) ソリューションをもらう

パッケージはアプリやフローごとにエクスポート、インポート実施する必要があります。
※Power Apps トリガーのフローの場合、アプリと一緒にエクスポート、インポートされます

しかし、一つのシナリオで、複数のアプリ、フローを利用する場合などには少し面倒に感じるかもしれません。

この場合は、ソリューションを利用する方法があります。以下のメニューの箇所です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b81eb2e9-4b9f-4c59-86a1-7794611a3958.png)

ソリューションは端的に言うとフォルダーのようなものです。以下のブログが参考になります。ありがとうございます。

https://qiita.com/skuramoto/items/bb053bdc8b12b771c6e4

https://qiita.com/skuramoto/items/a425e128cad2a827a5dc

注意すべき点としては、誰かからソリューションを譲りうけて、そちらを同じ環境にインポートしようとすると、元のソリューションが上書きされてしまう点です。そのため、コピーを作成したい場合は環境を分ける必要があります。

個人的には、ソリューションを利用する場合、環境含め、学ぶことや気を付けることがそれなりにあり、市民開発においてはけっこハードル高いと思ってます。

また、環境を分けるという意味で、少なからず Power Apps や Power Automate の有償ライセンスも必要となってくると思いますし、組織で有償ライセンスを利用しており、環境の払い出し運用も行われており、ソリューションを利用した開発に関してガイドラインも整備されている場合に利用を検討する感じになると思います。

一応、方法としては存在するため、軽く紹介しました。
※もちろん、仕事では環境のセキュリティガバナンス、環境払い出し運用、Dataverse、ソリューション等について支援しています

# コンポーネントを利用する

Power Apps キャンバスアプリでは、コントロールの組み合わせを部品化して再利用することができます。こちらの仕組みをコンポーネントと呼びます。
例えば、アプリのヘッダー部分など、いろいろなアプリで共通して使えそうなものをコンポーネント化して、同じアプリはもちろん、他のアプリで再利用することもできます。

https://learn.microsoft.com/ja-jp/power-apps/maker/canvas-apps/create-component

こちらは、以下の記事が参考になります。ありがとうございます。

https://qiita.com/DEmodoriGatsuO/items/c0030ead94a1bec867f1

こちらも難易度は上がりますが、開発効率を上げる一つのアプローチのため軽く紹介しました。

# まとめ

Power Apps や Power Automate でアプリ、フローを作成する際、以前作成したアプリやフローを基に効率よく作成するアプローチについて紹介しました。

市民開発をしていると、段々案がわいてきて、前に作成したもの、他の人が作成したものを基に効率よく作成したいということ上がると思いますので、本記事が参考になれば幸いです。