指定の時刻での実行
さて最後に、このSequenceを自動で実行する処理を入れます。今回はSequenceの画面で「Automate」をクリックします。

ここに表示されている項目が標準で提供されている自動起動の制御です。今回は時計のマークの「PERIODIC」というものを利用します。このような何らかのイベントに応じて処理を起動できるものを「Feed」と呼びます。現在標準で用意されているFeedには上記の画像のようなものがあります。今回はCronスケジューラと同様の機能をもつ「PERIODIC」というFeedを利用します。これ以外にも、NoSQLDBのCloudant用のFeedでは文章に更新があったら処理を開始するようなものも用意されています。

新しく「New Alerm」を定義します。

ここではサンプルに1分間隔で実行する設定を設定しました。「Create Periodic Trigger」をクリックして作成します。

先ほど作成したTiggerがあり、選択されていることを確認し「Next」をクリックします。このようにすると、これまで作成したSequenceの図の上に先ほどのTriggerが追加されているフロー図が表示されます。

内容が問題なければ、このまま「This Looks Good」をクリックします。最後に名前を確認して問題がなければ「Save Rule」とします。

これで設定が完了しました。ここで唐突に出てきましたが、このようにTriggerとActionをつなげている設定をruleと呼びます。最後に有効にしておきましょう。

これで定期的にweather2slackが実行されるルールが作成されました。
まとめ
OpenWhiskは、オープンソースのサーバレスなFunction as a Serviceを提供する環境です。どのような環境でも動作させることができますが、BluemixではOpenWhiskをサービスとして利用することができます。現時点では、まだFeedやActionは少ないですがアイディア次第でいろいろなことが考えられます。特に既存のコードなどを移植することで単純な作業の多くがOpenWhisk上で実行できる可能性があります。
今回は、Feedを用いて起動から実行までをサーバレスで行うイベント駆動型で行いました。これ以外にも、OpenWhiskにはREST APIやSDKでのInvoke(実行)を行うことができるのでMBaaS (Mobile Backend as a Service) のように利用することもできますもし、本格的にAPIサーバとして利用する場合には、Bluemixの場合にはAPI Managementなどでラッピングする方法も考えられます。
注意点
現在Bluemix上のOpenWhiskでは日本語の取扱に問題があり、プログラムコード内部で日本語を記述したりAction間の受け渡しデータに日本語が含まれていたりする場合に文字化けが発生します(単体でActionを実行して標準出力に出すなどの場合にはブラウザやコンソールのエンコーディング機能で表示はできます)。そのため今回は英語で天気を取得しています。その結果、温度などがちょっと使いづらい結果になっています。この問題を解決するためにはPythonコード内でSlack送信まで行うことで日本語も送信することが確認できています。今回はOpenWhiskの動きを説明したいこともあり、あえてOpenWhiskに付属しているPackegeのSlack送信を利用しています。

