③経済産業省が進める「行政手続きのデジタル化」～ローコード・ノーコードのシステム構築を実現するPower Platformとは？～

##はじめに
インフォシェア株式会社です。

この度弊社は、**経済産業省の「行政手続ＰａａＳ環境の導入実証・調査事業」**に参画し、ローコード・ノーコードのツールを用いてアプリとWebのポータルサイトを構成することで**DX(デジタルトランスフォーメーション)**を実現するプロジェクトを進めています。

現在、経済産業省における下記の2つの申請業務について、デジタル化の検討を行っています。

**後援名義申請**：※現在、検討を進めています
各種イベント等で、経済産業省の後援名義を使用するための申請

**オープンイノベーション促進税制申請**：※申請の利用を開始しています
オープンイノベーション促進の基準を満たす企業への出資を行った企業が行う税控除申請

プロジェクト全体の概要に関しては下記の記事をご覧ください。
→[①経済産業省が進める、「行政手続きのデジタル化」とは。～ Gビズフォームの展開について～](https://qiita.com/infoshare/items/6e08b998c9ea57676232)
<br><br>
今回の記事のテーマは、**ローコード・ノーコードでのシステム構築を実現するツール、Power Platform**です。

行政手続きではExcelやWordといったソフトが至る所で使われています。
入力が容易かつ、フォーム作成の柔軟性やデータの可視化機能に優れていてとても便利なツールではある一方、ユーザーの操作を読み取って動的に値を処理したり、入力内容によって項目変更したりという機能を実現するのは困難です。

例えば、行政の各種申請手続きにおいては、「A項目にYESと答えた場合のみB項目の入力が必須」「情報に過不足がある場合は申請不可」などの条件がつきものです。
WordやExcelの様式を使ってこのような手続きを行うと、申請された文書に記入漏れなどがないか担当者が確認するというプロセスが必要です。

しかし、**申請手続きのDXを行ったあとは、記入漏れがある申請については提出時にシステムがブロックし、申請者に修正すべき部分を指定して追記を促すという処理をいれることで、担当者が行っていた確認プロセスを省略することができます。**

そのほかにも、DXには**煩雑な連絡業務を最適化**したり、**繰り返し作業を自動化**したりすることで効率性の高い業務プロセスを実現する可能性があります。

##ローコード・ノーコードツール Power Platform

**ローコード・ノーコードツールとは、コーディングを全くしない（No code）、もしくはほとんどしない（low code）でアプリやウェブサイトの作成ができるツールです。**


デジタルテクノロジーが産業や業界を問わず重要なインフラとなりIT開発の需要は増す一方で、ユーザーの求める機能やサービスは多様に移り変わり、開発に費やせる期間も短くなっています。

そこで近年、コーディングの時間を最小限に圧縮し、実現する業務における必要を満たすことに重点をおいたローコード・ノーコードツールが注目されています。
コーディングを最小限にすることには開発期間を短縮できるというだけでなく、コードに詳しくない人でも開発に積極的に関わっていけるという利点もあります。

ローコード・ノーコードツールは、予算や人材の確保など様々な障壁があるなかで、困難に思えたDXを実現する解決策になるかもしれません。

本プロジェクトで使用したローコード・ノーコードツールはMicrosoft社によって提供されている**Power Platform**です。以下にPower Platformが提供するサービスについて紹介していきます。


Power Platformの他にも注目度が高まっているローコード・ノーコードツールがありますので、本記事をご一読の上、他のツールと十分に比較し実現したい内容に見合ったツールを選択する参考にしてください。


※料金体系やプランについてはMicrosoft社による公式の情報を参照してください。
下記に紹介するサービスがそれぞれどの機能まで使用できるか、購入するプランによって異なることがあるので、予算と使用する機能を突き合わせて検討する必要があります。
→[Power Platformの公式ページ](https://www.microsoft.com/ja-jp/biz/dynamics/power-platform.aspx)
→[Power Appsの料金プラン](https://powerapps.microsoft.com/ja-jp/pricing/)



##Power Platformが提供するサービス
![PowerPlatform.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/6a6d6447-df77-dfaf-b7d3-729a66e30f0d.png)


Power Plarformは前述のとおりローコード・ノーコードでシステムを構築することができるプラットフォームで、下記の４つのサービスによって構成されています。


**Power Apps**&emsp;&emsp;&emsp;&emsp;・・・オリジナルのWebアプリを作成し業務を効率化する
**Power Automate**&emsp;&nbsp;&nbsp;&nbsp;・・・コネクターを使用してワークフローを組み作業を自動化する
**Power BI** &emsp;&emsp;&emsp;&emsp;  &nbsp;&nbsp;&nbsp; ・・・ビジネスデータを可視化・分析して意思決定に活用する
**Power Virtual Agent**&nbsp;・・・スマートなチャットボットを独自開発し迅速にニーズに対応する

これらのサービスは
「Power Appsでアプリを作成する」「アプリからPower Automateのワークフローを実行し、ダイナミックな処理行ったり他のOffice製品や外部サービスと接続したりすることでアプリの機能を拡充する」「アプリから入力された情報をPower BIで分析しビジュアル化されたダッシュボードをPower Appsにアプリに埋め込む」「データをもとにPower Virtual Agentでユーザーのニーズに自動対応する」などそれぞれの機能を結び付けて使用することで、求められるシステムを柔軟に構築できるプラットフォームを提供します。

Power Platformは上記のようなサービスと、サービス同士のコラボレーションをローコーディングで実現します。
以下では、今回のプロジェクトで中心的に使用したPower AppsとPower Automateについて少し深掘って紹介します。




##Power Appsでアプリを作成する
![PowerAppsWithBack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/43fdd730-a14e-203e-a066-047e871f5206.png)　


**Power AppsではExcelで使用するような独自の関数や、PowerPointでスライドを作るようなビジュアルエディターで、プログラミングの知識なしでアプリを作成することができます。**

Power Appsで作成できるアプリには下記の３種類があります。

<ul>
<li>キャンバスアプリ</li>
<li>モデル駆動アプリ</li>
<li>ポータルサイト</li>
</ul>

それぞれの用途に相応しいアプリを選択することで、より効率的に実現したい業務にあったアプリを作成することができます。

####キャンバスアプリ
**キャンバスアプリはPower Appsで作成できるアプリでは最も自由度が高いものです。**
予め用意されたテンプレートか白紙のスクリーンから、自由にコンポーネントを置いてアプリのUIをデザインしていきます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/cf92b5ee-0296-44d2-429b-d0e12b35b329.png" width=80%>
↑キャンバスアプリの作成開始画面（白紙のスクリーン）


PowerPointでスライドを作成する感覚と似ているので、直感的にデザインを行うことができます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/e25584ac-0872-d4d3-c1be-8463ac94589e.png" width=80%>
図形や画像の挿入を行いつつ、同じ要領でスクリーンをデザインしていきます。コンポーネントが持つプロパティに変数や関数を入力することで動的な処理を実装することができます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/11378a18-5080-90f3-b6ce-45ec97fca7e2.png" width=80%>
このように、簡単なものであればほんの数分でひとつの機能を実装することができます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/ac1e80f6-6b19-f03c-f092-b230cd347d8b.png" width=80%>

細やかな実装や工夫を重ねていくことで優れたデザイン性と多機能をもったオリジナルアプリを作成することもできます。
下の画像は本プロジェクトで実際に作成された申請承認処理の機能を持つオリジナルのキャンバスアプリです。複数のスクリーンから構成され、TOPページに表示されるメニューから各機能が実装された画面に遷移します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/caedb749-758e-0fc3-6d38-7962dd26ee66.png" width=80%>
申請アイテムの作成、申請されたアイテムの承認処理、差し戻し処理、過去の申請一覧、関連文書の管理など、多くの機能がひとつのアプリに集約的に実装されています。

Power Appsのキャンバスアプリは、ExcelやSharePointなど一連のOffice製品をデータソースとして活用したり、Outlookコネクタからメールを送信したり、Power Automateのフローを実行したり、様々なテクノロジーと組み合わせて使用することができます。






####モデル駆動アプリ

**モデル駆動アプリ**はキャンバスアプリと異なり、すでにアプリの型が標準で用意されています。０から作成するキャンバスアプリと比べると、**充実した標準機能があり、大量のデータの処理に適しているという特徴があります。**

モデル駆動アプリは**Common Data Service(CDS)をデータソースとして使用することが前提**となっており、CDS側でデータベースの構成や関連付け、ビュー・フォーム・ダッシュボードなどモデル駆動アプリで表示するコンポーネントの作成を行います。
標準機能として提供される機能には下記のようなものがあります。

<ul>
<li>レコードの一覧を確認でき、検索やフィルター機能を持つ「ビュー」</li>
<li>レコードの詳細を表示し、同時に入力フォームの役割をもつ「フォーム」</li>
<li>各レコードの処理段階を視覚的に表示し管理する「業務プロセスフロー」</li>
<li>入力項目を条件によって制御する「ビジネスロジック」</li>
<li>ExcelへのインポートとExcelからのエクスポート</li>
<li>Wordテンプレートへの吐き出し</li>
<li>データを可視化して表示する「ダッシュボード」</li>
</ul>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/0ec38d3f-89c7-8117-0f2e-9cce281a695c.png" width=80%>

これらの機能をキャンバスアプリで実装するとそれなりの工数がかかります。さらにWordテンプレートへの吐き出しなどキャンバスアプリでは実現できない機能もモデル駆動アプリであれば実装できます。

また、キャンバスアプリでは大量のデータを処理するとパフォーマンスが落ちてしまうことがありますが、ある程度のデータ量を前提としているCDSをベースとしてモデル駆動アプリではパフォーマンス低下のリスクが低いです。

セキュリティロールと呼ばれるアクセス制御機能により、ユーザーによって作成、読み取り、編集、削除などの権限を安全に制御できるというのも利点です。



####ポータルサイト

**ポータルサイトはPower Appsのひとつの環境につきひとつを保持することができるWeb上に公開されるサイトです。**
Web上に公開されているので、適切なライセンスを持ったテナント内のユーザーが使用するキャンバスアプリやモデル駆動アプリと異なり、**URLを知っていれば誰でもアクセスできるのがポータルサイトの特徴**です。

**外部ユーザー向けの窓口として使用し、情報を発信したり入力してもらったりする用途に適しています。**

ポータルサイトの作成においては、ポータルサイトそのものの編集画面を開く方法と、ポータル管理用に自動で作成されるモデル駆動アプリを使用する方法があり、両方を使い分けて設計していきます。

ポータル管理用モデル駆動アプリで、リストビューやウェブページ、ページの階層構造、入力フォーム、表示するコンテンツリソース、アクセス制御のルール、ユーザー、ユーザーに与えるwebロールなど、ポータル上で表示したり運用に必要となったりするコンポーネントを作成します。


↓ポータル管理用モデル駆動アプリ
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/eeba2e11-e756-e530-1094-a53bde76c86d.png" width=80%>


ポータルサイトの編集画面では、ポータル管理用モデル駆動アプリで作成したコンポーネントをページに配置してデザインを作成したり、ページ表示されるテキストコンテンツを編集したり、変更した情報を公開されているポータル反映する同期構成をかけたりといった作業を行います。

↓ポータルサイトの編集画面
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/6e2368ee-bcae-0481-d062-f7bf7cdbc40d.png" width=80%>


ポータルサイトではナビゲーションメニューやパンくずリストの表示、外部認証の使用、フォームの入力や送信、Power Automateの実行、ロゴやアイコンの挿入、ユーザーの種別によるアクセス範囲の制御、添付ファイルのアップロードなど、標準的なウェブサイトや業務窓口に求められるデザインと機能が実装可能です。








##Power Automateで作業を自動化する
![PowerAutomateWithBack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/8212fd58-df82-4764-6135-d108c8da303c.png)


**Power Automateはノーコードでワークフローを作成できるサービスです。**

ワークフロー実行のトリガーを設定し、そのあとに実行されるアクションを指定することでノーコードで簡単に業務を自動化することができます。
トリガーとしては、手動での実行、タイマーを設定した日時や曜日による実行、何か別のアクションや書き込みなどによる実行などを選ぶことができます。トリガーによって実行されるフローでは、Office製品や外部のソフトウェアへのデータ書き込みや更新、削除、メールの送信など多様なアクションを行うことができ、データの変換、条件分岐、ループ処理などを利用することで柔軟な実装が可能となります。

ワークフローは上記に紹介したPower Appsのキャンバスアプリ、モデル駆動アプリ、ポータルサイトからも実行することができるので、アプリの操作をトリガーとして内部的なシステム処理をワークフローで実装するという使い方ができます。

↓Power Automateのワークフロー作成画面
実行したいアクションを順番に配置し、設定値を決めて実行する動作を指定していきます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/f68931ee-3ec3-ce17-8f19-e7fa7ba0976b.png" width=80%>
例えば本プロジェクトでは、「申請者がポータル上で申請を行うボタンをクリックする」という動作をトリガーとして、該当レコードの申請状況を表すステータスを「申請済み」に変更するという動作をPower Automateで実装しています。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/63bc411b-5026-c748-20ac-20640bcb5eee.png" width=80%>
トリガーにPower Appを指定し、Power Apps側でワークフローの実行タイミングを定義します。
実行されたワークフローは、接続されたデータソースから後の処理で必要となるレコードのデータを取得します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/394951e2-f370-d462-4845-f5d95eb58046.png" width=80%>
上で取得したデータから条件分岐の判断に使用する項目を動的に設定します。ステータス項目が「申請済み」以外の場合は「はい」に進み、「申請済み」の場合は「いいえ」に進むという条件分岐を作成してみました。

「はい」「いいえ」の枠内ではそれぞれ別のアクションを複数つなげることができます。
上記では例として「はい」でレコードのステータス枠を「申請済み」に更新するアクションを、「いいえ」にレコードを削除するアクションを置いています。どちらも操作するレコードのデータ元はCommon Data Service。

Power Automateでは上記の例の他にも、多様なサービスと接続し様々なアクションを実行することができます。
また、分岐した「はい」「いいえ」の中でさらに複数層にわたって分岐をネストさせたり、異なるアクションを長くつなげることで、ひとつのトリガーから複雑な処理を自動実行する設計も可能です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/78f7c5bc-964e-3684-8c30-f2a74502dcff.png" width=80%>
今回のプロジェクトでは上の画像のように条件分岐を繰り返しながら、アクションを加えるレコードの状態を判別し、状態によって異なる処理を実行するワークフローを作成しました。

ここまで紹介したすでに存在するデータソースに対するアクションだけでなく、データソースから取得した値を本文中に含むメールを作成して送信するなど、裏方で**システムに自動実行してほしい処理でPower Appsでカバーできない部分をPower Automateを活用して実現することができます。**

##Power Platformで必要な機能を実現する
![wholesysytemmapwithpowericons.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/741612/f36d97ce-98a1-d8ce-9b61-b5b0c5d4748f.png)
Power Platformでシステムを構築するにあたって、本プロジェクトには行政のDXのテンプレート事例としての意義付けもあるため、可能な限り標準機能のみでの実装に近づける工夫をしました。

標準機能を活用することには、運用のシンプルになる、セキュリティが担保できるなどの利点があります。

よって、考え方としてしてはまず**必要な機能を満たすためには、手続きにかかわる申請者や省内担当者向けとしてPower Appsのどのアプリを作成するのがベストであるか**を検討します。

キャンバスアプリ、モデル駆動アプリ、ポータルサイトではそれぞれできることが異なるので、各アプリの標準機能を比較して最も用途にあったものを選択します。このとき、データベースに関しても標準機能をできるだけ活かし、標準機能の組み合わせによって実装できる機能の幅が広がるような設計を意識しました。

Power Appsのアプリをベースに、**アプリ上でユーザーが実行したときに発生するアクションや時間ベースの繰り返し実行が必要な処理など、Power Automate向きの実装を行い、システム上の機能を補完**しています。

本プロジェクトで作成したシステムの全体イメージや、実際にWebで公開されているポータルサイトについては、以下から確認していただけます。
**すべての機能はここまで紹介したPower Platformのサービスと作成手順を発展させて実装されています。**
→[②ローコード・ノーコードツールPower PlatformでDXを加速させる試みの全体像](https://qiita.com/infoshare/items/2bb5734556cff6c8cebc)
→[gBizFORMポータル](https://form.gbiz.go.jp/)

スピード感のあるDXに魅力を感じる方は、ノーコード・ローコードツールPower Platformでの実現をご検討されてみていかがでしょうか。