KCCS APIサービスの天気予報データ配信機能を試してみた

御縁がありまして、 [KCCS APIサービス](http://www.energy-cloud.jp/) をお試しさせていただけることになりました。

ので、その使用感をレポートいたします。

# そもそもKCCS APIサービスってなに?

**気象データを買おうと思ったけど、初期費用も月額利用料も思っていた以上に高くてなかなか手が出ない！**

という悩みをお持ちの方にオススメのサービスですとのこと。

初期費用は不要で使った分だけの従量課金になっているので、必要なときに必要な分だけでいけるそーです。

詳しくは、 http://www.energy-cloud.jp/ を御参照ください。

# はじめかた

[お問い合わせフォーム](https://www.kccs.co.jp/contact/ja/others/index.html) から 「KCCS APIサービスの件」 と件名を書いていただき、ご相談くださいとのことです。

私は、御縁がありましたので、中の人に直接お願いして使わせていただきました。

その後、 [ご利用までの流れ](http://www.energy-cloud.jp/flow/) に記載の通りですが、申込書を送って、アクセスキーとシークレットアクセスキーをメールで送っていただけます。

# 仕様を確認

[サービス仕様書](http://www.energy-cloud.jp/documents/) を見ましょう。

PDFになってますので、ダウンロードします。

ざっと目を通しますが、基本的な使いかたとしては、よくあるRESTful APIと同様の仕様になってますので、そんなに構えずに、さくっと使える内容になっています。

# シークレットアクセスキーの変更

最初に発行していただいたシークレットアクセスキーは、自分で発行したものではなく、KCCSの担当者に発行いただいたモノなので、自分以外の第三者の目に触れています。

ので、再発行をしておきましょう。

DLしておいたPDF [サービス仕様書](http://www.energy-cloud.jp/documents/) の 「 _3.2.シークレットアクセスキー変更機能(REST API)_ 」を見てやってみます。

`curl` で実行してみます。

```sh
$ curl \
  -X POST \
  https://<アクセスキー>:<シークレットアクセスキー>@rest.energy-cloud.jp/api/v1/change-secrettoken/
{"secret":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx"}
```

ってな具合で返ってきました。

`curl` でBasic認証をする際は、URLを、 `https://USER:PASSWORD@host` とするといけます。
もしくは、 `curl --user USER:PASSWORD` でもいけます。

ちなみに、このAPIを実行した後は、前のシークレットアクセスキーが使えなくなりますので、レスポンスのJSONを失わないように注意しましょう。

もし、なくしたら、KCCS APIサービスの担当の方に連絡しましょう。

# 天気予報データを取得してみよう

では、シークレットアクセスキーを再発行して、安全?に使える準備ができましたので、さっそく、取得してみましょう。

```sh
curl \
  -X GET \
  --user "<アクセスキー>:<シークレットアクセスキー>" \
  "https://rest.energy-cloud.jp/api/v1/weather-forecasts/?latitude=35.69&longitude=139.76&3h_weathers=1"
```

って実行すると、東京の天気予報が取得できます。

```json
{
  "datetime": "2016-09-26 20:00:00",
  "timezone": "+09:00",
  "area": {
    "latitude": 139.76257,
    "longitude": 35.688488,
    "address": "東京都千代田区大手町一丁目",
    "weather_info": {
      "prefecture": "東京都",
      "primary": {
        "code": "130010",
        "name": "東京地方",
        "station_name": "東京",
        "station_code": "44132"
      }
    }
  },
  "3h_weathers": [
    {
      "time": "2016-09-26 18:00:00",
      "weather": {
        "code": "200",
        "name": "くもり",
        "mark": "くもり"
      }
    },
    {
      "time": "2016-09-26 21:00:00",
      "weather": {
        "code": "200",
        "name": "くもり",
        "mark": "くもり"
      }
    },
    {
      "time": "2016-09-27 00:00:00",
      "weather": {
        "code": "200",
        "name": "くもり",
        "mark": "くもり"
      }
    },
    {
      "time": "2016-09-27 03:00:00",
      "weather": {
        "code": "200",
        "name": "くもり",
        "mark": "くもり"
      }
    },
    {
      "time": "2016-09-27 06:00:00",
      "weather": {
        "code": "200",
        "name": "くもり",
        "mark": "くもり"
      }
    },
    {
      "time": "2016-09-27 09:00:00",
      "weather": {
        "code": "100",
        "name": "晴れ",
        "mark": "晴れ"
      }
    },
    {
      "time": "2016-09-27 12:00:00",
      "weather": {
        "code": "100",
        "name": "晴れ",
        "mark": "晴れ"
      }
    },
    {
      "time": "2016-09-27 15:00:00",
      "weather": {
        "code": "200",
        "name": "くもり",
        "mark": "くもり"
      }
    },
    {
      "time": "2016-09-27 18:00:00",
      "weather": {
        "code": "200",
        "name": "くもり",
        "mark": "くもり"
      }
    },
    {
      "time": "2016-09-27 21:00:00",
      "weather": {
        "code": "200",
        "name": "くもり",
        "mark": "くもり"
      }
    }
  ]
}
```

JSONを整形するとこんな感じ。

おー。明日は、雨予報は出てないですね。

# まとめ

今回は、ちろっとAPIをcurlで実行してみました。

天気予報のみを実行してみましたが、他にも、気象予報や、週間天気予報、暑さ指数予測などが取得できるそう。

GEOを指定して天気予報が取得できるとのことで、そのデータを使って色々な組み合わせでサービスを展開できそうな予感がしてます。

ぱっと思いつくのは、地図との連携が考えられますが、Machine Learningの別の軸に使ってみると面白いかもなーなんてちょっと思いました。

そのあたりも別途、試していきたいです。

以上です。