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

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


#目次
1. 概要
2. Object 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/Kony2/private/4e564da3dec846a9c704)を行いました。今回は[Object Service](https://qiita.com/Kony2/private/da9953d80f2220bd51e0)の記事を読んで、Object Serviceを作成していきます。
それでは作成していきましょう。

#Object Serviceを作成しよう
1. Integration Serviceを作成したFabric Appsの__Configure Service__タブでObjectsを選択します。下図の画面で[__CONFIGURE NEW__]をクリックしてサービスを作成します。
![図6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/964bca3a-744c-65a5-323e-0c8048e378c0.png)

2. 次にObject Serviceの名前をつけます(この時、つける名前はIntegration Serviceと同じものはつけられません)。また今回は前回作成したIntegration Serviceを利用するので__Endpoint Type__は「__Integration & Orchestration Service__」を選択します。[__SAVE&CONFIGURE__]をクリックすると保存した上で編集画面に移ることができます。
![図8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/1e60a091-abd4-3bb5-2e0b-a96f6e7b127c.png)

3. 作成したObject Serviceを選択し、[CONFIGURE NEW]をクリックしてオブジェクトを作成します。作成したオブジェクトに名前をつけます。
さらにこのオブジェクトにフィールドを作成します。DataModelタブで先ほど作ったオブジェクトの左側にあるプラスボタンを押すと下の階層に「__Fields__」と「__Relationships__」が出てきます。
Fieldsを選択してフィールドを作成します。[__Add__]ボタンを押すとフィールドを新たに作成することができます。このフィールドには自分が作成したIntegration Serviceで設定したリクエストとレスポンスのパラメータを作成する必要があります(これを作成していないと後述のマッピングが行えないからです)。
もし必要なフィールドが足りてない場合は後から追加することも可能です。追加時、追加したにも関わらず反映されない場合があるのでブラウザのリロードを行います。
![図10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/43509c25-a5d3-e9a7-6d27-0baa5398c776.png)

4. 続いてMappingタブに移動します。
[ADD]ボタンで先ほど作ったオブジェクトにIntegration Serviceで作ったサービスとオペレーションを紐づけていきます。
この時「__Data Model Verb__」で「__custom__」を選択し、「__Custom Verb__」に名前を入力します。
「__Services__」ではプルダウンメニューから自分が使用するサービスを選択します。
[SAVE]または[ADD MAPPING]をクリックします。
![図11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/3dd0447e-0519-6097-7fc2-b4de16991111.png)

5. 作成したものをマッピングしていきます。
下図画面の右下の[__Edit__]ボタンをクリックするとエディター画面が開かれます。
![図12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/5d3f8d54-4439-1cf8-ddcc-13088862f9c0.png)
下図画面(エディター画面)で繋げたいパラメーター同士をドラッグ＆ドロップで繋いでいき、右下の[SAVE]ボタンで保存します。
![図13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/8906cf29-98ca-3bca-2b14-ad5a95779248.png)
リクエストもレスポンスも同じ要領でマッピングしていきます。

6. テストを行います
MappingタブのTestタブをクリックすると下図画面が開くので、リクエストペイロードにJSON形式でリクエストパラメーターを入力します。
![図14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/d70c4877-b93f-1f79-b2cf-543aa3b159df.png)
「Select Environment」で環境を選択し[__Send__]をクリックした結果、JSONで値が返ってきていれば成功です。
![図15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598032/f90786b2-293f-e773-c1c7-bb13a9094011.png)

#まとめ
今回はObject Serviceを作成いしていきました。[参考にした記事](https://qiita.com/Kony2/private/da9953d80f2220bd51e0)はRelational DatabaseをEndpoint Typeに選択していたものの、フィールドの作成やマッピングについてはそれほど変わりないと思います。しかし今回作成したのは基本的な部分だけであり、プリプロセッサーやポストプロセッサーの作成等のさらに高度な機能部分については触れていないので、それらを作成する際には一筋縄ではいかない可能性もあると思います。
また今回作成しているアプリはIntegration Serviceを1つしか利用していないので、Integration Serviceを直接呼び出すことで動作させることも可能です。しかし今回Object Serviceを利用したのは、Object Serviceを利用する利点にIntegration Serviceなどで利用するサービスが複数存在する場合でも呼び出しをObject Service1つにすることができるという点があるからです。さらにもう1つの利点は、Integration Serviceはリクエストに対するパラメータをレスポンスとして全て返しますが、Object Serviceを使ってリクエストおよびレスポンスのパラメータをマッピングすることで必要なパラメータだけを渡し、必要なパラメータだけを受け取るようにすることができます。
今後複数のサービスを利用する際の参考になればと思います。

Integration Serviceに続いてObject Serviceも作成できたので、次は[Kony Visualizer](https://qiita.com/Kony2/private/17899bb2629d5e958e74)でフロントエンドとの繋ぎ込みを行なっていきます。