IICS CAI を使って、APIのレスポンスをファイル出力してみる

この記事は [インフォマティカ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/informatica) Day 10 の記事として書かれています。

# はじめに
本記事では、Informatica Intelligent Cloud Services の アプリケーション統合/Cloud Application Integration を使ったAPI連携処理の作成についてご紹介します。

例えば、飲み会などのお店情報が某大手サイトのURLで送られてきた場合、そのサイトから場所を確認するとGoogle Mapが使用されていることがあるのではないでしょうか？
これは、Google社が地図情報を取得するためのAPIを公開しており、そのサイトでは、APIを介して地図情報を取得し、掲載しているのです。

また、アカウントを作成する際、郵便番号を入力し、横にある「住所検索」のようなボタンをクリックすると、住所が自動入力される機能を使用したことがあるのではないでしょうか？
これも、外部の郵便番号から住所検索する機能がAPIで公開されており、同様にAPIを介してデータを取得し、自動入力されている場合が多いです。

このように、API連携処理は、日常生活のあらゆるところで利用されています。

今回使用する Cloud Application Integration とは、そんなAPIを介したデータ連携をGUIベースで作成することが出来る機能となります。

# 今回作成するAPI連携処理について	
本記事では、政府統計の総合窓口であるe-Statにて提供されているオープンデータを取得するAPIを使用します。
ここでは、令和2年の国勢調査のデータをAPIを介して取得してみます。
そして、JSONファイルとして、SecureAgentをインストールしたサーバのローカルディレクトリに出力する処理を作成します。

それでは、作成していきましょう。

# １．ユーザ登録
政府統計の総合窓口であるe-StatでAPIを使用するためには、ユーザ登録が必要となりますので、登録を行いました。
ユーザ登録方法やAPIの仕様などについては、下記URLをご参照ください。
https://www.e-stat.go.jp/api/

今回は、以下の統計データを取得してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/943c21ff-8eb8-edeb-a878-4596f054c3e1.png)

# ２．プロセスの作成
## 2-1.サービスコネクタの作成
まず、サービスコネクタを作成します。
サービスコネクタは、任意のWebサービスを呼び出すための接続情報を設定するアセットとなります。

### 2-2-1.新規作成
アプリケーション統合/Cloud Application Integrationの[新規]をクリック後、[サービスコネクタ - フォームを使用したサービスコネクタ]を選択し、[作成]を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/10f6a703-ed1c-fd81-745c-13a927f99a91.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/70181535-0262-cdec-1692-2b8ee03ec6b2.png)

### 2-2-2.[定義]タブの設定
[定義]タブでは、アセットの名前や説明、Webサービスに接続するために必要なプロパティを入力します。
接続プロパティには、データセット情報のAPIリクエストURLを設定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/c5ed6f4c-1348-d207-b078-4bec66dcea5f.png)

### 2-2-3.[プロセスオブジェクト]タブの設定
[プロセスオブジェクト]タブでは、データをグループ化し、構造化オブジェクトを作成できます。
今回はプロセスオブジェクト名とフィールド名に次の設定を行いました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/c01c984f-37fa-4956-d998-86588e152006.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/ba44bbb4-b14d-d0c8-6144-4ae8b8a6fa74.png)

### 2-2-4.[アクション]タブの設定
[アクション]タブではサービスに対するアクションを設定します。
今回は次の設定を行いました。
- [アクション]タブ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/c36f58e8-99d7-630c-e24c-1fbb7b8a8001.png)
- [入力]タブ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/a1671b1e-dec5-61f5-6f8d-880f235f81c2.png)
- [バインディング]タブ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/f227e4f8-2369-fba3-1bf5-074afee16a1a.png)
- [出力]タブ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/6e48f746-35a1-382c-7718-70663051a5e5.png)

## 2-2.アプリケーション接続の作成
次に、アプリケーション接続を作成します。
アプリケーション接続は、ソースまたはターゲットの接続情報を設定するアセットとなります。
今回はソースがe-Stat、ターゲットがローカルディレクトリとして、次の設定を行いました。
- ソース：e-Stat
下記を設定します。
タイプ：「2-1」で作成したサービスコネクタを指定
接続プロパティ：「Host Name」にAPIリクエストURLを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/abf21e99-b2f1-eb04-8005-8a8959da3936.png)
- ターゲット：SecureAgentをインストールしたサーバのローカルディレクトリ
下記を設定します。
● [プロパティ]タブ
タイプ：「File」を指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/c780be1f-c05c-72b6-d746-d6d323792c6a.png)
● [イベントターゲット]タブ
出力先として使用するため、[イベントターゲット]タブを選択します。
①「Add Event Target」から「FileWriter」を選択
②「プロパティ」の「Directory」に出力先ディレクトリを指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/b4638ac9-d45c-146c-1027-4f4ff9c3d828.png)

## 2-3.プロセスの作成
そして、プロセスを作成します。
APIを介してリクエストを送信してレスポンスを受信し、その結果をJSONファイルとして出力するプロセスを作成します。
- 全体像
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/77a4de3c-bb62-a930-6798-3b5d4a522f89.png)

### 2-3-1.開始ステップ
- [全般]プロパティ
名前を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/d8865467-aedf-412c-1aa8-f99d352b46b3.png)
- [入力フィールド]プロパティ
APIリクエストのパラメータとして設定する値を受け取るためのフィールドを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/bf7acf4b-4afd-a881-11ce-cc67f0f09ee7.png)
- [出力フィールド]プロパティ
e-Statから取得した値をクライアントへ返却するためのフィールドを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/8317513c-7b81-d906-71ae-8ce5f0fe7e90.png)

### 2-3-2.サービスステップ(統計データを取得)
- [全般]プロパティ
名前を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/d9ba928f-002c-31fe-cae1-fa77a93b5889.png)
- [サービス]プロパティ
APIリクエストをするために、e-Statへの接続情報を設定したアプリケーション接続を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/cb08cb4d-eb6b-55c7-77ff-24188980cfd6.png)
- [入力フィールド]プロパティ
APIの各入力フィールドに対して、開始ステップの入力フィールドをマッピングします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/d3a40116-d014-35b7-b334-36e3fe59280b.png)

### 2-3-3.割り当てステップ
- [全般]プロパティ
名前を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/3ae01b75-6974-16b4-79c2-d13de0b9d89e.png)
- [割り当て]プロパティ
受信したレスポンスを開始ステップの出力フィールドにマッピングします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/70c790ee-605b-fa8c-2e14-7e5e894f73b4.png)

### 2-3-4.サービスステップ(ファイル出力)
- [全般]プロパティ
名前を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/63dc6be8-74ef-ba0a-4e56-3162484c6cf5.png)
- [サービス]プロパティ
ファイル出力するために、SecureAgentをインストールしたサーバのローカルディレクトリへの接続情報を設定したアプリケーション接続を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/693315fa-b114-3507-323b-10c2e228b24a.png)
- [入力フィールド]プロパティ
計算式で出力内容について設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/5b56ea4b-56c1-43dd-a816-ce59244c0a8c.png)
```.tsx:計算式の例
<FileWriteTask>
<fileName>TEST.json</fileName>               --- ファイル名
<format>JSON</format>                        --- フォーマット
<content>application/json</content>
   <objectName>response_value</objectName>
   <object>{$output.response_value  }        --- ファイルに出力する内容
   </object>
</FileWriteTask>
```
ここまで設定できたら、[保存]して[パブリッシュ]します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/3dccd3f4-a52d-e129-3863-727d24bc8bcc.png)

# ３．実行結果
それでは、実行してみましょう。
[プロパティの詳細]からサービスURLをコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/d5ba8de8-00cd-7e70-5ed9-af3a0a50eb82.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/a30a1f86-5492-4fb1-5423-0fff45440665.png)
Postmanを使って、リクエストします。
コピーしたサービスURLとAPIリクエストのパラメータ値を設定して、送信します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/cd3f0e29-7568-5432-c244-eae2aafedbbb.png)
実行完了後に確認すると、指定したディレクトリに出力されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/63b86851-31f9-7407-3d98-b0a07d9b392f.png)
また、中を確認すると、取得したデータが出力されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004989/5dd4609d-978b-a042-41b1-aa141c0a42f0.png)

# ４．最後に
今回は、サンプルとして簡単なAPI連携処理を作成しましたが、いかがでしたでしょうか？
今後も拡大していくAPIを介したデータ連携について、IICS CAI(Cloud Application Integration)を使ってぜひお試しください。

## 参考サイト	
- IICS CAI(Cloud Application Integration)のマニュアル
https://docs.informatica.com/integration-cloud/cloud-application-integration/current-version.html

- 政府統計の総合窓口(e-Stat)
https://www.e-stat.go.jp/