ADVERTISEMENT

【Power Automate】並列ブランチの順序でつまずく時の実行履歴から原因を読む方法

【Power Automate】並列ブランチの順序でつまずく時の実行履歴から原因を読む方法
🛡️ 超解決

並列ブランチを設定したはずなのに、意図した順序でアクションが実行されずに困った経験はありませんか。Power Automateでは、並列ブランチ内のアクションは既定で非同期に実行されるため、実行のたびに結果が変わることがあります。この問題を解決するには、実行履歴を正しく読み解くことが重要です。本記事では、実行履歴から順序の問題を特定する方法と、その対策を解説します。

【要点】この記事で確認すること

  • 最初に見る場所: 各実行の「アクション」タブ内のタイムスタンプとステータス
  • 切り分けの軸: トリガー直後の並列ブランチか、ループ内の並列ブランチか
  • 注意点: 並列ブランチの実行順序は保証されないため、依存関係があるアクションは逐次バランチに変更する必要があります

ADVERTISEMENT

1. なぜ並列ブランチの順序が問題になるのか

Power Automateの並列ブランチは、複数のアクションを同時に実行するための機能です。しかし、この並列実行には明確な順序保証がありません。たとえば、ブランチAでファイルを作成し、ブランチBでそのファイルを編集するといった依存関係がある場合、ブランチAが先に完了しないとブランチBがエラーになります。このようなケースでは、実行履歴を確認して実際の実行順序を把握しなければ、原因を特定できません。

また、ループ処理(Apply to each)の中で並列ブランチを使うと、反復ごとに順序が異なることもあります。これにより、結果が不安定になり、デバッグが困難になります。まずはこの特性を理解した上で、実行履歴の読み方を学びましょう。

2. 実行履歴の基本構成と読み方

Power Automateの実行履歴は、各フローの実行が完了した後、フローの詳細画面から確認できます。実行履歴画面では、「アクション」タブに各アクションの開始時刻、終了時刻、ステータスが表示されます。並列ブランチの場合、複数のアクションが同時に開始されていることがタイムスタンプから読み取れます。しかし、実際の処理順序はサーバー側のスケジューリングに依存するため、同じアクションでも実行ごとに開始時刻が前後することがあります。

2.1 タイムスタンプの見方

「アクション」タブでは、各アクションの「開始時間」と「終了時間」がUTCで表示されています(必要に応じて現地時間に変換してください)。並列ブランチ内のアクションは、開始時間がほぼ同じか、数十ミリ秒の差で実行を開始します。もしあるアクションの開始時間が他のアクションより明らかに遅い場合は、そのアクションが他のアクションの完了を待っていた可能性があります。これは「Configure Run After」設定や、依存関係による待ちが発生した場合に見られます。

2.2 ステータスの確認

各アクションのステータスは「成功」「失敗」「スキップ」などで表示されます。順序問題で失敗する場合、通常は先行アクションの結果を参照する後続アクションが「失敗」になります。このとき、失敗したアクションの「入力」や「出力」を開くと、期待した値が得られていないことが確認できます。たとえば、前のアクションで作成したファイルのIDを参照しようとして、そのアクションがまだ完了していなければエラーになります。

3. 順序問題を特定する3つのステップ

ここでは、実行履歴から順序問題を特定する具体的な手順を説明します。以下の手順を順に行うことで、問題の原因を効率的に見つけられます。

  1. ステップ1: 問題の実行を開く フロー実行履歴から、問題が発生した実行をクリックして詳細を開きます。
  2. ステップ2: 「アクション」タブでタイムラインを確認 アクション一覧で、並列ブランチに含まれるアクションの開始時間を比較します。特に、依存関係があるアクションのペアに注目してください。
  3. ステップ3: 失敗したアクションの入力を調べる 失敗したアクションをクリックし、「入力」セクションで参照している値が正しいか確認します。もし動的な値が空や未定義の場合は、先行アクションが完了していない可能性があります。
  4. ステップ4: 正常時の実行と比較する 以前に成功した実行(同じロジックで順序が問題なかったもの)と比較します。成功時のタイムスタンプパターンと、問題発生時のパターンに違いがないか見比べてください。
  5. ステップ5: 失敗パターンを分類する 後述の比較表を参考に、自分のケースがどのパターンに当てはまるか判断します。

これらのステップを踏めば、単なる偶然のタイミング問題なのか、設計上の欠陥なのかを切り分けられます。

4. 失敗パターンとその原因

並列ブランチでよく発生する失敗パターンにはいくつかの種類があります。以下の比較表にまとめましたので、自分の状況と照らし合わせてください。

パターン 実行履歴の特徴 主な原因 対策
A. 先行アクション未完了 後続アクションの開始時間が先行アクションの終了時間よりも早い 依存関係があるにもかかわらず、並列バランチのまま 逐次バランチに変更、またはConfigure Run Afterで「成功時」に設定
B. 競合状態によるデータ不整合 複数のアクションがほぼ同じ時刻に同じリソース(ファイル、レコード)を更新 並列実行による同時書き込み アクションの分離、または排他制御(Concurrency設定)
C. ループ内の順序入れ替わり Apply to each内の並列ブランチで、反復ごとにアクションの実行順序が異なる ループの並列度設定が高すぎる 並列度を1に下げて逐次実行にする

上記パターンは典型的な例です。実際には複合的な原因であることも多いため、実行履歴を詳細に確認することが重要です。

5. 対策:順序を制御する方法

順序問題を根本的に解決するには、並列ブランチを逐次バランチに変更するか、依存関係を明示的に設定する必要があります。以下に代表的な方法を紹介します。

5.1 逐次バランチに変更する

依存関係があるアクションは、並列ブランチ内に置かず、直列に接続します。これにより、前のアクションが完了してから次のアクションが実行されることが保証されます。ただし、全体の実行時間は長くなる可能性があります。

5.2 Configure Run After の活用

アクションの「Configure Run After」設定で、先行アクションが「成功」した場合のみ実行するよう指定します。これにより、並列ブランチ内でも順序を強制できます。たとえば、アクションBに「アクションAが成功したときのみ実行」と設定すれば、Aの完了を待ちます。

5.3 ループ内の並列度調整

Apply to eachアクションの設定で、「並列カウント」を1に設定すると、各反復が逐次実行され、順序が安定します。デフォルトでは50(上限)に設定されていることが多く、これが原因で順序が入れ替わることがあります。

6. 管理者に確認すべき設定と注意点

会社のPower Automate環境では、管理者が設定したポリシーやコネクタの制限が影響することがあります。たとえば、データロス防止ポリシー(DLP)により一部のコネクタが制限されていると、アクションがスキップされたり失敗したりします。また、共有コネクタと個人用コネクタの違いも順序に影響を与えることは稀ですが、所有者の権限によって実行速度が変わる場合があります。

管理者に依頼する際は、以下の情報を伝えるとスムーズです。

  • 問題の発生するフローのIDと実行履歴のスクリーンショット
  • 期待する動作と実際の動作の違い
  • 順序を保証するための設定変更が可能かどうか(例:ループの並列度制限)

また、テナント全体の制限(API呼び出しの制限など)が原因でアクションが遅延することもあるため、管理者側で確認してもらいましょう。

7. よくある質問(FAQ)

Q1. 並列ブランチの実行順序を完全に制御することはできますか?
並列ブランチの特性上、順序を完全に保証することはできません。順序が重要な場合は、逐次バランチを使うことを推奨します。

Q2. 実行履歴でアクションの開始時間が全く同じ秒数だった場合、どちらが先に実行されたと判断すればよいですか?
ミリ秒単位まで表示されないため、同じ秒数であれば同時実行と見なします。順序が必要なアクションには明示的な依存設定を入れてください。

Q3. 特定の実行だけ順序が異なるのはなぜですか?
サーバー負荷やネットワーク遅延により、タイミングが変動するためです。これは正常な動作です。

8. まとめ

並列ブランチの順序問題は、実行履歴のタイムスタンプとステータスを丁寧に追跡することで原因を特定できます。依存関係があるアクションを並列に置かない、Configure Run Afterで順序を強制する、ループの並列度を下げるといった対策を講じることで、多くの問題は解決します。もし環境設定に起因する場合は、管理者と連携して対応を進めてください。本記事の手順を参考に、安定したフロー運用を実現してください。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT