当日の運用が可能！？ freee API × Power Platform で実現するローコード開発

この記事は、[freee APIで業務を楽しく便利にハックしよう！2021](https://qiita.com/advent-calendar/2021/freee-api) 13日目の記事となります。


# はじめに
何気なく日々行っている身近な業務の中から、ちょっとした課題を見つけ、普段から利用しているローコードツールとfreee APIを活用して少しでも業務担当者が楽になればいいな。を目標に取り組んだ内容をまとめます。
※普段から利用しているローコードツールはMicrosoft社が提供しているPower Platformです

https://www.microsoft.com/ja-jp/biz/dynamics/power-platform.aspx

# 対象の業務
今回対象としたのは事務担当の方が行っていた、**取引先情報の登録作業**です。

###【業務の概要】
* 新規で取引先が発生した際、各システムへ取引先の情報を登録する
* 登録済みの取引先情報に変更が発生した際、各システムの取引先情報を随時変更する
* 業務担当者が特定の取引先情報の登録・更新を行うケースがある

簡単な図に現在の業務の流れをまとめました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/46892bae-4e5b-f790-7130-4524a2de169a.png)

**【取引先情報を登録する対象のシステムやツール】**

| 対象システム/ツール      | 利用用途      |
| ----      | --------- |
| freee会計 | 社内の経理業務 |
| Excel     | RPAや事務担当者のチェック作業等に利用 |
| 基幹システム | 業務管理等 / オンプレ、API非公開 |
| Dataverse/SharePoint List　| マスタデータとしてRPAやiPaaS で利用|

■Microsoft Dataverse
　Power PlatformやDynamics 365 などのビジネスアプリケーションで使用できる、超高機能のクラウドベースのデータベース。
　https://docs.microsoft.com/ja-jp/powerapps/maker/data-platform/data-platform-intro
　
■SharePoint List
　SharePoint で利用できる、リスト形式でデータの管理を行うコンテンツ。リストの追加、修正、削除等が行える。

# 課題と改善案
### 【課題】

- 取引先情報を登録するツールが複数のシステム/ツールであるため、人為的ミスにより、誤った情報が登録されることもある
- 各システムは当然インターフェースが違うため、登録する情報もバラバラ
- 取引先情報を登録・更新する際のチェック体制が無い（各担当ベースで行われている）
- 取引先情報の変更の際には、複数のシステムやツールに対して更新を行うため、一部システムへの更新が漏れる可能性がある

### 【改善案】

- 登録・更新のインターフェース（画面）を一本化する
- マネージャーなどの上長へ登録・更新のチェックが行われるように承認フローを導入する
- 短期間で実現するため、普段から利用している**Microsoft Teams / Power Apps / Power Automate**を利用した構成にする

※Power Automate / Power Apps については以下を参照
【Power Automate】https://docs.microsoft.com/ja-jp/power-automate/getting-started
【Power Apps】https://docs.microsoft.com/ja-jp/powerapps/powerapps-overview

上記の改善案から考案した業務フロー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/c016f79b-05a9-b4e8-78dd-64e657d36ab6.png)

- 1. 事務担当者がPower Appsで用意した「取引先登録」画面に新規取引先の登録を行う。
- 2. 登録のタイミングでPower Automate が起動し、マネージャーへ承認要求がTeamsへ通知される。
- 3. 承認要求が承認されると、Power Automate経由で各システムへデータが登録される。

**【登録方法】**

| 対象システム/ツール      | 登録・更新方法      | 使用する機能 |
| ----      | --------- | --------- |
| freee会計 | Power Automate | freee API（取引先関連のAPI）：「HTTPコネクタ」 |
| Excel     | Power Automate | Excel コネクタ |
| 基幹システム | Power Automate for desktop(RPA) | デスクトップフローの実行 |
| Dataverse/SharePoint List　| Power Automate | Dataverseコネクタ、SharePointコネクタ |



# 完成したアプリ・フロー
### Power Apps
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/5e79aadd-8b74-e019-4839-3f94b318848a.png)


### Power Automate
フローの全体像
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/541e11c7-c8d9-ce86-f6bf-99b0a30f5916.png)





# 前提条件・必要な実行環境
- Microsoft 365 Business Basic 以上
- Power Automate per user with attended RPA plan(クラウドフローからデスクトップフローを起動させるため)
- Power Apps (アプリごとのプラン/ユーザーごとのプラン)
- freee API ([取引先API](https://developer.freee.co.jp/docs/accounting/reference#operations-tag-Partners))
- Windows 10 or 11 pro以上

※検証用には各種開発者プログラム、トライアルでも可能
  【Microsoft 365 開発者プログラム】

  https://developer.microsoft.com/ja-JP/microsoft-365/dev-program

　【Power Apps 開発者向けプラン】

  https://powerapps.microsoft.com/ja-jp/developerplan/

# アーキテクチャ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/04707810-aec1-4d08-620e-09aa24c992e4.png)


# 1. freee API の利用準備

freee API スタートガイドを参考にテスト事業所の取得から、アクセストークン取得まで行います。

https://developer.freee.co.jp/getting-started


# 2. Power Apps で取引先登録画面の作成
今回は短期間での作成を目指したので、機能は最低限にしています。
登録処理が行えるまでの画面作成にトータル約4時間程度を要しました。利用する担当者にそのままアプリを共有するだけですぐ運用できるため、このスピード感はローコードツールであるPower Apps の醍醐味です。

### 【機能概要】
- 取引先情報の検索
    - 表示される登録済みのデータはDataverseの取引先情報より取得
- 取引先情報の登録（更新・削除は今回未実装）
    - 保存ボタンをクリックすると、別途用意したPower Automate のフローが実行される
    - 必要な情報はJSON形式でPower Automate側へ渡す
    - Dataverseへ取引先情報の仮データが登録される

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/eb042596-5721-6c95-7e53-102b38069b81.png)


# 3. Power Automate のフロー作成
今回は新規登録のフローのみ紹介します。
クラウドフローの作成はAPIの検証含め、トータル約4時間（Power Automate for desktopで作成したRPA処理の時間は除く）。

### 【機能概要】
- 承認要求処理
- freee APIを利用したfreee会計への取引先情報登録、アクセストークン処理
- Excel Online への取引先情報登録
- Power Automate for desktop を使った基幹システムへの取引先情報登録
- SharePoint List への取引先情報登録
- Dataverseの仮データを本データとして更新、freeeで管理している取引先情報の取引先IDを登録
- 処理完了通知を事務担当者のTeamsへ通知

### Power Appsからの呼び出し～承認要求の開始

- Power Appsからの呼び出し
- 各種変数設定、Power Appsより受け取ったJSONの解析
- 承認要求

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/e4848425-d678-b33e-6fa2-cf98237a5fd9.png)


### 承認結果による分岐～Teamsへの通知

- 承認依頼結果による分岐
    - 【承認】各システム・ツールへの取引先情報登録
        - freee API アクセストークン取得：「HTTPコネクタを利用」
        - freee API (取引先の作成）：「HTTPコネクタを利用」
        - 基幹システムへの登録（Power Automate for desktop の実行）
        - Excel への登録
        - SharePoint List への登録
        - Dataverse の取引先仮登録データの更新
    - 【拒否】Dataverse の取引先仮登録データを削除する
- Teamsに結果を通知する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/44ab574b-8363-38ac-b4c4-82d17efbea30.png)

承認時の処理
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/d7197b03-6ced-81f2-4ac6-2e3029ba5822.png)

freee会計 API （取引先作成）の呼び出し処理
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/bc277641-e063-ec33-da8c-d43c9d6e5172.png)


データ登録処理
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/525790c7-680e-2f1a-dcd9-f433ee966923.png)

# 補足情報
今回、freee API はPower Automate のHTTPコネクタから呼び出しましたが、Microsoft が提供している「カスタムコネクタ」という機能を用いることで、よりユーザーが簡単にfreee APIなどのコネクタが提供されていないAPIを利用することができるようになります。
また、freee 会計のAPIがいくつかPower Automateのコネクタとしてプレビューで公開されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1064310/03699b33-5832-29f6-9fa9-0dd1ac59a0aa.png)


※【カスタムコネクタ】：APIを他の提供されているコネクタのようにラップして自分で作成、管理ができる
https://docs.microsoft.com/ja-jp/connectors/custom-connectors/



# 今後の課題
まずは取引先情報登録の機能を作成するだけでも投入の効果が得られると思い、取引先情報登録にのみ今回は注力しました。
Power Appsのアプリも荒削りですが、取引先情報の検索や登録は少しずつブラッシュアップしていきたいと思います。
今回の記事では紹介しませんでしたが、デスクトップフローも運用していく中で改善する必要が出てくると思うので、適宜修正しながら運用したいと考えています。
（そもそもの業務フローを最適化させることが最優先だと感じていますが。。。）

また、API を活用することは事務作業を行う方(非エンジニア)にとって少しハードルが高いため、Power Automateのカスタムコネクタで簡単にfreee APIを利用できる環境を用意したいと思います。
（「ローコードツール」 × 「freee API」で小さい業務でも自分自身で「自動化/効率化」ができるような環境にしていきたい）

- 重複登録のチェック
- 更新機能
- freee API のカスタムコネクタ作成
- Power Appsで作成した取引先登録画面のブラッシュアップ
<br> （画面のUI/UXに凝りすぎると時間が溶けるので程々に。。）


# まとめ
今回はfreee APIやPower Platform、Teamsを活用してシンプルな構成にすることで短期間で予定していた改善案を実現することができました。
実際に改善案の立案から開発～仮運用までで1日程度の時間で実現できているのは、ローコードツールの活用とAPIをうまく使うことができたからだと感じています。
また、今回のアプリとフローを導入することによって得られる効果は、作業担当者の作業時間の削減というよりも、作業を行う事務担当の方のストレス削減ができるだけも十分価値があったのではないかと思っています。