Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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のアプリをレビューする となった場合には、もともとの開発思想に則り、画面から各オブジェクトの設定されたプロパティを一個ずつ確認していきましょう。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away