前回、初めてのPowerAppsのアプリを作成しました(第1部、第2部、第3部)。
PowerAppsのプラットホームの機能をもっと調べるために、もう一つのPowerAppsのアプリを作成してみました。
前提条件
- Excel
- Microsoftの職場または学校のアカウントが必要です。普通の個人的なWindowsやSkypeのアカウントは使えないのでご注意ください。職場または学校のアカウントを持っていない方は無料でサインアップができます。
目的
ここでは、防犯カメラのビデオが必要なストレージを計算するアプリを作成したいと仮定します。
必要なストレージを計算するために、様々な情報が必要です。
- カメラ数
- 録画時間:カメラが一日に何時間録画したか
- FPS:カメラのフレーム毎秒)
- フレームサイズ:平均のフレームは何KB - 保存期間:録画したビデオを削除まで何日間保存するのか
必要なストレージを計算する式は以下です。
カメラ数 x 記録時間 x 60 x 60 x FPS x フレームサイズ x 保存期間 / 1024 / 1024
2回1024
に割る理由は数をKBからGBに変更するためです。
ユーザーは普通に平均のフレームサイズを知らないはずですから、以下の表のデータを利用して、選択されるエンコーディングと画質によって、フレームサイズを自動的に決めます。
Encoding | Resolution | Frame Size (KB) |
---|---|---|
MPEG-2 | 1-Megapixel (1280x2014) | 15 |
MPEG-2 | 2-Megapixel (1600x1200) | 22 |
MPEG-2 | 3-Megapixel (2048x1536) | 36.4 |
MPEG-4 | 1-Megapixel (1280x2014) | 8.3 |
MPEG-4 | 2-Megapixel (1600x1200) | 12.2 |
MPEG-4 | 3-Megapixel (2048x1536) | 20.2 |
以上のデータはこちらから入手しました。
静的なデータを用意
新規Excelスプレッドシートを開いて、以上のテーブルをコピペします。セルを全部選択して、挿入
のメニューのテーブル
のボタンを押します。次のダイアログで先頭行をテーブルの見出しとして使用する
をオンにして、OK
を押します。
挿入したテーブルが選択したまま、デザインのメニューでテーブル名
をFrameSizeData
に変更します。
書類を保存して、Excelを終了します。
新規アプリを作成
PowerAppsのウェブサイトにサインインして、ホーム画面で作業の開始
のボタンを押します。
次のダイアログでWindows用のPowerApps StudioまたはWeb用のPowerApps Studioを選択してください。この記事ではWindows用のPowerApps Studioを利用しますが、どちらでも使っても大丈夫です。
PowerApps Studioで新規
のセクションに移動して空のアプリ
のタブレットレイアウト
のボタンを押します。
アプリのビルドが終わったら、以下のような空の画面が見えます。
データソースに接続
右側のオプション
のメニューでデータソース
を押して、データソースの追加
のボタンを押します。
静的データをアプリに追加します
を選択します。
以前保存した書類を選択して、FrameSizeData
のテーブルを選択して、接続
のボタンを押します。
計算するフォームを構築
PowerApps Studioでアプリに追加するテキストボックスやコントロールなどのオブジェクトは全部名前が付いています。名前を変更する場合、オブジェクトを選択して、ホーム
のメニューでタグのアイコンのボタンを押して、新しい名前を設定することができます。この名前はフォールミュラで参照することができるので、普通に英数字を利用します
今から、様々なオブジェクトの名前を変更するので、以上の変え方を利用してください。
まず、左側のメニューのScreen1
を選択して、名前をMain
に変更します。
オブジェクトのプロパティを編集する方法は2つあります。一つのは項目が選択するとき、画面の上に以下のようなプロパティエディターを利用します。左のドロップダウンメニューで編集するプロパティを選択して、右側のフォームでプロパティの値を編集するができます。
もう一つのは項目が選択されるとき、右側の詳細設定
のメニューでその項目のプロパティが全部表示されて、各プロパティのフォームで編集することができます。
今から様々なオブジェクトのプロパティを編集するので、以上の方法を利用してください。
左側のメニューでMain
の画面を選択します。右側のオプション
のメニューでレイアウトのセクションの左上のレイアウトを押します。レイアウトで追加されたタイトルのオブジュエクトのText
のプロパティを"防犯カメラの必要なストレージ計算ツール"
に設定します。
タイトルの下のカードを選択して、挿入
のテキストボックス
を押します。追加したテキストボックスのText
のプロパティをエンコーディング
にします。
またカードを選択して、挿入
のコントロール
のメニューでラジオ
を選択します。追加したラジオを以前追加したテキストボックスの右に移動して、名前をEncodingRadio
に変更します。そして、Item
のプロパティに以下の値を与えます。
Distinct(FrameSizeData, Encoding)
もしFrameSizeData.Encoding
を与えたら、Encoding
の行を全部利用するので、3つのMPEG-2
と3つのMPEG-2
のラジオになります。Distinct
はコレクションの一意の値だけ戻します。最初の引数はコレクションで、2番目の引数は項目の手に入れたいフィールドや欄の名前です。
そして、ラジオのDefault
のプロパティを"MPEG-2"
にします。
それから、以前のように以下の項目を挿入してプロパティと名前を設定します。
-
挿入 -> テキストボックス
- Text:
"画質"
- Text:
-
挿入 -> コントロール -> ラジオ
- 名前は
ResolutionDropDown
に変更 - Items:
Distinct(FrameSizeData, Resolution)
- 名前は
-
挿入 -> テキストボックス
- Text:
"カメラ数"
- Text:
-
挿入 -> テキスト -> テキスト入力
- 名前は
NumberOfCameras
に変更 - Default:
1
- TextFormat:
TextFormat.Number
- 名前は
-
挿入 -> テキストボックス
- Text:
"記録時間"
- Text:
-
挿入 -> コントロール -> スライダー
- 名前は
HoursPerDay
に変更 - Min:
1
- Max:
24
- Default:
16
- 名前は
-
挿入 -> テキストボックス
- Text:
"フレーム毎秒"
- Text:
-
挿入 -> コントロール -> スライダー
- 名前は
FPS
に変更 - Min:
1
- Max:
30
- Default:
5
- 名前は
-
挿入 -> テキストボックス
- Text:
"保存期間(日間)"
- Text:
-
挿入 -> コントロール -> スライダー
- 名前は
DaysToStore
に変更 - Min:
1
- Max:
90
- Default:
7
- 名前は
以上の項目を追加して、少し見た目を工夫したてから以下のようにならました。
結果を表示
画面の開いている右半分にテキストボックスを挿入して、Text
のプロパティを"必要なストレージ"
にします。目立つようにSize
のプロパティを36
にします。
そのテキストボックスの下にもう一つのテキストボックスを挿入します。Text
のプロパティに以下の値を与えます。
Text(LookUp(FrameSizeData, Encoding = EncodingRadio.Selected.Value && Resolution = ResolutionDropDown.Selected.Value).'Frame Size (KB)' * NumberOfCameras * HoursPerDay * FPS * DaysToStore * 60 * 60 / 1024 / 1024, "[$-ja]###,###.## GB")
以上のコードに2つの関数があります。
-
Text
は数や日付をテキストにする関数です。Text
を呼び出さないと数字は桁区切り記号がなくて小数を四捨五入されないまま表示されます。Text
に表示したい数字の形を与えます。参照はこちら(英語)。 -
LookUp
は与えるデータソースのテーブルを与える条件と合っている項目を検索して、最初合う項目を戻します。今回はユーザー選択したエンコーディングと画質と合う項目を探します。参照はこちら(英語)。
それに、LookUp
が戻す項目のFrame Size (KB)
を入手するため、.
の後で、'
(シングルクォート)を利用します。フィールドの名前はスペースや英数字以外の文字が入っている場合、'
が必要です。テキストの場合、"
のダブルクォーテーションを利用しますが、フィールドやテーブルの名前の時は'
を利用しなくてはいけません。
好みによって、フレームサイズのテキストボックスの見た目を工夫してから、右上隅のプレビューのボタンを押します。
フォームで様々の設定を試してどのぐらいのストレージが必要を確認して見てください。
これで完成です。
まとめ
今回、PowerAppsのフォームの機能、タブレットのレイアウト、様々便利な関数をアプリ作りながら調べて、勉強になりました。