Sequence 関数を利用して、Power Apps でレコードを全て同じ値で初期状態として準備する方法です。
Power Apps の Sequence 関数
関数の公式情報はこちら。
参考情報
コルネ さんの記事を読むと Sequence関数の基本的な利用シーンから応用編まで把握できると思います。是非、写経して手元で試してみましょう。
ネタバレ?
2023年2月26日(日)に開催された下記イベントで発表した内容の補足でもあります。
前置きはこれぐらいにして、本題へ。
初期化とは?
プログラミングの世界では「変数などを決まった値で初期設定しておく」= 初期化 の文脈で語られます。今回は Collection やテーブル、レコード等を任意の値で全て初期設定するコトを指しています。Power Apps では下記のようなコレクション値を用意するイメージです。
[ 0, 0, 0, 0, 0 ]
全ての値が 0(ゼロ)で設定されている状態を初期状態として用意したい、ということですね。
C# 等の開発言語であれば、下記参考リンクのように配列を宣言したタイミングで初期化されるのです。このような動きを Power Apps で実現したかったんですよ。
前述のイベントで ナンバー9 というゲームを作成するために、0 で初期化された配列が欲しかったんです。
前述で紹介した Sequence関数の Docs には「Sequence 関数は、1、2、3 などの連続番号の単一列テーブルを生成します。 列の名前は Value です。 Sequence( 4 ) は [1,2,3,4] と等価です。」と明記されており、厳密には『単一の列を持つテーブル型』が正しい表現です。単一テーブルなので、コレクション(配列)と同様に利用している、という感じですね。ややこしいですが初学者の方には「同じように利用できるけど、変数の型としては厳密には異なる」というイメージをまずは持っていただければ、と思います。その先はやりながら、試しながら覚えていきましょ。
Sequence 関数による初期化
では [ 0, 0, 0, 0, 0 ] を Power Apps の Sequence 関数を利用して生成してみましょう。
UpdateContext( { [変数名]: Sequence( 5, 0, 0) } );
上記をボタンコントロールの OnSelect 等で実行した結果をデータテーブルコントロールで表示した状態が下記です。
全て 0(ゼロ)の値で、5つの要素を持った状態で初期化されていますね。
補足説明
Sequence関数は[開始]の値から[ステップ]数ぶん増加(マイナス値であれば減少)しながら[レコード]数ぶんの値でレコードが生成されます。
■Sequence 関数の構文
Sequence( レコード [, 開始 [, ステップ ] ] )
つまり、
開始 = 初期化したい値(今回の場合は 0)
ステップ = 0
で指定すると、増分が 0 なので、初期化したい値のレコードが生成されてくるのです。
応用
ナンバー9 を紹介しあうイベントでも案内しましたが、0 で初期化したレコードと、例えば 1 ~ 5 のレコードを合体できます。
・(A)の関数
UpdateContext( { colWk01: Sequence( 5, 1, 1) } );
・(B)の関数
は、既に説明していますので割愛。
・A と B を合体
ClearCollect( colWk03 , colWk01, colWk02 );
ゲームでは、1~9 の値をランダムに配置するため、上記で生成されたコレクションに対して Shuffle 関数を実行して配列の内容を変更しています。
結び
検索してみたのですが、記事投稿時点ではこの初期化に関して紹介している情報が Docs ほかで見当たらなかったのでネタにしてみました。
Power Apps では「必要な要素ぶんの Collection を必要な際に利用する」コトが多いと思います。なので、業務アプリ等では知っていなくても問題無いテクニックでもあるかな、と個人的には思います。ただ、知っておくと何かのタイミグで役に立つかもしれませんので、備忘録も兼ねて。
それでは皆さま、素晴らしい Power Platform Life を!!