PowerAppsのソースコード?
PowerAppsはWebアプリケーションをExcelやPowerPointのような感覚で作成できる、Office365のサービスです。
アプリを作成する際には、フォームアプリを作る時のように、ボタンやラベル、データグリッド等を配置し、それらのプロパティを設定していきます。
フォームアプリと違って、「コードを書く」というよりは、各コンポーネントのプロパティを、(Excel関数のような)関数で指定していくという開発になります。もちろんアプリにはバージョン管理機能もあります。
ここで疑問。
「PowerAppsでソースコードレビューってどうやるの??」
または
「バージョン間のコード差分ってとれるの??」
これを簡単に確認したので結果をまとめておきます。
PowerAppsのファイル構成
PowerAppsでアプリを作成したのち、基本的な保存先は各テナントにあるクラウド上になりますが、ローカルに保存することも可能です。(以降このファイルをmsappと呼びます)
ローカルには、AppName.msapp というファイルがダウンロードされます。このmsappファイルは、ファイルとしてほかのPCにコピーするなどして、ほかの環境で開く/編集することができます。
msappファイルを.zipにリネームし、これを展開してみると下図のようなファイルが含まれていることがわかります。
見てわかるとおり、PowerAppsのアプリは、jsonファイル+画像や音声などのメディアファイルの集合で構成されています。
Entities.jsonを覗いてみると、下図のように、アプリの各スクリーン、各パーツの定義、プロパティが含まれています。
基本的には、**PowerAppsのソースコードをレビューするぞ!**といった場合には、画面からの確認が基本ですが、やるならこのEntities.jsonの中をレビューするのがよいと思われます。
PowerAppsのソースコード差分
簡単に以下のようなアプリを作成してみました。
ラベル1個と、そのテキストを書き換えるボタン2個で構成しています。
この場合のアプリ(バージョン1)をダウンロードし、先述の手順でEntites.jsonを抽出しておきます。
次に、ボタン位置と中のテキスト、そして書き換えるテキストを変更して保存します。(バージョン2)
同様の手順で、Entities.jsonを抽出し、今回はVSCodeでDiffをとります。
結果
差分が発生した部分のみ見てみると、以下のように、この簡単な変更でも、それなりにDiffがでています。
挙動を変えたボタンに関してのみ注目します。
確かに、変更した部分のDiffが期待通り出ていることがわかりました。ただし、ボタンコントロールにくっついている謎のプロパティ(画面からは確認できない)も変更されていました。(上図で「謎」とある部分)
結論
PowerAppsはソースコード(jsonファイル群)のバージョン管理、ソースコード自体のレビューには不向きかもしれません。
(差分の出方を完全に把握できれば別ですが)
また、1つのオブジェクトだけでもかなりの行数になるため、読むのが大変です。
もしPowerAppsのアプリをレビューする となった場合には、もともとの開発思想に則り、画面から各オブジェクトの設定されたプロパティを一個ずつ確認していきましょう。