330 Views
August 27, 22
スライド概要
タイトル:Power Apps x .NET ~ フュージョン開発によるビジネス アプリケーションの変革
概要:企業、政府自治体に限らず、Fusion Team = 市民開発者とプロの開発者がコラボしてアプリを作っていこうという気運が高まってきています。
今回は Power Apps、 .NET 6、OpenAPI 対応 Web API、Azure API Management 等の組み合わせでアプリを作ってみます。
https://dotnetlab.connpass.com/event/254374/
FPT ジャパン エグゼクティブエバンジェリスト 独立行政法人 国立印刷局 デジタル統括アドバイザー兼最高情報セキュリティアドバイザー Microsoft で13年間、テクニカルエバンジェリストとして .NET、C#、Visual Studio、Windows、iOS、Android、Microsoft Azure 等の開発者向け技術啓発活動 (DevRel) 。Dell、Accenture、Elastic、VMware 等での DevRel 後、2024年11月1日より現職で DevRel 活動を開始。NVIDIA との戦略的協業 AI GPU クラウド、Azure/AWS/GC 上の AI &データ関連サービスのマーケティング、プリセールス、教育、関連新規サービス開発。元内閣官房 IT 総合戦略室 政府 CIO 補佐官(兼務)、元デジタル庁 ソリューションアーキテクト(兼務)。
Power Apps x .NET ~ フュージョン開発によるビジネスアプリケーションの変⾰ 鈴⽊ 章太郎 Elastic テクニカルプロダクトマーケティングマネージャー/エバンジェリスト デジタル庁 省庁業務グループ ソリューションアーキテクト
Shotaro Suzuki Twitter : @shosuz Elastic Technical Product Marketing Manager/Evangelist デジタル庁 省庁業務グループ ソリューションアーキテクト 元 Microsoft Technical Evangelist
• アジェンダ • • • • フュージョン開発チームでビジネス ソフトウェア作成を変⾰する OpenAPI 対応 Web API を 作成する Azure API Management と統合する Web API を Power Apps で使⽤する まとめ
フュージョン開発チームでビジネス ソフトウェア作成 を変⾰する https://docs.microsoft.com/ja-jp/learn/modules/transform-business-software-authoring-with-fusion-dev/
企業における Tech Intensity • フュージョン開発の上位の考え⽅ • 3つの側⾯ • テクノロジーの積極的な採⽤ • テクノロジーを利活⽤する個⼈の能⼒向上 • テクノロジー利活⽤に対しての組織の信頼 • ⽬的 • 組織のサイロを解体し、チームの⽣産性を向上 させる • 実践するには、業務上の問題を解決するために、組 織全体から集まった⼈達の⼒が必要 • そのチームが “フュージョンチーム”
フュージョンチーム開発とは 企業における Power Platform によるローコード開発には ① 市⺠開発者 ② プロ開発者 ③ IT管理者の役割分担が存在 ① 市⺠開発者 業務知識を活⽤し、Power Platform を使⽤してアプリ ケーションを開発するユーザー 部⾨の⼈達 ② プロ開発者 最新かつ⾼度なプログラミング 技術を駆使し、アプリケーション を開発する⼈達 ③ IT管理者 IT 部⾨において運⽤・保守・ セキュリティやガバナンスに⽬を 配る⼈達
Power Platform とフュージョン開発 企業、政府・⾃治体等において、Power Platform だけでは満たされない、より複雑な課題がある場合、 • Power Platform 側にプレミアムコネクターも存在しない、既存のシステムとの連携が必要な場合 • データの⼀貫性を維持するために追加のビジネスロジックを構築する必要がある場合 • 他の外部システムも含め常に外部のサービスと連携しなければならない場合 そのような問題に対処するために、フュージョン開発チームとして三者が協業し解決策を⽣み出す フィールド 在庫管理システム
フュージョンチームにおけるアプリ開発ライフサイクル • 市⺠開発者 Power Platform でアプリケーションの プロトタイプを作成 • プロ開発者 外部システムと連携するカスタムコネクタ (Web API等)を開発 • IT 管理者 プロ開発者に協⼒して出来上がったコネクタ (Web API等)を市⺠開発者に提供 • 市⺠開発者 1. プロ開発者提供カスタムコネクタを 利⽤し、Power Apps から外部 システムのデータへの参照・更新 などの処理を追加 2. 開発したアプリは、直ちに業務の 利⽤者に試してもらい、フィード バックを受け、改良を加える
カスタムコネクタ(Web API 等)の作成 Power Platform のアプリケーションが、外部システムにアクセスするためのカスタムメイドのコネクタ • カスタムコネクタ作成と利⽤の流れ • ① 外部システムと接続する Web API を作成 (プロ開発者) • ② 作成した Web API を Azure API Management に登録し、 カスタムコネクタとして当該組織の Power Apps環境に公開 (IT管理者) • ③ 公開されたカスタム API を Power Platform アプリケーション に組み込む (市⺠開発者) Power Apps を使⽤してアプリを構築するためのフュージョン開発アプローチ
Visual Studio を使⽤して、OpenAPI 対応 Web API を Azure API Management と 統合する https://docs.microsoft.com/ja-jp/learn/modules/integrate-openapi-enabled-web-api-with-apim-and-visual-studio/
Swashbackle を使⽤して OpenAPI ドキュメントを⽣成 ASP.NET Core Web API アプリケーションから OpenAPI ドキュメントを⽣成する • Visual Studio を使⽤して Web API を Azure API Management に 発⾏するには、その前に OpenAPI ドキュメントを⽤意する必要あり • OpenAPI ドキュメントは、Web API のエンドポイントを検出するために API Management によって使⽤される • Swashbuckle ツールを使⽤すれば 開発者は OpenAPI ドキュメントを これまでよりも簡単に作成できる Swashbuckle ですべての API エンドポイントの詳細、ペイロード構造、セキュリティ要件 などを含む OpenAPI ドキュメントを即座に⽣成
OpenAPI 対応 Web API を Azure App Services に発⾏ コードからデプロイまでの Visual Studio でのシームレスな開発エクスペリエンス • 開発ツール(Visual Studio) ですべてが 1 か所で実⾏でき 時間を節約し⽣産性を向上 • フュージョン開発では時間が最重要 • コードを記述しアプリをビルドしてから、 あるツールを使⽤してアプリをデプロイ • コードに戻り、それを更新して、デプロイ ⽤の他のツールに切り替え • ツール間の切り替えにかかるコストは 膨⼤で最終的には⽣産性が低下 Azure App Service にアプリを 発⾏する機能 アプリの発⾏中に Web API を Azure API Management と統合する 機能
OpenAPI 対応 Web API を Azure API Management と統合 Azure App Service で実⾏されている Web API アプリケーションを Azure API Management と統合 • Azure API Management で Web API の統合を確認 • Azure portal にログインし、 キーワード api management を、Azure portal の上部の 検索バーに⼊⼒ • [API Management サービス] が表⽰されたらクリック • [API] ブレードにアクセスし、API を選択 • /api/ - GET 操作を選択し、 ページの中央にある [テスト] タブをクリック
Web API を Power Apps で使⽤する https://docs.microsoft.com/ja-jp/learn/modules/discover-web-apis-power-apps/
カスタムコネクタとは︖またその使⽤例について Power Platform のアプリケーションが外部システムにアクセスするためのカスタムメイドのコネクタ • Power Apps を Microsoft および Microsoft 以外のサービスに接続する 数百の予め構築されたコネクタ • しかし、特定のシステムの在庫管理 Web API など、あらかじめ構築されて いるコネクタとして⽤意されていない サービスと通信する場合がある • カスタムコネクタ は、Power Apps アプリケーションから Azure API Management にホストされた Web API 呼び出しにより、独⾃のアクション を使⽤したコネクタの作成を可能にする カスタム コネクタが⽣成されると、Power Apps ページに表⽰される カスタム コネクタは、Azure API Management からエクスポートすることで作成できる これにより、Power Apps アプリ開発者は、 カスタム コネクタを使⽤して、 Web API のアドレスや機能を知ることなく、 Web API を使⽤できる コネクタと接続の⽐較 カスタム コネクタは、Web API のラッパーであり、Power Apps と Web API の通信を可能にする ただし、カスタム コネクタ⾃体は、接続を作成しない限り何もしない • コネクタ は、Web API のホストと操作の詳細を認識 • 接続 は資格情報を認識し、Web API との通信を容易にする コネクタ への参照を含む
Azure API Management を使ってカスタムコネクタを作成 API Management からカスタム コネクタへの Web API のエクスポート • カスタムコネクタ作成と利⽤の流れ • ① 外部システムと接続する Web API を作成 (プロ開発者) • ② 作成した Web API を Azure API Management に登録し、カ スタムコネクタとして 当該組織の Power Apps環境に公開 (IT管理者) • ③ 公開されたカスタム API を Power Platform アプリケーション に組み込む (市⺠開発者)
OpenAPI ドキュメントを使ってカスタムコネクタを作成 カスタム コネクタに対して OpenAPI ドキュメントを使⽤する理由 市⺠開発者にとって最も重要な利点 • 依存関係の解消: • OpenAPI ドキュメントの使⽤により、誰かが API Management からカスタムコネクタを 作成するのを待つ必要なく、⾃⾝でカスタム コネクタを作成できる • 専⾨的な開発チームでは、Web API ⾃体 に OpenAPI ドキュメント⽣成機能を含める のが⼀般的 • URL にアクセスして OpenAPI ドキュメント をダウンロードし、このドキュメントを使⽤する カスタム コネクタを作成できる • アジリティの向上: • Web API 開発チームにより OpenAPI の ドキュメントが提供できるため、Power Apps の開発ペースが上がる • カスタムコネクタの作成と使⽤について、今後 開発者に依存する必要がなくなる 契約が同じである限り、OpenAPI は Web API の実際の実装の知識は必要あり
Power Apps アプリから Web API を呼び出すカスタムコネクタを使⽤ 作成されテストされた Web API をキャンバス アプリで使⽤する 公開されたカスタム API をPower Platform アプリケーションに組み込む
まとめ
リソース • フュージョン開発チームでビジネス ソフトウェア作成を変⾰する http://docs.microsoft.com/ja-jp/learn/modules/transform-business-software-authoring-with-fusion-dev/ • Power Apps を使⽤してアプリを構築するためのフュージョン開発アプローチ https://aka.ms/fusiondevbook • Web API を Power Apps で使⽤する http://docs.microsoft.com/ja-jp/learn/modules/discover-web-apis-power-apps/ • Visual Studio を使⽤して、OpenAPI 対応 Web API を Azure API Management と統合する http://docs.microsoft.com/ja-jp/learn/modules/integrate-openapi-enabled-web-api-with-apim-and-visual-studio/ • Fusion Developers - Exercise files for the fusion devs learning path modules https://github.com/MicrosoftDocs/mslearn-developer-tools-power-platform/tree/master/fusion-developers
Thank you for your attention!