はじめに
福祉職からPower Platformエンジニアに転職して3ヶ月が経過。
この記事は「福祉職からPower Platformエンジニアへ:最初のプロジェクトで学んだこと」シリーズの第3回です。
前回は設計書作成について書きましたが、今回はPower Appsで検索機能を実装した話を書いていきます!
開発に入るときの心境
設計書作成が終わり、ようやく開発に入れる。「わくわく感」がありました。
しかし同時に、「プレッシャー」と「不安」も感じていました。
実際にPower Appsで開発できる期間はわずか1週間。初めてなのに、複数条件を組み合わせた検索機能を実装しなければいけない。先輩のフォローがあったとしても、手を動かすのは自分自身。果たしてこの短い期間で理解が追いつくのか…。
これらの感情が自分の中で湧き上がっていました。
検索機能の複雑さ
中でもプレッシャーが大きかったのは、検索機能の実装です。
「氏名」「買上日」など検索項目が8つほどあり、それらを複数組み合わせて検索できるようにする必要がありました。検索ボタンを押したらSharePointリストから該当するレコードを取得して、ギャラリーに表示させる。
これだけならOR関数「||」を使うんだなとなんとなくイメージがついたのですが、さらに複雑さを感じさせるものがありました。
それは、SharePointリストに80万件の購入情報データが登録されるということ。
SharePointリストには最大3000万件登録できるらしいのですが、検索実行時の読み込みのことを考えた結果、80万件のデータを5つのリストに振り分けて登録することになりました。
5つのリストから検索条件に該当するデータを取得して、1つのギャラリーに表示させる…。
この時は非常に頭が混乱しました。
まず取り組んだこと
とにかく、わからないことをわからないままにしておくのはよくない。
自分が思い描いている仕組みが間違っていないか、先輩に確認しました。そして、どういう設定をすればよいかヒントをもらいました。
OR関数「||」の使い方について。そしてコレクションについても、初心者でもわかりやすいように教えてくれました。
「なるほど。コレクションを作って、そこに検索条件に該当するレコードを格納してあげればいいんだな。」
解決の糸口が見えてきたおかげで、次第に不安が薄れていきました。
ただ、それだけでは不安は消えませんでした。なぜなら、他にもやらなきゃいけないタスクがあり、整理されていなかったから。
どの機能を、どうやって、いつまでに完了させれば期間内にすべて終わらせることができるか。初めてのことばかりだから正確に予測するのは難しいけど、目安の期日があるのとないのとでは全く違います。
これをやらないと漠然とした不安は消えないし、一人ではなくチームでプロジェクトを進めているので、常に状況把握をしておかないと軌道修正ができなくなる可能性もある。
1つのプロジェクトに期限を設けてタスク分解してチームで取り組むというやり方は、ビジネス業界ではよくあるのかもしれません。でも福祉業界では「プロジェクト」という言葉すらほとんど耳にしませんでした。仕事の仕方が違うことに戸惑いを覚えつつ、新鮮な感覚もありました。
検索機能の実装
先輩からヒントをもらい、まず以下のような流れで検索ボタンに式を記述しました。
- コレクションを新規作成
- Collect関数とFilter関数、OR関数を組み合わせて、SharePointリスト1から検索条件に該当するレコードを取得
- 同様にSharePointリスト2〜5まで同じ設定をする
- コレクションの中身が0件もしくは2000件以上なら警告メッセージを表示。そうでなければギャラリーに表示
検索機能は実装できました。
しかし、検索結果が表示されるまでに10秒くらいかかってしまうという問題がありました。もっと効率よく結果を表示できるのではないか。
パフォーマンス改善:並列処理の導入
調べたりAIと相談したりしたところ、Concurrent関数を活用した並列処理の方法を見つけました。
処理の流れを以下のように変更しました。
- コレクションA〜Eを作成(5つ)、ギャラリー表示用のコレクションを作成
- 検索条件に該当するレコードを取得。SharePointリスト1はコレクションAに、リスト2はコレクションBに…と、すべてのリストを別々のコレクションに格納(Concurrent関数で並列処理)
- コレクションA〜Eの中身を、ギャラリー表示用のコレクションにCollect関数で格納
- コレクションの中身が0件もしくは2000件以上なら警告メッセージを表示。そうでなければギャラリーに表示
Concurrent関数を使った効果は大きく、検索結果を表示するまでの時間が10秒から5秒に短縮できました。
UIで学んだこと:コンテナーの活用
検索機能以外にも、UI画面の調整に思った以上に労力を割きました。
そこで理解が深まったのがコンテナーです。
使い道がよくわからなかったコンテナーですが、レイアウトを整えるのにとても役立つことがわかりました。プロパティをどう設定すればどうなるのかを、実際に触りながら確認していきました。
理解が深まっていき、水平コンテナーの中に垂直コンテナーを配置して、比率が均一になっている詳細画面を作ることができるようになりました。
今までは詳細画面といったら編集フォームを使った簡単な表しか作成できませんでした。編集フォームは簡単に作成できますが、不必要なコントロールまで作成されてしまい、柔軟性に欠けます。コンテナーなら自由にカスタマイズできる。これは大きな学びでした。
完成して感じたこと
コレクションやコンテナーなど、様々なことを学び、活かすことで大幅にスキルアップできた感じがします。
達成感と安堵感に浸るのもつかの間…次は僕が苦手なPower Automateフロー作成に取り掛からなきゃいけないというプレッシャーがのしかかりました(笑)
正直なところ、そんな感じでした。
おわりに
この記事では、Power Appsで検索機能を実装した経験について書きました。
まとめると:
- わくわく感、プレッシャー、不安が入り混じった1週間だった
- わからないことは早めに確認。先輩からのヒントで糸口が見えた
- タスクを整理することで漠然とした不安が消える
- Concurrent関数で並列処理することでパフォーマンスが改善(10秒→5秒)
- コンテナーを活用すると柔軟なUI設計ができる
次回は「Power Automateでフローを作成した話」について書く予定です!
この記事は「福祉職からPower Platformエンジニアへ:最初のプロジェクトで学んだこと」シリーズの一部です。