Power Appsでは、
- キャンバスアプリ
- モデル駆動型アプリ
- ポータル
の3種類のアプリケーションを作ることができる。
今回はその中の「モデル駆動型アプリ」について僕の理解の中でがんばって説明してみようと思う。
ただ、なにぶん僕も勉強中の内容なので間違っていたら突っ込んでいただけると助かります。
CDS周りの名前がいろいろ変わったので、修正しました。
- CDS → Dataverse
- エンティティ → テーブル
- 属性 → 列(Column)
モデル駆動型とは
そもそもPower Appsに限らず「モデル駆動型」とは何か?
モデル駆動型(アーキテクチャ)とはその名の通り、モデルを中心として開発を進めていく手法のこと。
ここでのモデルとは、
「あるシステム化したい対象を、ER図やらコンポーネント図やらで表せる状態にしたもの」
だと思ってもらえれば大きく間違っていないはず。
例えば「学校」みたいなのをモデル化すると
- 先生
- 生徒
- 授業
- クラス
みたいなのが要素(エンティティ)になって、それぞれに属性(名前とか)があり、要素間には関連(所属とか)がある。
この辺りは「データモデル設計」みたいなキーワードでググると、めちゃくちゃわかりやすい説明が出てくるのでぜひ。
で、モデル駆動型とはこの「モデル」を中心としてシステムを開発していくこと。
Power Appsのモデル駆動型アプリ
Power Appsのモデル駆動型アプリをがんばって一言で表すと、
「モデルを設計してデータベースに入れれば、UIやフローは(ほぼ)ノンコーディングで作れるよ」
という、Power Appsでのアプリケーション開発方法。
ここでのデータベースにあたるのがDataverse。
Dataverse
Dataverseもがんばって一言で表してみると
「Microsoftが用意してくれている、めっちゃ高機能でめっちゃ簡単に使えるデータベース」
のこと。
データベースを作って使うのってけっこう手間だし知識が必要なんだけれど、このDataverseはとにかく簡単にデータベースが使える。
モデル駆動型アプリとキャンバスアプリの使い分け
「どんなときにキャンバスアプリで作って、どんなときにモデル駆動型アプリで作ればいいの?」を考えてみると、
- 無料で(M365ライセンスの範囲内で)アプリを作りたい!
- デザインが重要(入力しやすい、誰でも使える、めっちゃおしゃれ など)!
- スマホから使うことが多い!
- 大量の数字やデータを管理したい!
- データの構成がけっこうややこしい!
- 業務プロセスを簡単に管理したい!
みたいなイメージ。
少し話は逸れる(?)けど、ちょっと前まで某カフェチェーンで働いていたときに発注システムというのがあった。
その日の在庫(目視確認)をスマホに入力して送信すると、本部側で必要量を計算して翌日分の物資を送ってくれる、みたいなシステムだったんだけど、これをPower Appsで作るとしたら、
- カフェのスタッフが(現場/前線で)使うアプリ:キャンバス
- 本部のスタッフが(バックオフィスで)使うアプリ:モデル駆動型
みたいな感じになるかなぁと。
もちろん有料ライセンスを購入する稟議が下りない。。。というときは強制的にキャンバスアプリになるけど。
※あくまで個人の感想です。
公式サイトを乱暴に訳す
Power Apps におけるモデル駆動型アプリとは?
モデル駆動型アプリは、コンポーネント(設計で出てくるデータの構成)をメインとしたアプリ開発手法だよ。
シンプルなアプリから複雑なアプリまで作れるよ。
デザインをがっつり作るキャンバスアプリと違って、アプリのデザイン周りは設計したコンポーネント(モデル)によってシステムがある程度作ってくれるよ。
その他にもモデル駆動にはこんな利点がありますよ。
- モデル設計がメインで、アプリはプログラムなしで作れるよ
- モバイル対応もばっちり
- 豊富なデザイン機能があるよ
- 作ったアプリは配布できるよ
モデル駆動型アプリの作成手法
主に以下の3つでアプリを作るよ。
ビジネスデータのモデル化
ビジネスデータをモデル化するには、アプリが必要とするデータとそれらのデータ間の関連を設計してね。
モデルにはメタデータを使用するよ。メタデータはデータのデータだよ。
(「たま」、「みけ」といったデータのデータは「ねこ」みたいな感じ?)
ビジネスプロセスの定義
一貫したビジネスプロセスを定義することは、とても大事だよ。
そんなプロセスを業務プロセスフロー機能として定義することで、アプリを使う人たちが手順ミスとかすることを防げるよ。
モデル駆動型アプリの作成
データをモデル化して、プロセスを定義できたら、あとはPower Appsのアプリデザイナーを使ってモデル駆動型アプリを作っちゃおう!
以上、ちょっと乱暴すぎかもしれないけれど、概ねこんな感じだと思う。
※2021/3/31追記:実際にモデル駆動型アプリを使って「ねこ管理アプリ」を作ってみました!
コメント