Power Platformでできること
「このセッションは開発者のみなさんだけではなく、非開発者の方にも向けて話をしたい」
こう切り出し、まずは清水氏によるPower Platformの解説から始まった。Power Platformはローコード開発のためのプラットフォームである。米国で昨年11月に開催されたMicrosoft Ignite 2019でも、RPAの機能が追加されるなど、機能強化が行われている。
Power Platformは現在、ノーコードでアプリが作れる「Power Apps」、ノーコードでビジネスロジックが作れる「Power Automate」、ノーコードでBIが実現できる「Power BI」、ノーコードでボットが作れる「Power Virtual Agents」という4サービスを提供している。「Power Automate」は以前、「Microsoft Flow」と呼ばれていたサービスがリブランディングされたもの。「元々のサービスにプラスアルファの機能が入った」と清水氏。またPower Virtual AgentsはIgnite 2019で発表された新しいサービスである。つまり、「これらを合わせるとシステムが作れる」と清水氏は語る。
Power Platformの最新バージョンの構成を表すと、図1のようになる。「AI Builder」は機能の一つで、人工知能や機械学習を誰もが容易に組み込めるようになる。Power BI dataflowsはETLツール。これを使えば、クラウドやSaaS、PaaSなどAPIを提供しているもの、オンプレミスなどさまざまなデータソースからデータを取得し、データストアであるCommon Data Service(CDS)や、ビッグデータ分析のためのストレージAzure Data Lake Storage Gen2(ADLS)にデータを取り込むことができる。「本当の意味でマルチデータソースになっている」(清水氏)
ここで清水氏はデモを実施。まず見せたのは、今回のデブサミ2020のセッションリストをスクレイピングし、デブサミのセッションリストをPower BIのレポートで表示できるようにしたもの(デブサミセッションリストのデモ)。
例えばセッション名の検索窓に「アプリ」と入れれば、その用語が入っているセッションが表示される。「ひらがなで文字列を入れても、ちゃんとセッションがひっかかってくる」と清水氏。面白いのは、iCALの列をクリックすると、そのセッションの予定ファイル(icsファイル)がダウンロードでき、カレンダーに予定を表示できるようになる。クリックによってicsファイルを作成するPower Automateのフローを呼び出しているのだという。
このような仕組みも「Power BI Desktop」を使えば簡単に作成できる。「ガツガツコードを書く必要はなく、ボタンを押していくとデータを取得するPower Queryは自動生成される」と清水氏。開発者の場合は、自動生成されたものをブラッシュアップさせていくだけだ。デモではデブサミ2020のセッションスケジュールを取得してデータ化するためのPower Queryなどが紹介された。
またもう一つ、清水氏がデモで紹介したのが、某テーマパークのアトラクションの待ち時間を、BIのレポートとして可視化するというもの。このための前提条件は、Power BI Pro以上、CDSが使えること、Azureサブスクリプションのライセンスを保有していること。仕組みとしては図2のようになる。このような構成で作成したのが、「アトラクションの待ち時間を教えるよ!」というボットと、アトラクション別平均待ち時間のレポートである。
前者のボットは、「待ち時間を知りたい」と入力すると、「どのアトラクション」と聞かれ、アトラクション名(一部でもよい)を入れると、CDSにアクセスし、その情報を取得し、回答する。またアトラクション別平均待ち時間は、Power BI dataflowsを使い、当日のデータを取得し、レポートにしている。「こういったサービスが、Power Platformのアーキテクチャを使えば簡単につくることができる」と清水氏は説明する。
この仕組みを作るのにかかった時間は、「構想3か月、実装は2日。だが同じモノを作ってくれと言われれば、1日でできる。このスピード感をぜひ、覚えておいてほしい」と語り、廣瀬氏にバトンタッチした。
Azureと連携し機能拡張する方法
廣瀬氏は以前、自身が実施したPower Appsのハンズオンで、エクセルが少しできるぐらいのレベルの人が、乗り換え案内ソフトのAPIにアクセスして、経理情報や金額情報を取得した経費精算アプリを作ることを目の当たりにしたという。そのとき、「ローコード開発のすごさを感じた」と感想を漏らす。
だがローコード開発プラットフォームを本当の意味で生かすには、開発者が重要になるという。廣瀬氏が解説するのは、Azureと連携することでさらにその機能を拡張させる方法だ。
その題材は、清水氏が作った「某テーマパークのアトラクション待ち時間の可視化するアプリ」。このアプリで蓄積されたデータを機械学習し、待ち時間を推測させるという拡張である。「Power Platformは他のシステム、例えば自前のシステムとつなげないと思っている人が非常に多い。このデモでは、つなげられることも証明したい」と廣瀬氏は熱く語った。
前提条件は清水氏同様、Power BI Pro以上、CDSが使える、Azureサブスクリプションのライセンスを保有していることである。
まずCDSからAzure Data Lake Storage Gen2へSyncする。こうすることで、更新するたびにそのデータがエクスポートされるようになる。Data Lake Storage Gen2からMachine Learning Studio Workspaceへデータを取り込み、データセットとして扱う。このデータセットを使って機械学習モデルを作成する。最終的にできあがったモデルはMachine Learning Studio Web ServicesでREST APIになる。REST APIになれば、Power Automateからも、既存の開発製品からもコールできるようになる。
構造は図3を参照してほしい。Data Lake Storeには、取得したデータ情報はCSVとして時系列順に並ぶ。Machine Learning Studio WorkspaceにCSVをデータセットとして取り込む。データをクレンジング処理し、機械学習が始まるという流れだ。
自社データベースとREST APIを作成し連携する
某テーマパークのアトラクション待ち時間のシステムを他のシステムと連携するために使うのが、「Azure Logic App(以下Logic App)」である。「Logic Appはローコード、ノーコードのサーバーレスのツール。主にマウスを使ってオペレーションする」と廣瀬氏は説明する。同ツールが提供するCDSのイベントトリガーを使うことで、Azureでそのイベントを受け取ることができるようになる。「なお、AzureではAzure Functionsというイベントドリブン型のサーバーレス コンピューティングプラットフォームサービスを提供しており、コーディングができる方であればこれを活用する」と廣瀬氏。こうすることで「もしCDSに1行入ったら」「CDSが1行更新されたら」というイベントに対するワークフローを、Logic Appsを使えばコーディングなしで開発できるようになるというわけだ。
自前のシステムとつなぐ場合は、Logic Appsのカスタムコネクタに自前のREST APIを取り込むことで、連携が可能になる。加えて、On-premise Data Gatewayを職場のサーバにインストールすれば、「社内のMySQLやPostgreSQL、SQLサーバ、SAP、さらにはIBMの汎用機ともつなぐことができる」と廣瀬氏は語る。「もしCDSが更新されたら、オンプレミスのサーバのCSVに1行追加する」ということができるというわけだ。
Azure側の仕組みについても廣瀬氏は解説。CDSの更新をトリガーにLogic Appsがコールされ、カスタムコネクタとして登録された自作のREST APIで連携。On-premise Data Gatewayを使えば、社内環境のDB、例えばOracleであればInsert/Updateし、社内ファイルサーバであれば指定したパスのCSVに1行追加できるようになる。
ここでこれまで説明したことを実際に行うデモを実施した。まずは「アトラクション待ち時間を機械学習で推測する」システムのデモ。待ち時間の予測を機械学習するために用いたアルゴリズムは線形回帰。「だいたいどのくらいの待ち時間になりそうか。明日の昼ぐらいだと、もし天気がどうだったらなどの要素を用いて、未来予想ができる。モデルの評価をして良いモデルができたら、Webサービスにする」(廣瀬氏)
次にLogic Appsカスタムコネクタを使って、自社環境と連携するデモを実施。連携するため、まずREST APIとその定義書のJSONファイルであるSwaggerを作成する。「ここで大事なことはSwaggerを手書きしないこと」と廣瀬氏は指摘する。.NETであればNSwag、JavaであればJAX-RSというように、Swaggerを自動生成するライブラリを使うことがポイントだという。そしてそれらをコネクタとしてLogic Appsに登録すれば、先に説明したように自社環境のDBやファイルサーバと連携し、1行追加ができることを証明した。
廣瀬氏は、Power Platformを使う最大のメリットを「プログラミング言語を扱わない新しい開発者の参画が可能になること」だと言う。例えば画面の修正なども今までは開発者が行っていたが、Power Platformであればマウス操作だけで可能なので、ユーザー側で変更できるようになる。「今まで開発をしたことのない人も開発をする人も、ぜひ、Power Platformを体験して、生産性を上げてほしい」(廣瀬氏)
清水氏も「開発者がそろっている場合は、最適なやり方をすればよいが、Power PlatformとAzureを使えば集約したデータを機械学習にかけたりする仕組みが簡単に作れるので、ぜひ試してほしい」と会場の参加者に呼びかけ、セッションを締めた。
お問い合わせ
日本マイクロソフト株式会社
-
【クラウドデベロッパーちゃんねる】
- クラウドを使って開発するITの開発者・デベロッパーの皆様へ様々な技術情報をお届けするYouTubeチャンネル
-
【Microsoft Learn】
- Microsoft Azureについて学習できる無料のオンライン トレーニング コンテンツ一覧
-
【開発者コミュニティ ニュースレター】
- マイクロソフトが配信しているニュースレターで、最新テクノロジ記事、技術ドキュメント、および開発者イベントなど、世界の情報を月イチで配信