Power Automateは、コーディングの知識がなくともお手軽に業務の自動化を行うことができる非常に有用なツールです。
しかし、誰でも簡単に始めることができるといえど、そこにはお作法が存在します。
お作法を守らずに作成すると、「他の人がメンテナンスできない」や「修正時のコストが大きい」といった問題が発生します。
そこで、Power Automateに関する案件を数多く対応してきた弊社が、現在までに蓄積した「Power Automate設計時のノウハウ」について紹介します。
本記事を読んでいただくことで、Power Automateを扱う際の「やるべきこと・やってはいけないこと」を知り、より保守性の高いフローを作るコツを掴めるかと思います。
内容としては、既にPower Automateでフローを作成したことがある方に向けた記事です。
また、これからPower Automateを作成したい方も、事前に一読していただくことをお勧めします。
Power Automate初心者の方は、以下の記事も参考にしてください。
第5回目の今回はApply to eachでコンカレンシー制御を行う場合は、変数の設定を行ってはいけないという内容についてお伝えしていきます。
アンチ・パターン(Apply to eachの中で変数を設定)
最初にNG例について紹介します。
今回作成したPower Automateは以下です。 (Arrayの各値を1つずつ表示しているだけのフローです。)
ポイントとしては、以下2点です。
Apply to each処理の中で、コンカレンシー制御をオンにしている
Apply to each(以下、ループ処理)の中で変数の設定アクションを使用し、変数にて値を保持している
上記フローを実行した際、作成:保持した値の表示アクションには、 各ループの値(one ~ five)がそれぞれ格納されると思ったのではないでしょうか。
しかし、実際に結果を見てみると、予想と異なる値が格納されていることが分かるかと思います。
ちなみに本フローを複数回実行すると、実行結果ごとに作成:保持した値の表示アクションに表示される値は異なっておりました。
(みなさんも実際にフローを作成し、確認されることをおすすめします。)
なぜこのような結果となるのでしょうか?
それは、変数はすべてのループ処理で共通のリソースを同時参照するためです。
イメージは以下です。
Apply to eachでコンカレンシー制御を行った場合は、各ループ処理が同タイミングで実行されます。
その際、変数の値は各ループで共通となるため、いずれかのループ処理で設定した値が、他のループ処理から参照されることになるわけです。
よって、Apply to eachでコンカレンシー制御を行う際に、変数の設定を使用すると、予想外の値が格納される可能性があるためおすすめいたしません。
ベスト・プラクティス(Apply to eachの中で作成を設定)
上記の対応を回避するためには、変数ではなく作成を用います。
改良したPower Automateは以下です。
変数の設定:現在のアイテムを「変数」で保持アクションを作成:現在のアイテムを「作成」で保持アクションに変更しました。
上記フローを実行すると、予想通り各ループの値(one ~ five)がそれぞれ格納されました。
作成の場合は、コンカレンシー制御を行ったとしても、各ループ処理で個別のリソースが参照されます。
よって、いずれかのループ処理で設定した値が、そのループ処理のみから参照されることになります。
(いわゆる「スレッドセーフ」となります)
さいごに
Power Automateで処理を高速化する場合には、Apply to eachアクションのコンカレンシー制御はよく使われる内容だと思います。
しかし、今回の内容を知っていないと予想と異なる値が格納されることになるため、注意が必要です。
今回ご紹介した内容も、とても有用な内容ですので、是非覚えていただきたいです!
【こちらも合わせて読みたい】
地方自治体ローコード導入・運用支援サービス(Power Apps・Power Automate)
Microsoft社が提供するローコード技術であるPower Platformを用いて、自治体様のDX化を支援します。
X-SP | SharePoint デザイン・機能拡張サービス
デザイン×機能を兼ね備えたSharePointを提供いたします。
SharePointの利便性を向上し、操作性と視認性を兼ね備えたデザインでユーザーの業務効率化・ストレス低減を提供します。
内製化支援サービス | Power Platform(Power Apps・Power Automate)
Power Platform(Power Apps・Power Automate)開発や運用をスムーズに内製できるよう支援いたします。
DX人材育成プログラム | Power Apps・Power Automte 教育
Microsoft社が提供するローコード技術であるPower Platformを用いて、社内のDX化を推進するための人材を育成いたします。
Power Apps/Power Automateアプリ開発・導入支援サービス
Microsoft社が提供するPower Apps / Power Automateの導入支援として、高度なアプリも最速で作れる業務アプリ作成支援サービスを提供いたします。
SharePointモダン化コンサルティングサービス
従来のSharePoint から移行・モダン化したい方に向けて、事前調査からサイト作成・活用支援までトータルなコンサルティング・技術支援を提供いたします。
小刀稱知哉
大分県出身(温泉大好き)、現在は東京都在住
1990年生まれ
30才でメーカーの技術営業からIT業界にジョブチェンジ!!!
趣味は読書
Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当しております!
持ってる資格はPL-200/PL-300/PL-400/PL-600/MS-700/AZ-104/AZ-305
こんにちは。アーティサン株式会社の小刀稱(ことね)です。