#はじめに
本記事は以下の記事の続きとなります。
【Microsoft Power Platform】Power AppsでNoCodeでアプリ作成
前回はノーコード・ローコードのあれこれで紹介したプラットフォーム、ツールの中からMicrosoftのPower PlatformサビースであるPower Appsを利用して簡単な出欠確認アプリを作成しました。
今回はPower PlatformのPower Apps
だけではなくPower Automate
、Power BI
も連携したアプリケーションを作成します。
各サービスの説明等で間違いがあればコメントしてくださると嬉しいです。
#Power Platformとは
Power PlatformとPower Appsは前回説明したので割愛
Power Automateとは
概要
お気に入りのアプリとサービス間の自動ワークフローを作成し、ファイルの同期、通知の受信、データ収集などを行うことができ、わずかなコード(Excelで使用する関数等)でワークフロー、プロセスを自動化することを目的としたプラットフォームサービスです。
5種類のフローについて
Power Automateで作成するフローは大きく分けて以下の5種類に分けれます。
-
自動化されたフロー
【ユースケース】
他サービスのイベントによってトリガーを設定することで、1つまたは複数のタスクを自動的に実行するフローを作成できます。
クラウドまたはオンプレミス(windows環境のみ)のサービス向けの150を超えるコネクタ(データソース)を利用できます。
※メール通知やスプレッドシート更新など -
ボタンフロー
【ユースケース】
モバイルデバイスでいつでも、どこからでも繰り返しタスクを実行できます。
ボタンUIをPower Automateで作成可能でユーザスタートのタスクフローを作成できます。 -
スケジュールされたフロー
【ユースケース】
スケジュールに合わせて 1つまたは複数のタスクを実行するフローを作成できます。 -
業務プロセスフロー
【ユースケース】
ユーザーが実行することで求められる結果を導く一連の手順を定義できます。
人的プロセスの手助けを行い、ステージとステップで作業手順を管理することができます。
※承認フロー等を作成できます -
UIフロー(プレビュー) 2020年4月2日から一般提供開始
【ユースケース】
レガシーソフトウェアの手動手順を記録し、再生を自動化できます。
自動化にAPIを利用できないデスクトップとWebアプリケーションをRPAのように自動化できます
本記事では、自動化されたフロー
でフローを作成していきます。
###コネクタについて
コネクタは様々なクラウドやオンプレミス環境のサービスに接続できます。
利用できるコネクタについて概要はこちら
コネクタ概要ページの左側に各コネクタの詳細情報ページが一覧としてあります。
####少しだけコネクタの紹介
などなど
###料金プラン
公式
非公式だがプラン等を詳しく説明してくれている記事
https://memo.tyoshida.me/power-platform/power-automate/power-automate-ui-flows-rpa-license-price/
基本的には以下の2種類のプランがある。
- ユーザーごとのプラン
1ユーザーあたり月 15ドルとなる。また、手動RPA(UIフロー)を含む場合は 40ドル - フローごとのプラン
組織全体で5つフローごとに 500ドル/月
※無料試用版
Power Appsの試用版は 30 日間だが、Power Automateの場合、90日間となっている。
Power Apps コミュニティプランはPower Automateも同じプランとなり無料で確認できる。
今回はコミュニティプランを使用する
##Power BIとは
概要
Power BIを利用することでクラウド上のデータソースや、オンプレミスのデータソースに接続してデータの視覚化や検出、また視覚化したデータ(Report)をその他ユーザに共有することが簡単にできます。
基本的には以下の3つの要素で分析情報を作成、共有、使用を効率よくできるように設計されています。
- Power BI Desktop → Windowsのデスクトップアプリケーション
- Power BI サービス → SaaS(サービスとしてのソフトウェア)サービス
- モバイル デバイス → Windows、iOS、Android デバイス向け
また、要素としてもう一つPower BI Report Serverというのがあります。
こちらは、Power BI Desktopで作成したレポートを別環境のオンプレミスのレポートサーバーに発行できます。
本記事ではPower BI サービス
のみを使用します。
###料金プランとライセンスに関して
下記2点の料金についてこちらを参照 → 料金情報
- ユーザごと
【Power BI Pro】
Power BI Pro ユーザーのコンテンツを使用して共同作業、共有したりできます。アプリ ワークスペースへのコンテンツの発行、ダッシュボードの共有、ダッシュボードとレポートのサブスクライブを行うことができます。
【Power BI Free】
無料ライセンスを持つユーザーは、Power BI Premium 容量に割り当てられたワークスペース内のコンテンツを使用やマイ ワークスペースに含まれている個人用コンテンツのために Power BI サービスの一部機能にアクセスしたりできます。
詳しくは以下を参照
・個人として Power BI にサインアップする
・Power BI Pro のユーザー ライセンスを購入して割り当てる -
Power BI Premium
一貫したパフォーマンスを実現し、より大規模なデータ ボリュームをサポートするための、専用の容量が用意されています。 また、Pro ユーザーが広範囲にコンテンツを配布し、Power BI Pro ライセンスを持たないユーザーでもそのコンテンツを閲覧できるようにすることも可能。
※Power BI 管理者であれば、以下のライセンスを参照
組織でのPower BI のライセンス
本記事ではユーザごとのPower BI Pro試用版を利用します。
試用期間が終わるとPower BI freeに変更されます。
実装するアプリケーション
今回実装するアプリケーションはオンプレミス環境のファイルを自動監視・通知・管理するアプリケーションです。
流れとしては以下です。
- 何らかのオンプレミスシステムでError、Warningログファイル(csv)が指定されたフォルダに出力
- 指定されたフォルダ内のcsvファイル追加・変更のトリガーで該当ファイルのデータを取得
- 取得したデータをもとにメールの通知
- 取得したデータをもとにGoogleスプレッドシートにデータを追加
- 取得したデータをもとにGoogleドライブにファイルを保存
- Power BIデータセットにデータが追加されデータ分析でレポート更新
- Power Appsのアプリでデータ対応管理をデータ更新で行う
アプリケーション実装については説明が長すぎるので、成果物見るだけでいいよって方は以下のとこまで飛んでください。
成果物について
環境の準備
##Power Automateへのアクセス
以下を参考にサインアップ、またはサインインをする。
※私は前回Power Appsでサインアップしていた為、サインインでアクセスしました。
Power Automate にサインアップ・サインイン
##Power BIへのアクセス
以下を参考にサインアップ、またはサインインをする。
Power BI にサインアップする
##オンプレミスデータゲートウェイの設定
オンプレミス データ ゲートウェイは、オンプレミスのデータと安全に接続するためのものです。オンプレミス データ ゲートウェイをオンプレミスの環境にインストールすることで、クラウドサービス(Power BI、Power Apps、Power Automate、Azure Analysis Services、Azure Logic Apps)とデータのやり取りを行うことができます。
【注意事項】
Microsoftサービスですので、Windowsマシンのオンプレミスデータしか扱えません。
また、最小要件としては以下となっています。
- .NET Framework 4.6 (ゲートウェイリリース (2019 年8月) 以前)
- .NET Framework 4.7.2 (ゲートウェイリリース2019年9月以降)
- Windows 8 または64ビットバージョンの Windows Server 2012 R2 の64ビットバージョン
※本記事ではWindows10を使用して動くことが確認できました。
###【オンプレミスデータゲートウェイ手順】
インストールについてを参考にしました。
####①インストール
インストールについてのリンク先でStandard ゲートウェイを使用するオンプレミス環境にダウンロードしてインストールします。
####②設定
インストール完了後、Power Automate、Power Appsで使用している組織アカウントでサインインを行います。
サインイン後に、**「このコンピュータに新しいゲートウェイを登録します。」**を選択します。
その後、ゲートウェイを設定するマシンのアカウント情報を聞かれるので入力。
Service account → Windowsにログインするユーザネーム
・ ローカルユーザーなら [マシン名\ユーザー名]
・ ドメインユーザーなら [ドメイン名\ユーザー名]
Password → Windowsにログインするパスワード
入力後、構成画面で以下の画面のように任意な内容で入力して設定は完了。
※注意
構成したゲートウェイのリージョンと使用するサービスのリージョンが同じでなければ連携出来ないため確認する必要がある。
今回はPower Automateを使用するため、以下のリンク先で確認できる。
Power Automateの管理ポータル画面
もし、リージョンが異なれば以下の2点のどちらかの方法で対応する。
・Power Automateの管理ポータルで新規の環境を作成する。
・ゲートウェイの構成設定でリージョンをPower Automateに合わせる
私の場合は以下のように、ゲートウェイの構成設定でリージョンを変更
#アプリケーション作成
##Power Automateでフロー作成
以下4段階に分けて説明します。
①オンプレミス環境ファイルの追加・変更をトリガーにしてメール通知
②追加・変更したファイルをGoogleドライブに保存
③取得したファイル(CSV)のデータ整形
④整形したデータをスプレッドシートとPower BIのデータセットに追加
###①オンプレミス環境ファイルの追加・変更をトリガーにしてメール通知
- Power Automateにアクセスします。
- アクセス後
+作成
で自動フロー
を選択する
###②追加・変更したファイルをGoogleドライブフォルダに新規で保存
- ①のフローに
+新しいステップ
でGoolgeドライブにファイル作成
アクションを追加する。
###③取得したファイル(CSV)のデータ整形
- 取得したファイルデータをjsonに整形します。
整形には作成アクション
と選択アクション
を設定します。
例)
CSVファイル
date,time,status,message
2020/04/01,12:10:01,Error,テストメッセージ
2020/04/01,12:10:01,Error,テストメッセージ
↓↓↓以下のように一行ごと文字列にした配列を出力する↓↓↓
[
"date,time,status,message",
"2020/04/01,12:10:01,Error,テストメッセージ",
"2020/04/01,12:10:01,Error,テストメッセージ"
]
【選択アクション解説】
作成アクションの出力された値を該当の変数名とマッピングされたjson形式のデータに変更します。
開始で設定している関数は以下です。
range(1,sub(length(outputs('作成')),1))
sub関数では作成アクションの配列の個数から第2引数の数値分引いています。
range関数は第1引数から第2引数までの数値で配列を作成しています。
マップの設定は、それぞれ左側が変数名で右側が値を設定しています。
左側の関数は、CSVの列名を取得するように設定しいます。
右側は各Rowデータで、
で区切って配列にした値を左側の変数名に紐づくように設定しています。
例)
作成アクションの出力値
[
"date,time,status,message",
"2020/04/01,12:10:01,Error,テストメッセージ",
"2020/04/01,12:10:01,Error,テストメッセージ"
]
↓↓↓以下の様に変更して出力する↓↓↓
[
{
"date": "2020/04/01",
"time": "12:10:01",
"status": "Error",
"message": "テストメッセージ"
},
{
"date": "2020/04/01",
"time": "12:10:01",
"status": "Error",
"message": "テストメッセージ"
}
]
###④整形したデータをスプレッドシートとPower BIのデータセットに追加
③で整形したデータをスプレッドシートに追加します。
また、Power BIのデータセットにデータを追加できるにようにPower BI側で設定してフローにアクションを追加します。
【スプレッドシートに行を追加】
①の4
で作成したスプレッドシートに以下のようシートを追加します。
作成後、フローの続きとして以下のアクションを追加する。
③で整形した配列をforで繰り返して一行ごと追加する。
現在のアイテム
は以下のようなデータとなっており、スプレッドシートの列名とjsonの各ObjectNameが紐付くようにデータが追加されます。
{
"selectYear": "2019",
"selectMonth": "04",
"selectDay": "04",
"fixFlag": "0",
"selectTime": "08",
"date": "2019/04/04",
"time": "08:01:55",
"status": "Error",
"massege": "bug test massege内容はいろいろw"
}
【Power BIのデータセットに追加】
- Power BIでデータセットの設定を行う
Power BIにアクセスして以下の流れでストリーミングデータセット作成画面を開きます。
・マイワークスペース
→データセット
→+作成
→ストリーミングデータセット
新しいストリーミングデータセットでAPI
を選択します。
これで、APIを利用してデータセットにデータを追加できるようになります。
次に以下の画面でデータセット名
でストリームからの値
(RequestBody)を設定して作成をおこないます。
以上でフローを保存する。
##Power BIでデータセットからレポートの作成
データセットからレポート作成する場合、データセットにデータが存在している必要があるのでのPower Automateで作成したフローを一度実行します。
以下の内容のcsvを作成してファイルが追加・変更されたとき
のトリガーが監視しているフォルダにcsvファイルを追加します。
date,time,status,massege
2019/04/01,17:01:55,Error,bug test massege内容はいろいろw
2019/04/01,18:01:55,Error,bug test massege内容はいろいろwwk
2019/04/01,18:01:55,Warning,bug test massege内容はいろいろww
2019/04/01,19:01:55,Warning,bug test massege内容はいろいろwwk
フローが完了すると、以下のフロー詳細画面で正常に実行されたか確認できます。
また、実行の開始列の日付を選択すると以下の様にフローの各アクションの実行ログが確認できます。
正常に実行できたことが確認できたらレポートを作成します。
###①Power BIのレポート作成
- データセットにデータが追加されると、Power BIの
ワークスペース
→データセット
の画面でレポートが作成できるようになっています。
クリックしたらレポート作成画面が表示されます。
レポートの作成が完了したら保存します。
以上で、アプリケーション実装完了
#成果物について
今回、ファイルシステムトリガーが監視するオンプレミス環境で出力されるログファイル(csvファイル)は2019/05/01〜2019/05/05を想定しています。
また、一日一つのログファイルが出力される想定のアプリケーションですが、今回だけはlog_20190501.csvに2019/05/01〜2019/05/05分のデータを準備して手動でフォルダに置きます。
date,time,status,massege
2019/05/01,17:01:55,Error,bug test massege Error
2019/05/01,18:01:55,Error,bug test massege Error
2019/05/01,18:01:55,Warning,bug test massege Warning
2019/05/01,19:01:55,Warning,bug test massege Warning
2019/05/02,10:01:54,Error,bug test massege Error
2019/05/02,11:30:00,Error,bug test massege Error
2019/05/02,15:01:55,Warning,bug test massege Warning
2019/05/02,15:45:55,Warning,bug test massege Warning
2019/05/02,16:01:55,Error,bug test massege Error
2019/05/02,17:01:55,Error,bug test massege Error
2019/05/03,10:01:54,Error,bug test massege Error
2019/05/03,11:30:00,Warning,bug test massege Warning
2019/05/03,15:01:55,Warning,bug test massege Warning
2019/05/03,15:45:55,Warning,bug test massege Warning
2019/05/03,16:01:55,Warning,bug test massege Warning
2019/05/03,17:01:55,Error,bug test massege Error
2019/05/04,18:01:55,Error,bug test massege Error
2019/05/04,18:01:55,Warning,bug test massege Warning
2019/05/05,10:01:54,Error,bug test massege Error
2019/05/05,10:21:24,Error,bug test massege Error
2019/05/05,10:22:24,Error,bug test massege Error
2019/05/05,10:30:00,Warning,bug test massege Warning
2019/05/05,11:22:24,Error,bug test massege Error
2019/05/05,11:30:00,Warning,bug test massege Warning
2019/05/05,14:01:55,Warning,bug test massege Warning
2019/05/05,14:45:55,Warning,bug test massege Warning
2019/05/05,15:01:55,Error,bug test massege Error
2019/05/05,15:01:55,Error,bug test massege Error
2019/05/05,16:01:55,Warning,bug test massege Warning
2019/05/05,16:01:55,Warning,bug test massege Warning
2019/05/05,17:01:55,Error,bug test massege Error
監視しているフォルダでファイルが追加・変更されると設定したオンプレミスゲートウェイをかいしてPower Automateのフローが実行されます。
ファイルを追加すると以下の4点が自動で実行されます。
- メール通知
- スプレッドシート更新
- ドライブに追加
- データセットに追加されレポートが更新
Power Automateフロー実行結果
メール通知
追加されたファイルが添付されメール通知されていることを確認できます。
スプレッドシート更新
スプレッドシートにデータが更新されていることを確認できます。
ドライブ追加
ドライブにファイルが追加されていることを確認できます。
データセットに追加されレポートが更新
Power BI で作成したレポートを開くとデータが追加されてレポートに反映されていることが分かります。
Power BIで更新されたPageについて
1. アプリケーションのページ
オンプレミスのcsvで出力されたデータが自動でPower BIのデータセットに追加されています。
selectYear
、selectMonth
、selectDay
のスライサーで日付別でテーブルに表示させることが可能となっています。
また、レポート画面でPower Appsのアプリを使えるのでレポートページで対応済みの登録ができます。
2. 月分析のページ
selectYear
、selectMonth
のスライサーで指定した月のデータをグラフで確認できます。
グラフは、データが増えても良しなに動的表示をしてくれます。
ただ、データとして無い日付は件数が0ではなく、グラフの日付軸に表示されません。
※調べてみましたがグラフにユーザが日付を選択して配置する方法はありませんでした。
3. 日分析のページ
各スライサーで指定した日付の時間別件数がグラフで確認できます。
こちらも、データセットにデータとしてない時間の値はグラフに表示されません。
Power Appsのアプリケーション実行について
本アプリケーションではスプレッドシートのデータと同期をしており、アプリケーションで対応完了を更新して管理できるアプリとなっています。
こちらはPower BIのレポートに追加していますが、モバイルアプリとしても利用が可能となっております。
#既存開発との比較
今回もノーコーディングで実装を行いまいしたが、実際コーディングをするとどうなるのか...
例えば、メール通知部分で比較してみます。
メール通知をコーディングする場合は、Node.jsのexpress等でAPIを作成してメール通知する場合はサードパーティのサービスを利用して通知を行います。また、実行する環境としてはサーバレスにするとしてもGoogle Cloud Platform(GCP)やAWSのサービスで作成を行います。そして、メールの内容等をjsonデータで作成してメール通知を行います。
述べたようにコーディングだけではなく、サードパーティのサービスの設定や実行する環境を考えなければなりません。Power Automateのように一つの作成管理画面(サービス)で完結できないので、作業工数は多くなります。
ただ、今回利用したPower Platformのサービスは外部向けや、同じ組織内アカウントのユーザと共有等するプランにすると料金がかかります。こちらの料金はGCPやAWS等で実行環境を管理するより料金が高くなってしまいます。
サービスによりますが、今回は利用したPower Platformは作業工数は少なくできるが料金のコストが高いと感じました。
また、Power Platformだけ言えることでは無いですが、このようなサービスが終了する場合を考える必要があります。現在、このような問題も視野にいれてノーコーディングのサービスで作成した処理をコードに落とせるノーコード・ローコードのサービスもあります。ちなみに、Power Automateのフローでもアクション設定をコードにして閲覧することも可能となっています。
今後、開発スピードを上げるのも重要ですが、サービス終了した場合など移行がしやすかったりなども考えてサービスを選択する必要があります。
まとめ
今回はPower Platformのサービスをそれぞれ連携させたアプリケーションを作成しました。
Power Autmateのフローで使えるサービス(コネクタ)に関して何ができるのかや実際に使う際の制限を調査するのに時間がかかった感じがします。実際にフローを作成する際は、動的コンテンツ等で選択したりするので効率よく作成できました。ただ、アクション設定の項目が同じものを使おうとしているのに使えなかったり等、予想に反することがあるので設定を修正しないといけない場合がありました。こちらは管理に関しては少し難しいと思いました。
また、オンプレミス環境のレガシーなシステムに簡単に連携でき、RPAも実装が可能ですのでちょっとした機能強化で業務改善を実現できそうでした。
Power BIについては、今回は簡単なレポートを作成しましたが、他の方のPower BIのレポート集という記事では様々なレポートを作成されていてアイデアがあれば色々なレポートを作成できそうだと思いました。
次回は、まだPower Platformのサービスで紹介ができていないPower Virtual Agents (ノンプログラミングBot作成サービス)について書きたいと思います。