天気を取得する処理の作成
はじめに、天気を取得する処理を作成します。このOpenWhisk上で実行する処理を「Action」と呼びます。

まずはじめにBluemixのコンソールにログインし「Compute」から「OpenWhisk」を選択すると以下のような画面が表示されます。今回利用するのは「Dashboard」と呼ばれる結果を見る画面と、「Edit and Debug」と呼ばれるコードを編集する画面を利用していきます。

最初に「Edit and Debug」を選択します。

このような画面が表示されます。まずは実行するコードを記載したいと思います。サンプルではJavaScriptが利用されているケースが多いので、今回はPythonを利用してみたいと思います。「Create an Action」というボタンをクリックして新規の「Action」を作ります。OpenWhiskでは実行する処理を「Action」という単位で管理していきます。前出の「Function as as Service」のまさに「Function」に該当する部分です。

今回は、名称として「getWeatherNews」とし、利用言語はPythonを指定しています。作成するには「Create Action」をクリックします。

うまく作成できると、上記のようにサンプルコードが入った状態で作成がされます。今回は以下のコードを置き換えてください。ファイルの保存に関しては自動で行われます。
import requests
def main(dict):
if 'username' in dict:
username = dict['username']
if 'password' in dict:
password = dict['password']
if 'latitude' in dict:
latitude = dict['latitude']
if 'longitude' in dict:
longitude = dict['longitude']
baseUrl = "twcservice.mybluemix.net/api/weather/v1/geocode/"
url1 = baseUrl + latitude + "/" + longitude + "/forecast/daily/3day.json"
requestUrl = "https://" + username + ":" + password + "@" + url1
response = requests.get(
requestUrl)
# requestUrl,
# params={'language': 'ja-JP'})
responsedata = response.json()
datas = responsedata['forecasts']
todayData = datas[0]
dict = {"type": 'the weather company api'}
sample = u'Today: %s' % (todayData['narrative'])
dict.update({"text": sample})
return dict
今回は、BluemixにあるWeather Company APIを利用して天気を取得しています(OpenWhisk上にも天気を取得するActionが事前に用意されているのですが、APIキーが分かりませんでしたので今回は利用していません)。Bluemixのサービスの利用方法はここでは割愛しますが、通常のサービス同様にWeather Company のインスタンスを作成し、クレデンシャル情報を取得してください。取得したクレデンシャル情報(Username, Password)は後述で利用するので控えておいてください。
作成したこの「getWeatherNews」Actionを実行してみます。「Run This Action」をクリックすると、次の画面が表示されます。

ここで実際に実行する「引数」をJSON Inputの中に記載しておく必要があります。今回はコードの中でWeather Company APIを利用するためのusername/password/緯度/経度が必要になるので、その値を記載します(Pythonコードの中ではmain(dict)として引数を取得するようにするようにしています)。username/passwordは先ほどのサービスのクレデンシャル情報を入力します。緯度、経度についてはGoogleMapなどで天気を取得したい場所の情報を取得します。今回は「33.4, 139.766247」を入力しています。最後に「Run With This Value」をクリックします。

返り値としてJSON形式で値が取得できました。今回はtextの中に天気予報が入っています。英語(正確には「華氏」)なので何やらさっぱりですが、今日の予報が取得できました。21度から32度と出ています。ちなみに後述する理由により日本語では取得していませんが、日本語にすると「所により曇り。 最高気温26~28℃、最低気温25~27℃」という感じに表示されており、なじみがある予報になっています。これ以外にもWeather Company API自体はより細かい時間での予報や気温などが簡単に得ることができるので便利に使えそうです。
ここまでで天気を簡単に取得することができました。

このActionを実行するには3つの代表的な方法があり、1つは上記で表示されている「REST API」経由での呼び出し。次は専用のMobile SDK経由での呼び出し。最後は今回紹介するようなトリガー用いた呼び出しがあります。実際の所RESTで呼び出せるだけでもかなり用途が広がります。
