地方設備工事会社のDXな話(その8:Power Platformで何処まで作っていいの?)
Photo by Christina @ wocintechchat.com on Unsplash
Power Platformで何処まで作っていいの?
Power Platformは、弊社の内製開発におけるメイン武器の1つです。
PowerAppsで面側を作って、少し複雑な処理はPower Automateで作っています。
DBには、状況に応じてDataverse for Teams またはSharePointを使っています。
3ヶ月前、初めてPower Platformのローコードツールに触れたとき、
「え、これで何でも簡単に作れるじゃん・・・スゴい!」と、
とても驚きました。
触り始めて3ヶ月たった今、「なんでも作れる!」という気持ちは変わっていません。
ただ、「どうやらなんでも作っていい訳では無さそうだぞ」という気持ちも、芽生え始めています。
今回は、僕が短期間ですがPower Platformでの開発を通じて感じた、こんなシステムを作るときは注意が必要というお話をしようと思います。一応注意書きとして、今回の話はあくまでOffice365に付随するライセンス内でのお話です!アップグレードしたら見えている世界が変わるかもしれません!笑
作れる≠作って良い
Power Platformは優秀で、基本的なシステムであれば、ちょっと複雑な処理があったとしても、
少し工夫すれば、割とどんなものでも作れると思っています。
ただ、だからといって何でも作って良いわけではないのかなと最近は考えるようになりました。
開発する際に注意が必要となる場面は多々あると思いますが、本記事では、
- 目的が全く別ものの機能を複数個もたせる
- データに高度なアクセス権限設定が必要
といった特徴を持ったシステムを作る場面では、注意が必要 or 作らないほうが良い ということを書いていこうと思います。
目的が全く別の機能を複数持ったシステム
注意が必要な理由としては、PowerAppsやPowerAutomateが複数人で同時編集出来ない仕様となっているというのが大きいです。
例えば、全く別ものの機能を2つ開発しようと思ったとき、開発エンジニアが2人いたとしても、どちらか一人が、1つずつ機能を作っていくことしか出来ません。メンテナンスに関しても、どちらかの機能をメンテナンスしているときは、もう片方を触ることは出来ません。大きく異なる機能が1つのアプリの中に存在しないか仕様を考える段階で注意する必要があると思っています。うまく切り出して、2つのアプリを2人で作ることができれば、並列にすすめることが出来るかもしれません。(管理するアプリが増えるという問題は増えますが・・・)。
また、複数個機能をもたせるような大きなアプリをローコードで作ってしまうと、コードがカオスな状態になっていきます。多くのローコードツールでは、細かい粒度でのコードのバージョン管理や、コードをうまくコンポーネント化することが難しいです。なので、一度カオスな状態になったものを浄化するのは、なかなか骨が折れる作業になると思われます。PowerAppsではコンポーネント機能があるので、うまく使いこなせばアプリの規模が大きくなっても綺麗な状態でコードを管理出来るのかもしれませんが。(僕はまだコンポーネントの思想的なところをつかめていません(泣))
余談)コンポーネントでカラーパレットとか作っては見てはいるが使い方があっているのか・・・
とりあえず最近は、PowerAppsでシステムを作るときは、「規模は小さく、目的は明確に!」を意識するようにしています。
高度なデータの権限設定が必要なシステム
誰かはアクセスできるが、誰かはアクセスできないといったデータを扱うことはもちろんありますよね。SharePointとDataverseでは、機能性に差はありますが、ともにアクセス制限をかけることが出来ます。
しかし、PowerAppsの関数やPower Automateを使ったDBアクセスは、APIサーバーを自分で作って、DBにアクセスする形式に比べると、やっぱり扱い辛かったりします。DB付随のアクセス制限では届かない痒いところの制限を、Power Automateを使って裏側で制御しようとしても、Flowを使えるようにするための実行権限には、もれなくFlowの編集権限もついてきます。なので、セキュリティ的にはかなり甘い状態になってしまいます。
では、実行権限と編集権限を分けることが出来るPowerApps側から、関数で直接DBを操作しようということになるのですが、表側にアクセス制御のロジックをもたせるってありなのか・・・?とか思ったり。ライセンスをアップグレードすると、この辺の便利機能が増えたりもするのですが、であれば場合によってはフルスクラッチのほうが安く早く作れるのかなとも思ったり。
また、SharePointとDataverseでは、レコードごとにセキュリティをかけることで厳しいセキュリティ制限をかけることが出来ますが、これはデータ量に応じてセキュリティポリシーが増えるため、処理が重くなりそうですし、ポリシーの管理も大変になりそうです。
終わり
今回はPower Platformを使って開発するときに注意が必要になるシステムの特徴のお話でした。細かく場面や特徴を挙げるとたくさんあると思いますが、かなり抽象的にまとめると、「一人で管理出来ない大きさ、複雑さのものは作ってはいけない」という感じなのかなと。使いこなすまでは、まだ時間がかかりそうです(笑)
とはいえ、やはり少人数かつ、この速度感で作りたいものが作れるというところは、とても魅力的です。正直、かなり我流な方法でここまでPowerAppsアプリを作ってきた気がしています。近いうち社外のオンライン交流会などにも参加して、色々な方の知識を吸収して、より効率よく良いものを作れるようになりたい思っています!
読んでいただきありがとうございました!!