6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PowerApps で"ソースコード"比較してみた

Last updated at Posted at 2018-12-02

PowerAppsのソースコード?

PowerAppsはWebアプリケーションをExcelやPowerPointのような感覚で作成できる、Office365のサービスです。
アプリを作成する際には、フォームアプリを作る時のように、ボタンやラベル、データグリッド等を配置し、それらのプロパティを設定していきます。
フォームアプリと違って、「コードを書く」というよりは、各コンポーネントのプロパティを、(Excel関数のような)関数で指定していくという開発になります。もちろんアプリにはバージョン管理機能もあります。

ここで疑問。
「PowerAppsでソースコードレビューってどうやるの??」
または
「バージョン間のコード差分ってとれるの??」

これを簡単に確認したので結果をまとめておきます。

PowerAppsのファイル構成

PowerAppsでアプリを作成したのち、基本的な保存先は各テナントにあるクラウド上になりますが、ローカルに保存することも可能です。(以降このファイルをmsappと呼びます)

ローカルには、AppName.msapp というファイルがダウンロードされます。このmsappファイルは、ファイルとしてほかのPCにコピーするなどして、ほかの環境で開く/編集することができます。
msappファイルを.zipにリネームし、これを展開してみると下図のようなファイルが含まれていることがわかります。
zip_content.png

見てわかるとおり、PowerAppsのアプリは、jsonファイル+画像や音声などのメディアファイルの集合で構成されています。
Entities.jsonを覗いてみると、下図のように、アプリの各スクリーン、各パーツの定義、プロパティが含まれています。
entites.PNG
基本的には、**PowerAppsのソースコードをレビューするぞ!**といった場合には、画面からの確認が基本ですが、やるならこのEntities.jsonの中をレビューするのがよいと思われます。

PowerAppsのソースコード差分

簡単に以下のようなアプリを作成してみました。
setup.png
ラベル1個と、そのテキストを書き換えるボタン2個で構成しています。
この場合のアプリ(バージョン1)をダウンロードし、先述の手順でEntites.jsonを抽出しておきます。

次に、ボタン位置と中のテキスト、そして書き換えるテキストを変更して保存します。(バージョン2)
change.PNG
同様の手順で、Entities.jsonを抽出し、今回はVSCodeでDiffをとります。

結果

差分が発生した部分のみ見てみると、以下のように、この簡単な変更でも、それなりにDiffがでています。
Button1.png

挙動を変えたボタンに関してのみ注目します。
Button2.png
確かに、変更した部分のDiffが期待通り出ていることがわかりました。ただし、ボタンコントロールにくっついている謎のプロパティ(画面からは確認できない)も変更されていました。(上図で「謎」とある部分)

結論

PowerAppsはソースコード(jsonファイル群)のバージョン管理、ソースコード自体のレビューには不向きかもしれません。
(差分の出方を完全に把握できれば別ですが)
また、1つのオブジェクトだけでもかなりの行数になるため、読むのが大変です。
もしPowerAppsのアプリをレビューする となった場合には、もともとの開発思想に則り、画面から各オブジェクトの設定されたプロパティを一個ずつ確認していきましょう。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?