コルネの進捗や備忘録が記されたなにか

進捗や成果物や備忘録てきななにかを雑に更新していきます。

【Power Apps】Sequence 関数を使ってみよう!


スポンサードリンク

この記事で紹介すること

この記事ではPower Apps のSequence 関数について紹介したいと思います。
若干今更感ありますがそこはいわないで!

Sequence 関数を使うとなにができるの?

Sequence 関数を使うことにより、簡単な数列のテーブルを作成することができます。

docs.microsoft.com

実際に使用してみる

では、実際に使用してみましょう。

連続する番号のテーブルを作成する

1-10の連続する番号のテーブルを作成してみます。

ListBox1.Items

Sequence(10)

f:id:koruneko:20200907000257p:plain

これにより、1-10の連続する番号のテーブルを作成することができました。
この関数が登場するまでは、

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

のように記載しなくてはいけなかったので大変楽になりましたね!

開始番号を任意の数に設定する

先ほど作成したテーブルは1から開始されていました。
今度は10からテーブルを開始し、20までの連続するテーブルを作成してみようと思います。

ListBox1.Items

Sequence(11, 10)

f:id:koruneko:20200907001011p:plain

このように第2引数に数値を指定した場合、その数値から連続するテーブルを作成することができます。
なお開始する番号は規定では1に設定されているので、指定しなかった場合は1から開始されます。

連続する偶数を10個作成する

今度は連続する偶数を10個作成してみようと思います。

ListBox1.Items

Sequence(10, 2, 2)

f:id:koruneko:20200907001641p:plain

このように第3引数に数値を指定した場合、その数値分だけ値が増えたテーブルを作成することができます。
なおこのステップ数は規定では1に設定されているので、指定しなかった場合は1から開始されます。

数値がだんだん減っていくテーブルを作成する

ステップ数にマイナスの値を設定することにより、カウントダウンを行うようなテーブルを作成できます。

ListBox1.Items

Sequence(10, 5, -1)

f:id:koruneko:20200907002857p:plain

3の倍数だけ除外されたテーブルを作成する

これを実現するためには、Filter 関数を利用すればよいです。

ListBox1.Items

Filter(Sequence(10), Mod(ThisRecord.Value, 3) <> 0)

f:id:koruneko:20200907003344p:plain

ThisRecord.Value の部分はValue だけでも大丈夫です。

ForAll と組み合わせて利用する

恐らく、Sequence 関数を利用していく場合、ForAll 関数とともに利用するケースが多いかと思います。
ForAll 関数とまだ仲良くなれていない方はこの機会に是非仲良くなってみましょう!

例えば公式doc のように乱数を10個生成してみようかと思います。

ListBox1.Items

ForAll(Sequence(10), Rand())

f:id:koruneko:20200907004940p:plain

【おまけ】フィボナッチ数列を作成してみる

ForAll 関数とSequence 関数を活用してPower Apps でフィボナッチ数列を作成してみようと思います!
フィボナッチ数列ってなに?という方は、こちらをご確認ください。
フィボナッチ数列をわかりやすく解説!一般項の求め方をマスターしよう

簡単に説明すると、「2つ前の項と1つ前の項を足し合わせていくことでできる数列」で
0, 1, 1, 2, 3, 5, 8, 13, 21…
といったかたちの数列になります。綺麗ですね!

これをPower Apps で作成しようとすると、例えば以下のようになります。

Button1.OnSelect

Clear(fibo);
Collect(fibo, [0, 1]);
ForAll(
    Sequence(10),
    Collect(
        fibo,
        {Value:Last(FirstN(fibo, Value)).Value + Last(FirstN(fibo, Value + 1)).Value}
    )
)

f:id:koruneko:20200907011603p:plain

簡単に解説を行うと、まずは最初に第一項と第二項を宣言します。
次にForAll 関数ないで、fibo レコードを再帰的に呼び出してフィボナッチ数列を作成しています。
Sequence 関数で指定した数値 + 2項フィボナッチ数列が作成されていますね。

こちらの再帰的に呼び出している箇所については、【Power Apps】コレクションにインデックスを付与するで似たような解説を行っていますので、よろしければ参考にしてください!


スポンサードリンク