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について学習できる無料のオンライン トレーニング コンテンツ一覧
-
【開発者コミュニティ ニュースレター】
- マイクロソフトが配信しているニュースレターで、最新テクノロジ記事、技術ドキュメント、および開発者イベントなど、世界の情報を月イチで配信