前回の投稿では、Microsoft Flow の変数の基本的な利用方法について書きました。

もっと Microsoft Flow を使い倒すための変数の基礎
https://idea.tostring.jp/?p=4753

上の記事の中では、使いやすい「文字列」の変数を扱いながら操作方法を説明したのですが、Microsoft Flow で利用できる変数の種類には、この記事を書いている時点で 6 種類あります。

今回の記事では、それぞれの変数の種類がどういったものであるかを書いていきたいと思います。

変数の種類

それでは、Microsoft Flow で利用できる 「ブール値」「整数」「Float」「文字列」「オブジェクト」「アレイ」 といった変数の種類について見ていきます。

ブール値

「ブール値」と聞いても馴染みのない方もいるかと思います。ブールの語源は、19 世紀中ごろに古典論理を考案した研究者「ジョージ・ブール」の名前に由来するようですが…、コンピュータの世界では「true(真)」「false(偽)」の 2 値を取る変数であることを指すことが多いです。フラグなどと言った方が理解が早い方もいるかもしれないですね。

Microsoft Flow の「ブール値」変数も「true」や「false」を設定できる変数です。そのため、この変数を初期化するには、値として「true」や「false」を次のように設定できます。

フローの処理の途中で値を変更するには、「変数の設定」アクションが利用できます。

利用するときには、次のようになります。例えば条件分岐で利用したりできますね。

整数

「整数」はそのままの意味ですね。整数を設定できます。「-100」「-50」「-25」「0」「25」「50」「100」などの小数点のない数ですね。次のように設定できます。

「整数」の変数を利用した場合は、「変数の値を増やす」や「変数の値を減らす」といったアクションを利用できます。このアクションを利用したループカウンターというテクニックで、ループ処理を任意の回数だけ実行するといったことができます。

Do until ループの中で変数の値を 1 ずつ大きくしていき、指定した値になったらループを終了するという処理です。ちょっとだけプログラミングっぽいですね。

Float

「Float」は、プログラミングでは浮動小数点数などと呼ばれます。つまり「浮く」の「Float」ですね。整数に加えて小数点が付いた数ですね。

余談としてプログラミングでは、浮動の反対で固定小数点数があります。こちらは、小数点を打つ場所、桁数を固定したものです。今回は浮動小数点数なので、小数点の位置はどこにあっても良いというわけですね。

次のように設定できます。

「Float」の変数を利用した場合も、「変数の値を増やす」や「変数の値を減らす」といったアクションを利用できます。

この「Float」という変数には、実はちょっとした制限があります。それは、計算時に誤差を含むということです。どういうことかを、実際に Microsoft Flow の処理で試してみましょう。例えば、0.01 から 0.01 ずつ値を増やしていく処理を作成してみます。

どういった値を期待するかというと、0.02、0.03、0.04、0.05、0.06…といった値を期待するんじゃないかと思います。ただし、実行結果を見てみると、計算結果として次のような「0.060000000000000005」といった誤差を含んだ値が入ります。

プログラミングの知識がある方であれば当たり前のことかもしれませんが、Float は計算時の誤差が大きな変数として知られており、厳密な計算には向いていません…。

ただし今回の場合は、「0.01」といった変数の値に一旦 100 を掛けて整数に変換し、整数として 1 を足してから、100 で割ることで回避できました。

視覚的に分かり易く作成するのであれば、一旦 100 を掛けた整数を入れておく計算用の変数を用意しておく方法が良さそうですね。

100 を掛けた整数を算出する式は次の通りです。

int(string(mul(variables('float'),100)))

その整数に 1 を足したあと、100 で割り Float を算出する式は次の通りです。

div(float(variables('temp')),100)

面倒な場合は、これらの計算を全部式にして次のようにも出来ますね。例えば「データ操作」の「作成」アクションを利用して計算してみます。

このときに「作成」に設定する式は次の通りです。

div(float(add(int(string(mul(variables('float'),100))),1)),100)

いずれにしても、Float の変数を利用した計算では、計算の方法によって誤差が出るので、処理の工夫が必要になりそうです。

文字列

「文字列」は、そのまま「文字」を設定できる変数です。次のように設定できます。

「文字列」の変数の場合は、変数に設定した文字列を丸ごと置き換える場合には「変数の設定」アクションが、すでに変数に設定された文字列の末尾に新たな文字列を追加する場合は「文字列変数に追加」アクションが利用できます。

上の場合ですと、「文字列変数に追加」アクションの後続の処理では、「string」という変数には「こんにちは世界」が入っています。

オブジェクト

「オブジェクト」の変数は、使い方が少し難しいです。ここでのオブジェクトは、JSON オブジェクトを指しています。そのため、この変数では、次のように JSON オブジェクトを設定する必要があります。

{
    "Name": "Hirofumi Ota",
    "FirstName": "Hirofumi",
    "LastName": "Ota"
}

そして、「オブジェクト」の中の値を利用する時にも、式を利用して次のように呼び出す必要があります。ちょっと面倒です。

variables('Object').FirstName

使いこなせると、ひとつの変数の中に複数の項目や値を設定しておくことができるので便利なのですが、使いこなすには少し知識が必要になる感じです。

アレイ

「アレイ」は、配列の変数です。こちらも複数の値を変数に設定することができます。例えば、次のようにして複数の文字列をひとつの変数に設定することができます。

[
    "いちご",
    "りんご",
    "パイナップル"
]

「アレイ」の変数を利用することで、アレイ変数の中の各要素に対して Apply to each ループなどで処理を行うことができます。

また、「アレイ」の変数では、「配列変数に追加」アクションを利用できます。これを利用することで、アレイの中に要素を追加することができます。

その他、「アレイ」の要素としては、文字列や整数などのほか、オブジェクトを設定しておくこともできます。

[
    {
        "Name": "Hirofumi Ota",
        "FirstName": "Hirofumi",
        "LastName": "Ota"
    },
    {
        "Name": "Atsushi Miura",
        "FirstName": "Atsushi",
        "LastName": "Miura"
    }
]

Microsoft Flow の中では、同じものを指していても「アレイ」「配列」などのように表記が揺れているようですので、注意が必要です。

さいごに

Microsoft Flow で利用できる変数の種類について書いてきました。変数を上手に利用することによって、少し複雑で高度な処理のフローを作成できるようになりますので、使い方を覚えておくことがオススメです。