【PowerApps】#1簡単なTODOアプリを作ろう!

はじめに

最近テレワーク始めましたGipheです

テレワークって非常に手続きが面倒ですね

申請のために客先に何度か通ったのですが、
いろいろトラブって結局2週間近くかかってしまいました

誰か簡単にできてセキュリティもばっちりなテレワーク用マシン作ってくれないかな

さて、今回はpythonではなく

最近触っているPowerAppsという開発ツールを紹介します

PowerAppsとは

PowerAppsはMicrosoft社のアプリ開発専用のソフトウェア

「プロ レベルのアプリを簡単に構築する」というキャッチフレーズで
世に出された移植の開発ツール

いわゆるSaasの一種ですが、

コーディングの知識がなくてもアプリ構築が可能だという

何とも信じがたいツールだそうです

こんなものが流行ってしまったらプログラマーは商売あがったりですね

どれほどコードレスなのか

とりあえず思い付きですが、
後半はTODOアプリを作って検証してみたいと思います

どんなことができるの

PowerAppsはWEBアプリケーションです

WEB上で簡単にPC、スマホ、タブレット用アプリを作ることができます

基本的にクラウド上で動かしますが、
オンプレミスなデータも一部サポートしているようです

手順としては「データ」をどのように扱うのかを決め、

その次にアプリを作成という流れです

データベース:Common Data Service(CDA)

まずは「データから開始」を見ていきましょう

今回使用するデータベースは「Common Data Service(CDA)

powerapps専用?のWEB上で編集可能なDBです

アプリで使用するTODOトランを作ります

ここで注意点が二つ

フィールドを作成したら必ずフォームビューを設定する必要があります

これを設定しないとアプリ側から参照できるフィールドが
IDだけというような事態が生じてしまいます!

次は「アプリの作成」に入ります

今回は「キャンパス型アプリ」を作成します

ちなみに初めてプロジェクトを新規作成する場合は

以下のようなツアーの案内が出ます

一通り流れをつかむために、一度確認した方が良いでしょう

TODOアプリを15分で作る!

「新しい画面」を選択します
PowerAppsではいくつかテンプレートが用意されているので
作りやすいものでスタートするとよいです

TODOアプリなのでカレンダーを選択します

カレンダーアプリっぽい画面がいきなり表示されました。

日付を選択するとその日の予定が
カレンダー下の一覧に表示されるようにしたいです

一覧部分はGalleryと呼ばれるパーツになっています

Galleryはitemsプロパティを持っているので、

ここにテーブルやコレクションデータを設定してあげましょう

今回はデフォルトでMyCalendarEventsになっているところを
先ほど作ったTODOトランに設定します

フォーマットを大きく変えることなく若干調整しました。

Galleryのitemsは簡単に以下の条件を設定してあげます
・選択した日付のデータ
・投稿者のデータ
・投稿順

//Gallery
SortByColumns(
    Filter(TODOトラン,
        日付 = _dateSelected,
        ユーザーID = _userID
    ),
    "cr7f3_todo_id"
)

Update,Insert処理:Patch

TODOアプリなので一覧を選択したら選択した投稿は”実施済”になります

実施済に設定したのが一目でわかるようにしたいですね

ということでOnSelectプロパティを設定してあげましょう

// ★更新処理
Patch(TODOトラン,
    First(
        Filter(TODOトラン,
            todoID=ThisItem.todoID
            )
        ),
    // ★選択時0:未実施、1:実施済を切り替え可能
    {'ステータス (cr7f3_status)':Mod(ThisItem.'ステータス (cr7f3_status)'+1,2)}
);

更新、登録処理にはPatch関数を使います

便利なのでぜひとも使い方をマスターするとよいです

これで選択時に0:未実施、1:実施済を切り替えができるようになりました

さらに実施済に設定したとき、投稿の色を変更したいので

Templatefillを設定してあげましょう

// TemplateFill
If(ThisItem.'ステータス (cr7f3_status)'="0",RGBA(0,0,0,0),RGBA(209, 232, 178, 1))

TemplateFillとFillというプロパティがありますが

・TemplateFillはIfの分岐による一覧詳細の色を変更可能
・FillはGallery全体の色を変更

という違いがあるので注意してください

最後に投稿する”送信ボタン”のロジックです

If(
    IsBlank(TextInput1.Text),
    // ★テキストの中身が空の場合、エラーメッセージ
    UpdateContext({Popup1:true});,
    // ★テキストの中身が空でない場合、エラーメッセージ解除
    UpdateContext({Popup1:false});
    // ★登録処理
    Patch(TODOトラン,
        Defaults(TODOトラン),
        {
            todoID:Last(TODOトラン).todoID+1,
            コメント:TextInput1.Text,
            'ステータス (cr7f3_status)':"0",
            ユーザーID:_userID,
            ユーザ名:_userName,
            日付:_dateSelected
        }
    );
);
// ★テキストリセット
Reset(TextInput1);

こんな感じですね
Patch関数で登録処理も楽々です

ちなみにユーザー情報はユーザーのエンティティを作成済みでした

ログインページも簡単に作れるので
最初に作るにはちょうど良いかもしれません

TODOアプリ動作確認

さて冒頭で15分でつくるようなことを言っていたGipheですが

残念ながら投稿まで一週間くらいかかってしまいましたww

ふざけんな!と思われる方、、
これでも頑張った方なんです、、

PowerApps本当に生産性は高いです!

あとゴリゴリコーディングしなくてよいので、
なれればかなり使えるのでは!と思いました

1か月無料で試せるので、
企業用メールアドレスが必要ですが、可能な方は是非お試しあれ!

]]>

コメント

タイトルとURLをコピーしました