もうさ、社内アプリはPowerApps使って内作でいいんじゃない？

# 図解で、業務タスクを管理するアプリを PowerApps で作成してみた。
次に記載の通りPowerAppsを使うとPCやiPhoneで使えるアプリを簡単に作成できるらしいので、これが本当なのか外出自粛中のゴールデンウィーク初日に「ToDoアプリ」と「業務タスク管理アプリ」を作成してみた記録である。PowerAppsは個人利用に限り無料で使えます。

## PowerAppsって何？
- Microsoft PowerApps は、ビジネスアプリを簡単に作成できる。
- PowerPointでプレゼンテーションを作るようなスキルで作成できる。
- 作成したアプリはクラウドに置き、PCやスマホで使える（iPhoneでも使える）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/257c4c3b-999d-4288-19be-af472d6a6796.png)

## 何ができたの？
- 「業務タスク管理アプリ」を数時間で作成できた。
- iPhoneとPCで、同じデータを操作できた。
- ライセンスの都合上、自分専用だが、実際に仕事現場で使えるアプリだった。

## 最初に試したこと（ToDoアプリ）
**PowerAppsがどんなものだか知らなかったので、とりあえず試しにToDoアプリを作って練習した。**

1. 新規にExcelファイルを開いてToDoリストのダミーデータを作成。
2. 作成したExcelファイルをOneDriveに保存。
3. PowerAppsで『データから新規アプリを作成する手順』に沿ってアプリを作成。

元々、やることリストをExcelファイルで作ることが多かったのと、あとでExcelでダウンロードできるようにExcelを使ったが業務ならば他のデータベース（例えばCommon Data Services）がよい。Excelはデータレコード数が初期値で500個まで最大2000個までという制約があります。自分は、ついでに個人的なメモをスマホに記録できたらいいなぁと思い、アプリでフィルタリングできるようにメモの種類（セルA列）に[ToDo], [記憶メモ], [死ぬまでにやる42の事], [ゴミ箱]を用意した。そしたら、わりと実用的なアプリが本当に出来上がった。しかも勉強時間を含めて３～４時間で。なお、スマホで使う場合は（iPhoneの場合）、[Microsoft PowerApps]アプリをApp Storeからインストールしておく必要はあるが、そのアプリから、自分で作成したアプリを起動できるようになるので、Appleによるアプリ公開審査や公開作業が不要なので、これまた本当に数分でスマホで使えるようになった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/cecfa43b-070f-9011-d866-55b5a51c17db.png)

## PowerApps って使えるんじゃない？
何十年も前になるけどNotes/Dominoで仕事のワークフローとか情報共有とかを沢山作ってたことを思い出した。最近ではSharePointが主流だけど少し使い勝手が悪いのでPowerAppsで置き換えたいなあと思った。しかも、PowerAppsはクラウドサービスであり、Office365やAzureなど様々なクラウドとも連携できる。その上、Flow他のコンポーネントを使ってメール送信アクションやメール受信をトリガに処理をするなど、利用シーンがどんどん広がっていく可能性を想像できる。

## みんなに問いかけ

**■ 何ができるのか『備品/会議室予約とか業務タスクフォローのようなアプリをわずか数時間で作成できます。』**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/0bf273b7-ea89-c0c4-0ae5-e0afdefbf123.png)

**■ 問いかけ『そのアプリ、開発工期（要件定義～設計～コーディング～検査）に２か月かけますか？』**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/6cbe93e0-dfb2-df70-2a6a-e922a0bd7985.png)

**■ 提案『ささっと数時間でアプリを用意して、今すぐ使ってみませんか？』**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/d5593460-db56-ceac-2984-8471134e2403.png)

## 実証検証してみよっと（業務タスク管理アプリ）
長引く在宅勤務で、自分の業務タスクを見失ってしまいがちなので、自分専用サービスオペレーション（タスク登録→タスク実行→タスク完了）を管理するアプリを作ってみよっと。実践で使えるならば、みんなにも使ってもらえるかなと考えつつ。

### 作成ステップ１．データベースを用意
あとでExcelファイルにエクスポートして再利用ができるように、データベースはExcelファイルとした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/11787d7a-ed0f-7496-736c-17a96cdaf687.png)

### 作成ステップ２．OneDriveに保存
作成したExcelファイルを、マイクロソフトのクラウドサービスOneDriveに保存した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/9820a9c4-a28c-2ff7-2735-0c8fe5d59ae1.png)

### 作成ステップ３．アプリを作成
PowerAppsで［＋新しいアプリ］の［データを使用して開始］を選ぶ。次に、OneDriveに保存したExcelファイルとそのシート（テーブル）を選び、［接続］を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/abb11281-90c9-c434-4a7d-4e81e5d19b29.png)

アプリが自動作成される間、ほんのちょっと待つと、実行可能なアプリが作られる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/2d3e3e2e-146d-011b-aeed-c8839cc10ee5.png)

### 作成ステップ４．アプリを改造
最初のアプリはなんと、新しいレコードの追加、編集、削除が出来る状態になっている。これだけでも動くアプリとして使えるが、デフォルトでは全てテキスト入力になるので、日付入力はカレンダー入力、優先度などの選択肢はドロップダウン入力、など使いやすいように変更していく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/57f38ea8-8394-e6df-170d-2b7ffc9c4b1f.png)

ノンコードというと嘘になるので、正しくはローコードでの開発です。数行のコードは必要です。例えば、カレンダーでの日付入力/変更は『If(EditForm1.Mode=New, Today(),ThisItem.作成日)』の１行だけ書きます。これは、もし新規レコード作成「Editform1.mode=New」の場合は今日の日付「Today()」を、新規レコードではないなら既存の日付（ThisItem.レコード項目名）をカレンダーコントロールに設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/9178a9b9-b9bd-53af-1609-8719cf43edb6.png)


メール送信ができるようにする。PowerPlatfomシリーズのPower Automate（旧称Microsoft Flow）を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/614687e9-1b4f-c112-5cf6-6baf4af54563.png)

メール宛先は本番では宛先を選ぶコードを記述しますが、今回は個人利用なのでPower Automate側に自分のメールアドレス(無料のGmail)を記述しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/8df5ecb4-aa71-f764-ab30-8585f8a0e61f.png)

メール送信のアイコンをクリックしたら実行するコードを、この例では、アイコンのOnSelectイベントに『'PowerApp->メールの送信(V2)'.Run(メール件名, メール本文)』を記述しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/26c60c7b-9865-3e80-f007-b41afb1bb5da.png)



メール送信テスト。ちゃんと届いた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/150f6ed8-67ba-d522-38bc-5cd660e70f6a.png)


### 作成ステップ５．アプリを使う
見た目（レイアウト）や操作性（フィルタリングやアイコン）を改造してとりあえず実用編として完成したアプリがこれ（↓）。機能は、新規タスク登録、タスクの編集（進捗や優先度の変更）、タスク内容をメールで送信、が出来る（今のところ）。画面の「合計」をクリックするとレコード８件が表示されます。下図は「作業中」をクリックして、作業中である３件のレコードを表示し、３つ目のレコードを表示したところ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/679683c3-6178-9e72-f22f-60119acbb705.png)

## まとめ
アプリの作成は、PowerPoint操作ができるスキル程度とは言わないが、ExcelのマクロやVBスクリプトよりも、もっとローコードで作成できるのは事実だった。したがって、プログラム技術者ではなく、アプリ利用者が自ら自分の欲しいアプリを作成できる。アプリを作成してみた結果として、社内で利用するだけのアプリならPowerAppsでいいんじゃないだろうか。と思いつつ、これからも自分専用アプリを使い込んでみます。