3
2

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 2016-12-29

前回、初めての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を押します。

create-excel-table.png

挿入したテーブルが選択したまま、デザインのメニューでテーブル名FrameSizeDataに変更します。

name-table.png

書類を保存して、Excelを終了します。

新規アプリを作成

PowerAppsのウェブサイトにサインインして、ホーム画面で作業の開始のボタンを押します。

new-app.png

次のダイアログでWindows用のPowerApps StudioまたはWeb用のPowerApps Studioを選択してください。この記事ではWindows用のPowerApps Studioを利用しますが、どちらでも使っても大丈夫です。

PowerApps Studioで新規のセクションに移動して空のアプリタブレットレイアウトのボタンを押します。

empty-app.png

アプリのビルドが終わったら、以下のような空の画面が見えます。

start.png

データソースに接続

右側のオプションのメニューでデータソースを押して、データソースの追加のボタンを押します。

add-data-source.png

静的データをアプリに追加しますを選択します。

select-source.png

以前保存した書類を選択して、FrameSizeDataのテーブルを選択して、接続のボタンを押します。

frame-data.png

計算するフォームを構築

PowerApps Studioでアプリに追加するテキストボックスやコントロールなどのオブジェクトは全部名前が付いています。名前を変更する場合、オブジェクトを選択して、ホームのメニューでタグのアイコンのボタンを押して、新しい名前を設定することができます。この名前はフォールミュラで参照することができるので、普通に英数字を利用します

今から、様々なオブジェクトの名前を変更するので、以上の変え方を利用してください。

まず、左側のメニューのScreen1を選択して、名前をMainに変更します。

rename-screen.png

オブジェクトのプロパティを編集する方法は2つあります。一つのは項目が選択するとき、画面の上に以下のようなプロパティエディターを利用します。左のドロップダウンメニューで編集するプロパティを選択して、右側のフォームでプロパティの値を編集するができます。

top-editor.png

もう一つのは項目が選択されるとき、右側の詳細設定のメニューでその項目のプロパティが全部表示されて、各プロパティのフォームで編集することができます。

今から様々なオブジェクトのプロパティを編集するので、以上の方法を利用してください。

左側のメニューでMainの画面を選択します。右側のオプションのメニューでレイアウトのセクションの左上のレイアウトを押します。レイアウトで追加されたタイトルのオブジュエクトのTextのプロパティを"防犯カメラの必要なストレージ計算ツール"に設定します。

タイトルの下のカードを選択して、挿入テキストボックスを押します。追加したテキストボックスのTextのプロパティをエンコーディングにします。

またカードを選択して、挿入コントロールのメニューでラジオを選択します。追加したラジオを以前追加したテキストボックスの右に移動して、名前をEncodingRadioに変更します。そして、Itemのプロパティに以下の値を与えます。

Distinct(FrameSizeData, Encoding)

もしFrameSizeData.Encodingを与えたら、Encodingの行を全部利用するので、3つのMPEG-2と3つのMPEG-2のラジオになります。Distinctはコレクションの一意の値だけ戻します。最初の引数はコレクションで、2番目の引数は項目の手に入れたいフィールドや欄の名前です。

encoding-field.png

そして、ラジオのDefaultのプロパティを"MPEG-2"にします。

それから、以前のように以下の項目を挿入してプロパティと名前を設定します。

  • 挿入 -> テキストボックス

    • Text: "画質"
  • 挿入 -> コントロール -> ラジオ

    • 名前はResolutionDropDown に変更
    • Items: Distinct(FrameSizeData, Resolution)
  • 挿入 -> テキストボックス

    • Text: "カメラ数"
  • 挿入 -> テキスト -> テキスト入力

    • 名前はNumberOfCameras に変更
    • Default: 1
    • TextFormat: TextFormat.Number
  • 挿入 -> テキストボックス

    • Text: "記録時間"
  • 挿入 -> コントロール -> スライダー

    • 名前はHoursPerDayに変更
    • Min: 1
    • Max: 24
    • Default: 16
  • 挿入 -> テキストボックス

    • Text: "フレーム毎秒"
  • 挿入 -> コントロール -> スライダー

    • 名前はFPSに変更
    • Min: 1
    • Max: 30
    • Default: 5
  • 挿入 -> テキストボックス

    • Text: "保存期間(日間)"
  • 挿入 -> コントロール -> スライダー

    • 名前はDaysToStoreに変更
    • Min: 1
    • Max: 90
    • Default: 7

以上の項目を追加して、少し見た目を工夫したてから以下のようにならました。

form.png

結果を表示

画面の開いている右半分にテキストボックスを挿入して、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)を入手するため、.の後で、'(シングルクォート)を利用します。フィールドの名前はスペースや英数字以外の文字が入っている場合、'が必要です。テキストの場合、"のダブルクォーテーションを利用しますが、フィールドやテーブルの名前の時は'を利用しなくてはいけません。

好みによって、フレームサイズのテキストボックスの見た目を工夫してから、右上隅のプレビューのボタンを押します。

preview-button.png

フォームで様々の設定を試してどのぐらいのストレージが必要を確認して見てください。

preview.png

これで完成です。

まとめ

今回、PowerAppsのフォームの機能、タブレットのレイアウト、様々便利な関数をアプリ作りながら調べて、勉強になりました。

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?