Power Automateの作成(Compose)アクション。デバッグと式の整理に使う実践ガイド

Power Automateの作成(Compose)アクションは、式の結果を一時的に保存して確認するためのアクションです。デバッグと式の整理、両方の目的で使えます。

作成(Compose)アクションとは

式を評価して出力するだけのアクション

作成(Compose)アクションのしくみはシンプルです。入力に式や値を書くと、フロー実行時にその式が評価され、結果が出力として保存されます。保存した値は後続のアクションで動的なコンテンツとして参照できます。

変数とよく似ていますが、作成(Compose)は変数の初期化・設定アクションよりも記述が短く、読み取り専用の中間値を保存するのに適しています。Power Automateの変数の使い方は変数の解説でまとめています。

2つの主な使い方

作成(Compose)を使う場面は大きく2つに分かれます。

1つ目はデバッグ用途です。フローの途中で変数や式の値が想定通りかどうかを確認するために、作成(Compose)に差し込んで実行履歴から中身を見ます。

2つ目は長い式を整理する用途です。後続のアクションで何度も使う長い式を、作成(Compose)で一度計算してから名前で参照すると、フローが読みやすくなります。

デバッグツールとしての作成(Compose)

フローの途中の値を確認する

フローが動かないとき、どのアクションで何がおかしいのかを確認するのは意外と手間がかかります。そんなとき、疑わしい場所に作成(Compose)を差し込んで実行すると、実行履歴でその時点の値を見られます。

例えばFilter arrayの差出人に正しい配列が渡っているか確認したい場合、Filter arrayの前に作成(Compose)を入れてSharePointのアイテムを取得のbody/valueを渡します。実行履歴で作成(Compose)の出力を開くと、配列の中身がJSON形式で表示されます。

実行履歴の確認方法

フローを手動実行またはテスト実行した後、実行履歴のリンクをクリックすると各アクションの実行結果が展開表示されます。作成(Compose)アクションを選ぶと入力と出力の値が確認できます。

私が現場でフローのデバッグをするときは、作成(Compose)を複数箇所に差し込んで、どの段階でデータがおかしくなっているかを追いかけます。問題の箇所が特定できたら作成(Compose)を削除して、フローをスリムな状態に戻します。

式の整理ツールとしての作成(Compose)

長い式に名前をつける

フローの中で何度も使う計算や変換式がある場合、毎回同じ式を書くのは冗長です。作成(Compose)で一度計算した結果を、後続のアクションで outputs('作成') として参照できます。

例えば、現在日時を日本時間で特定のフォーマットにしたい場合を考えます。

// 作成(Compose)アクションの入力欄に書く式
formatDateTime(convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 'yyyy年MM月dd日')

この式を毎回書くより、作成(Compose)でjpDateという名前のアクションに保存して、後続ではoutputs('jpDate')と短く参照するほうがフローが読みやすくなります。

配列や文字列を組み立てる

JSONオブジェクトや配列を手動で組み立てるときも作成(Compose)が便利です。

// SharePointに送るためのオブジェクトを組み立てる
{
  "Title": triggerBody()?['title'],
  "Status": "未対応",
  "CreatedDate": utcNow(),
  "Priority": 2
}

このようなJSONを作成(Compose)で一度組み立てておくと、後続のSharePoint更新アクションに作成(Compose)の出力をそのまま渡せます。Patchや変数アクションで直接書くより、構造が見やすくなります。

変数との使い分け

値を変えない中間計算は作成(Compose)

作成(Compose)と変数は似ていますが、使い分けの基準は明確です。

作成(Compose)変数
値の更新できない(固定)できる
スコープフロー全体で参照可フロー全体で参照可
初期化アクション不要必要(変数を初期化)
記述の手間少ない初期化+設定の2ステップ

ループの中でカウントアップしたいなら変数、一度計算した日付や文字列を使いまわしたいなら作成(Compose)、という使い分けが基本です。

Apply to eachの中では作成(Compose)を使わない

Apply to eachのループ内に作成(Compose)を置いた場合、各ループの実行結果で出力が上書きされます。ループが終わった後に作成(Compose)を参照すると最後のループの値しか残っていません。ループをまたいで値を積み上げたいなら変数を使いましょう。

Apply to eachとループ処理の詳細はApply to eachの解説を参照してください。

作成(Compose)の実践的な使い方まとめ

デバッグのフロー

  1. エラーまたは想定外の動作が起きているアクションの直前に作成(Compose)を追加
  2. 確認したい値(配列・オブジェクト・文字列)を作成(Compose)の入力に設定
  3. フローを手動実行
  4. 実行履歴で作成(Compose)の出力を確認
  5. 問題の原因が特定できたら作成(Compose)を削除してフローを整理

デバッグが終わったら作成(Compose)を残したままにしないことが大切です。不要なアクションが増えるとフローが読みにくくなります。実行履歴の見方やデバッグの手順は Power Automateのデバッグ・実行履歴活用の記事でまとめます。

式整理のフロー

  1. フローの中で複数回使う長い式を特定する
  2. 最初に使う箇所の直前に作成(Compose)を追加して、わかりやすい名前をつける(例:FormatDate)
  3. 後続のアクションでは outputs('FormatDate') で参照する

作成(Compose)のアクション名はわかりやすい名前に変えておきましょう。デフォルトの名前だと、どれが何のための作成(Compose)か区別がつかなくなります。

まとめ

作成(Compose)はそれ自体が何かを実行するわけではありませんが、デバッグと式の整理という2つの目的でフロー開発をサポートしてくれます。

まずはフローが期待通りに動かないときの確認手段として使ってみてください。データの流れを目で確認できるようになると、Power Automateの式のしくみも自然に理解が深まります。Power Automateの開発に慣れてきたら、長い式の整理にも積極的に使っていきましょう。

Xでフォローしよう