気象情報APIを使ってアプリを作ってみた -Integration Service編-

気象情報APIを使ってアプリを作ってみた -Integration Service編-

#目次
1. 概要
2. Integration Serviceを作成しよう
3. まとめ

#概要
Kony PlatformでYahoo!JAPANデベロッパーネットワークの[__気象情報API__](https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/weather.html#response_field)を使った降水の有無をお知らせしてくれるWebアプリケーションを作っていきたいと思います。
本記事では[Integration Service](https://qiita.com/Kony3/private/81dc6a698854bc7f4589)の記事を読んで、__Integration Service__を作成していきます。あらかじめ[Visualizer](https://qiita.com/Kony2/private/17899bb2629d5e958e74)にてアプリケーションの画面を作っておいた方が使用するパラメータを決めやすくおすすめです。
では早速作っていきましょう。

#Integration Serviceを作成しよう
1. Kony Fabric Consoleにログイン後、「__Apps__」で[__ADD NEW__]をクリックすると新しい__Fabric Apps__を作成します。
作成したFabric Appsには最初は名前が入っていません。下図のようにアプリケーション名の右隣の鉛筆マークで編集することができるので、そこで自分の作成するアプリケーションの名前に編集しましょう(今回は「WeatherCheck」という名前にしました)。
![図26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/f12bddef-0e5e-d6fb-ac2a-ce25683eb780.png)


2. 作成したFabric Appsをクリックし、__Configure Services__タブでIntegrationを選択します。下図の「＋」ボタンをクリックし[__Add New Service__]をクリックする、もしくは[__ADD NEW__]から[__CONFIGURE NEW__]をクリックすることで新たなサービスを作成します。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/e14b7524-6424-cbbb-d999-00cbc3b7b29b.png)

3. サービスを定義していきます。Nameなど必要な値を適切に入力していきます(使いたいService Typeによって入力項目が異なります。今回は使用するAPIでJSON形式が利用でき、JSONを選択したのでNama・ServiceType・PathExpression・Ver・Base URL・Web Service Authentication・IdentityServiceの入力が必要です)。
ここで入力必須の項目に__Base URL__があります。
このBase URLには__使いたいAPIやサービス__のURLを入力すればOKです。
今回使用するのはYahoo!JAPANディベロッパーネットワークの気象情報APIですので下記のURLを入力します。
__https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/weather.html__

4. 作成したIntegration Serviceに[__ADD OPERATION__]ボタンを押してオペレーションを作成します。こちらもNameなど必要な値を入力していきます。
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/1cfda7ab-af1c-0f44-0ad1-f3a1f7724425.png)
上部の項目(Target URLのEnter suffixは後述するので一旦置いておいてそれ以外の項目)に値が入力できたらリクエストとレスポンスを入力していきます。

5. リクエストとレスポンスを入力していきます。
使用するAPIのリクエストとレスポンスを入力します。
リクエストの方は比較的わかりやすく、APIを使う上で必要なパラメーターを入力していきます。[__Add Parameter__]ボタンを押すことでパラメーターを追加することができます。
Data Typeに関して、今回はすべてStringですが必要に応じて変更します。
![図21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/4f54087c-5be8-1044-4561-ab0497e97d4d.png)
レスポンスの入力は手入力で行うことも出来ますがやや難しいところがあります。特に__PATH__の入力がわかりにくいです。
なのでリクエストパラメータを設定した後、下図右下の[__Select an Environment__]で環境を選択し[__SAVE AND FETCH RESPONSE__]をクリックしてください。
![図5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/94e8e558-f679-2e4f-cb65-ca794ca279dd.png)
リクエストパラーメータが正しく、疎通が成功すると下図のように__Request Payload__・__Backend Response__・__Output Result__が得られます。
![図22.1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/d7ae8856-6517-4623-706a-b166a822e138.png)
また__Backend Response__で取得したいレスポンスにカーソルを合わせると下図のように「__Create Response__」
と出てくるので、それをクリックするとレスポンスの設定が可能です。
![図25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/8088a5d4-fd97-c464-0bfd-5c2095248a70.png)

DATA TYPEについては今回の解説の趣旨からは逸れるので深くは言及しませんが、DATA TYPEで「__collection__」を選択することで返還されるJSONのフィールド内の配列を表すことができます。
「$.●●.▲▲[*]」とPATHに記載し、DATA TYPEを「collection」にすると、「__COLLECTION ID__」で▲▲を指定することで▲▲の配列内のフィールドをレスポンスのパラーメータとして加えることができます。

6. Target URLのEnter suffixについて
手順5までで一通りのサービスの作成は完了ですが、この状態で[Select an Environment]で環境を選択し[SAVE AND FETCH RESPONSE]をクリックしてテストを行なってもおそらくエラーで返ってくると思います。
私の場合、この時のエラーのステータスコードは401でした。有効な認証資格が不足しているというものです。
今回利用した気象情報APIを利用するにはappidが必要であるため、Target URLのEnter suffixに下図のように値を入力してみてください。
おそらくテストにて正常に値が返ってくると思います。
![図3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/ac475250-da18-b8d5-83c3-60f872edfc82.png)
またバックエンドレスポンスは返って来るけれど、Output ResultがJSONになってくれず、「__Malformed JSON Response__」というエラーメッセージが出て上手くいかない時は、リクエストパラメータにoutputを加えてDATA TYPEで「__json__」を指定しTarget URLのEnter suffixに付け加えてやる必要があります。

#まとめ
Target URLのEnter suffixにはリクエストパラメータのフィールドを指定する必要がありました。またレスポンスパラメータはPATHの書き方やそのDATA TYPEに工夫が必要でした。しかしレスポンスパラメータの設定等は、ワンクリックで且つGUIで設定できる点が非常に便利であり、Konyの魅力の1つであると思います。
しかし、これらの書き方等の情報はKonyの公式ドキュメントには記載されていない部分で落とし穴になりやすい部分かと思われましたので、本記事に記載しました。少しでも参考になればと思います。

これらの手順でIntegration Serviceを作成したら次は[Object Service](https://qiita.com/Kony2/private/686346f5283df7794ae1)を作成していきます。