プログラム開発経験者のためのPower Appsガイド
PowerAppsは普段プログラムを書かない方でもアプリ開発できることがセールスポイントです。
しかしながらそれが故にプログラム開発経験者には慣れが必要なコンセプトがあります。
命令型思考から宣言型思考への転換とデータ委任の攻略法
JavaやC#、Pythonでシステム開発をしてきたエンジニアの皆さん、Power Appsに初めて触れて「なんだか勝手が違うな...」と感じていませんか?
私も最初はそうでした。従来のプログラミングとは全く異なる思考パターンが必要で、最初は面食らうことも多いでしょう。
この記事では、プログラム開発経験者が Power Apps を効率的に習得するための2つの重要なポイントを、具体例を交えながら解説します。
1. 宣言型プログラミングと命令的プログラミングの違い
料理に例えて理解する根本的な違い
まず、身近な料理を例に両者の違いを理解しましょう。
命令的プログラミング(従来のプログラミング)
1. 冷蔵庫から卵3個を取り出す
2. ボウルを用意する
3. 卵を割ってボウルに入れる
4. 箸で30回かき混ぜる
5. フライパンに油を入れる
6. 中火で1分加熱する
7. 卵液を流し入れる
8. 箸でかき混ぜながら3分加熱する
宣言型プログラミング(Power Apps)
「ふわふわなスクランブルエッグが欲しい」
命令的プログラミングでは「どうやって作るか」を詳細に指示しますが、宣言型では「何が欲しいか」だけを伝えます。
Power Apps では、具体的な処理手順ではなく、最終的に実現したい状態を宣言します。
実際のコードで比較してみる
顧客リストから東京在住の成人を抽出する処理を比較してみましょう。
命令的アプローチ(JavaScript)
function getTokyoAdults(customers) {
const results = [];
// どうやって処理するかを詳細に指示
for (let i = 0; i < customers.length; i++) {
const customer = customers[i];
if (customer.city === "東京" && customer.age >= 18) {
results.push(customer);
}
}
return results;
}
// 結果を画面に表示する処理も別途必要
displayCustomers(getTokyoAdults(allCustomers));
宣言型アプローチ(Power Apps)
// ギャラリーのItemsプロパティに書く数式
Filter(Customers, City = "東京" && Age >= 18)
Power Apps では、この1行の数式をギャラリーコントロールの「Items」プロパティに設定するだけで、
条件に合う顧客が自動的に表示されます。
データが変更されれば、画面も自動的に更新されます。
思考パターンの転換が必要なポイント
1. 結果から逆算して考える
従来のプログラミングでは「手順」から考えがちですが、Power Apps では「最終的に何を表示したいか」から考えます。
例えば、売上集計画面を作る場合:
従来の思考:
「売上データを取得して → ループで回して → 月別に分類して → 合計を計算して → グラフに表示する」
Power Apps の思考:
「月別売上合計のグラフが表示されている状態」
2. データの変化に対する反応を定義する
従来のプログラミングでは「ボタンが押されたら処理を実行」という発想ですが、
Power Apps では「データが変わったら自動的に画面が更新される」仕組みです。
// 検索ボックスの値が変わると、自動的にフィルタリングされる
Filter(Products, StartsWith(ProductName, SearchBox.Text))
検索ボックスに文字を入力するたびに、リアルタイムで商品リストが絞り込まれます。
「検索ボタンを押したら検索実行」という処理を書く必要はありません。
2. データの委任とSharePointリストでの制限回避
データ委任とは?図書館で例えて理解する
データ委任を図書館で例えてみましょう。
委任なし(非効率)
あなた:「図書館のすべての本を持ってきて」
司書:「はい、10万冊すべてお持ちしました」
あなた:「この中からプログラミング関連の本だけください」
(10万冊から手作業で選別...)
委任あり(効率的)
あなた:「プログラミング関連の本だけください」
司書:「承知しました。該当する50冊をお持ちしました」
Power Apps のデータ委任も同じです。
フィルタリングや並び替えをデータソース(SharePoint や SQL Server)側で実行してもらい、必要なデータだけを受け取ります。
委任できない操作の具体例
SharePoint リストでよく引っかかる委任できない操作をみてみましょう。
委任できない文字列操作
// ❌ これは委任できない(警告が表示される)
Filter(Products, Upper(ProductName) = "LAPTOP")
// ✅ これは委任できる
Filter(Products, ProductName = "Laptop")
委任できない計算
// ❌ これは委任できない
Filter(Orders, Year(OrderDate) = 2024)
// ✅ これは委任できる(日付の直接比較)
Filter(Orders, OrderDate >= Date(2024,1,1) && OrderDate < Date(2025,1,1))
SharePointリストでの制限回避テクニック
1. 計算列を活用する
SharePoint リスト側で計算列を作成し、Power Apps では単純な比較のみを行います。
SharePoint での設定例:
- 「注文年」計算列を作成:
=YEAR([注文日]) - 「商品名大文字」計算列を作成:
=UPPER([商品名])
Power Apps での使用:
// 計算列を使うことで委任可能になる
Filter(Orders, 注文年 = 2024)
2. 選択肢列の活用
文字列の部分検索が必要な場合、選択肢列を併用します。
SharePoint での設定:
- 「カテゴリ」列:選択肢(家電、書籍、衣類...)
- 「商品名」列:1行テキスト
Power Apps での使用:
// まず選択肢でざっくり絞り込み(委任可能)
// その後で詳細検索(委任不可だが件数は少ない)
Filter(
Filter(Products, Category = "家電"),
SearchBox.Text in ProductName
)
3. ビュー(表示)の活用
SharePoint で表示(ビュー)を作成し、あらかじめフィルタリングされたデータを Power Apps で利用します。
SharePoint での設定:
- 「今年の注文」ビュー作成
- フィルタ条件:作成日時が今年
Power Apps での接続:
// ビューを指定してデータソースに接続
// 既にフィルタリング済みのデータが取得できる
'今年の注文'
4. 段階的フィルタリング
大量データを扱う場合、段階的にデータを絞り込みます。
// ステップ1:委任可能な条件で大まかに絞り込み
ClearCollect(
FilteredOrders,
Filter(AllOrders, Status = "完了" && OrderDate >= Today() - 30)
);
// ステップ2:コレクション内で詳細検索(委任不可だが件数は少ない)
Filter(FilteredOrders, SearchBox.Text in CustomerName)
実践的な開発のコツ
1. 小さく始めて徐々に拡張
最初から複雑なアプリを作ろうとせず、シンプルな機能から始めましょう。
フェーズ1:基本的な一覧表示
フェーズ2:検索・フィルタ機能追加
フェーズ3:詳細画面・編集機能
フェーズ4:複雑なビジネスロジック
2. 委任警告は怖くない!
委任警告が出ても、データ量が少なければ問題ありません。
まずは動くものを作り、パフォーマンス問題が発生してから最適化しましょう。
3. SharePoint リストの設計を意識
Power Apps での使用を前提とした SharePoint リスト設計を心がける。
- 検索対象の列は計算列も含めて設計
- 適切なデータ型の選択
- インデックス付き列の活用
まとめ
プログラム開発経験者が Power Apps を習得する際の最大のハードルは、思考パターンの転換です。
「手順を指示する」から「結果を宣言する」への発想転換、そしてデータ委任という Power Apps 特有の概念の理解が重要です。
最初は戸惑うかもしれませんが、一度コツを掴めば、従来のプログラミングよりもはるかに少ないコードで、保守性の高いアプリケーションを構築できます。ぜひ、小さなアプリから始めて、Power Apps の世界を楽しんでください。
この記事が、プログラム開発経験者の皆さんの Power Apps 習得の助けになれば幸いです。
最終的には習うより慣れろが一番かもしれません。
まずは小さなサンプルアプリを作って試してみることをお勧めします。
Choose Language
日本語