このページの本文へ

松本典子の「はじめよう!Azure Logic Apps/Power Automateでノーコード/ローコード」 第59回

フローを制御する「フラグ」の考え方でシンプルに解決できる

Power Automateでよくある“条件判定の入れ子(ネスト)地獄”、回避する方法は?

2026年03月24日 09時00分更新

文● 松本典子 編集● 大塚/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

 こんにちは、Microsoft MVP(Business Applications)の松本典子です。

 Power Automateのクラウドフローは、多数のアクションを一直線につないだワークフローだけでなく、条件分岐や繰り返しの制御を組み込むことで、より複雑なフローでも柔軟に処理できます。

 ただし、実行したいフローの複雑さが増すにつれて、条件分岐が何重もの“入れ子”状態(これを「ネスト」と呼びます)になってしまい、フロー全体の見通しが悪くなることがあります。フローを作成するデザイナー画面からはみ出して、修正しづらくなったという経験のある方も多いのではないでしょうか。

 こうした複雑なフローを制御する際に便利なのが、「フラグ」という機能です。今回はこのフラグを使い、ネストが何重にもなることを避けながら、柔軟な制御を行う方法をご紹介します。

1. ネストが深くなる(入れ子が多重になる)フロー

 まずは、深いネスト(入れ子が何重にも重なった状態)がどんなときに発生するのかを見ておきましょう。

 たとえば「経費申請データをチェックして、問題がなければ上長にメールを送信する」という自動化のフローを考えてみましょう。このフローでは次のようなチェック処理を行い、すべて条件を満たした場合のみ、上長にメールを送信します。

 (1)SharePointリストの申請ステータスが「申請中」になっているか
 (2)SharePointリストに「経費区分」が入力されているか
 (3)金額が上限(10万円)を超えていないか
 (4)添付ファイル(領収書)があるか

条件分岐が何重にも重なり、ネストが深くなったフローの例

 実際にフローを作成したものが上図です。(1)~(4)の条件分岐が繰り返されるため、フロー全体が何重もの入れ子状になっており、フロー図が横に大きく広がっています。

 これだとどこに何の処理があるのか把握しづらくなります。後から分岐の条件を確認したい、条件を修正したいとなった場合も、ひとつひとつ条件分岐を開いて確認しなければなりません。面倒ですね。

  このように、複雑なフロー処理を条件分岐だけで制御しようとすると、ネストが深くなりがちであり、フローの見通しが悪くなります。クラウドフローを作成する場合は、この点を意識した設計が重要になります。

2. 深いネスト構造を改善する考え方

 Power Automateにおいて、深いネスト構造を改善する方法のひとつが「フラグ」を使った制御です。いくつも条件を重ねて処理を内側へ重ねていくのではなく、変数を活用して「処理を実行するかどうか」を管理します。

「フラグ」を利用したフロー

 先ほどのフローを、フラグを使って作り直したサンプルフローが上図です。同じように(1)~(4)の条件チェックが含まれますが、とてもシンプルになりました。

 このように、フラグを取り入れることで深いネスト構造を作ることなく複雑な制御が可能となり、フロー全体を整理できます。

2-1. 変数の設定

 フローにフラグを組み込むのは簡単です。先ほどのサンプルフローを作ってみましょう。

 このフローは、最初に準備(初期化)したフラグ用の変数に、(1)~(4)の条件分岐で「条件を満たしている/満たしていない」を記録する仕組みです。ただし、いずれかの条件分岐でフラグが「条件を満たしていない」と記録された場合、それ以降の条件分岐ではすべて「条件を満たしていない」と記録し、最後のアクション(今回は上司へのメール送信)を実行せず終了します。

 まず、フラグ用の変数を作成します。検索窓に「変数」と入力し、「変数」コネクタのアクション一覧から「変数を初期化する」アクションをクリックします。

「変数を初期化する」アクションの設定

 このアクションには以下の内容を設定します。

 (1)名前:「フラグ」と入力
 (2)タイプ:「ブール値」を選択
 (3)値:「true」と入力

 (2)の「ブール値」とは、「true(真、はい)」か「false(偽、いいえ)」のどちらかの値だけを設定できる種類のデータです。

 このフラグ用の変数は、チェック条件を満たしているかどうかを記録し、フローの最後にあるアクション(メール送信)を実行してよいかどうかの管理に使います。(3)のとおり、フローのスタート時点では「true」を設定しておきます。

2-2. 条件分岐の設定

 続いて条件分岐(「条件」アクション)を設定します。

 今回のサンプルフローでは4つの条件分岐がありますが、フラグの値を確認する部分はすべて同じ設定です。また、条件分岐は必要なだけ増やすことができます。

 検索窓に「コントロール」と入力し、アクション一覧から「条件」アクションをクリックします。

条件分岐の設定

 「条件」アクションでは、まず上半分にある判定条件を設定します。ここでは2つの判定条件を設定します。

 前述した(1)~(4)の判定条件を入力したうえで(設定内容は割愛します)、「+追加」メニューから「行の追加」を選択すると、判定条件がもう1つ入力できるようになります。ここには、変数「フラグ」の値が「true」であるという判定条件を追加します(図中の(1))。

 2つの条件を「And」(いずれも)でつなぐことで、この「条件」アクションは、「1つめと2つめの条件がいずれも『はい』である(trueである)場合にのみ、『はい』の処理を行う」という動作をします。

 「条件」アクションの下半分では、条件判定の結果が「はいの場合」と「いいえの場合」に行うアクションを設定します。両方とも、フラグ用の変数の値を書き換える「変数の設定」アクションを設定します。

 (2)はいの場合:変数の設定アクションで値「true」に変更
 (3)いいえの場合:変数の設定アクションで値「false」に変更

 今回のサンプルフローでは4つの「条件」アクションを連ねていますが、途中のどこかで判定が「false」になったら、フラグ用変数の値として「false」が記録され、それ以降の「条件」アクションの判定結果は必ず「false」になります。

2-3. フラグの結果の条件判定

 今回のサンプルフローでは、4つの「条件」アクションでそれぞれ条件判定を行ったあと、それらの条件がすべて満たされていた(すべて「true」だった)場合に、メールを送信します。そのための、5つめの「条件」アクションを作ります。

条件分岐の設定

 「条件」アクションの上半分、判定条件の設定では、フラグ用変数の値をチェックします。

 先ほど説明したとおり、ここまでの処理で、4つの条件すべてが「true」ならばフラグの値は「true」、条件のいずれか1つでも「false」ならばフラグの値は「false」に設定されています。

 そこで、ここでは「フラグ用変数の値が『true』である」という判定条件を設定し、「はいの場合」にメールを送信するアクションを追加します。

 以上でサンプルフローの作成が完了しました。最後に忘れず「保存」して、テストを実行してみてください。

さいごに

 今回ご紹介したとおり、フラグという考え方を用いることで、最初に見たフローのように「条件」アクションを何重にも入れ子にすることなく、複雑な判定条件のあるフローでもシンプルな形で実現できるようになります。

 ノーコード/ローコードツールであるPower Automateの場合、画面上でフローを描いていけばよい点が最大のメリットですが、その反面、ネストが深い(多重の入れ子状の)フローになると一気に見通しが悪くなってしまいます。一部の判定条件を修正したい場合なども不便でしょう。

 最初はシンプルだったフローも、さまざまな条件判定や制御を付け加えていくうちに、複雑化して見通しが悪くなっていきます。そんなときは「フラグ」という考え方を思い出して、早い段階でフローを作り替えることをおすすめします。設計を少し手直しするだけで、フローはぐっと扱いやすくなりますよ!

カテゴリートップへ

この連載の記事
ピックアップ