保管中の株価データを使用してサーバーレス関数を実行する  

保管中のデータをサーバーレス cron ジョブを使用して処理する方法を学ぶ

By Anthony Amanse

Description

これまで長い間、クラウド・コンピューティングは、開発者がアプリのデプロイ先をオンプレミス・ソリューションからマネージド・サーバーに移行する方法として役立ってきました。アプリをクラウドに移行すれば、お金も時間も節約できます。しかも現在は、サーバーレス・コンピューティングを使用することで、開発者はサーバーを管理する必要からも解放されます。コードをサーバーレス・プラットフォームにプッシュするだけで、必要に応じて特定のイベント発生時にコードを実行できます。また、必要に応じて REST API を使って直接コードを実行することもできます。サーバーレスの手法を採用すれば、迅速にコードを本番環境にデプロイし、節約された時間をアプリケーションのプログラミングに費やすことができます。さらに、完成したアプリケーションをクラウドにデプロイする作業や、アプリのサーバーを管理する作業に煩わされることもありません。

他のクラウド・コンピューティング・ソリューションと比較すると、サーバーレスの手法は時間の節約になるだけではありません。クラウド上でのサーバーのプロビジョニングや実行にかかるコストの節約にもなります。コードが実行されるのはアプリの使用中だけで、アプリが使用されていない時間に対して料金が請求されることはありません。料金を支払うのは、コードの実行時に使用したリソースの分だけです。サーバーレス・プラットフォームは、初期段階のアプリに対して大規模なユーザー・ベースが見込めないスタートアップにとって都合が良いだけでなく、顧客のニーズを満たそうと取り組むすべての開発者に利益をもたらします。

このコード・パターンでは、数多くの使用ケースのうち、株式市場向けアプリケーションを例とした使用ケースをデモンストレーションします。具体的には、時間ベースのスケジュールを使用して、サーバーレス関数を実行します。(cron ソフトウェア・ユーティリティーを使用した) サーバーレスの cron ジョブは、保管中のデータ (例えば、Cloudant データベース内のデータ) を処理するのに役立ちます。サンプル・アプリケーションでデータベース内に保管するのは、アプリケーション・ユーザーが追跡対象として選んだ株式データです。そのデータに対し、サーバーレス関数は毎日特定の時間に実行されるように構成されています (ただし、実行する時間はユーザーが変更することもできます)。サーバーレス関数のうちの 1 つでは、外部 API を呼び出して、ユーザーが追跡している特定の株の市場価格と、その株に関するニュースを取得します。ユーザーが追跡している株の市場価格が変わっている場合、設定されたしきい値に応じてユーザーに通知します。ユーザーへの通知は、Slack または Twilio API を使用した SMS によって行います。このコード・パターンでは、ユーザーが追跡している株に関するニュース記事に対するセンチメントと感情を明らかにするために、Watson Natural Language Understanding も利用します。

このコード・パターンに取り組めば、サーバーレス関数を使用して独自の cron ジョブを実装する方法を把握できるはずです。

Overview

このサンプル・アプリケーションは、(Apache OpenWhisk ベースの) IBM Cloud Functions を使用して、Cloudant データベース内に保管されているデータを、cron ジョブを使用して処理する方法をデモンストレーションするものです。この使用ケースでは、アクションとデータ・サービスが連動して、cron ジョブの構成内で指定した特定の時間にロジックが実行される仕組みを説明します。

イベント (この使用ケースでは cron トリガー) によって、ある特定の関数 (アクション) がトリガーされます。このアクションは、データベースからデータを取得し、外部 API (IEX API) から該当する企業のニュースと株価データを取得します。また、このアクションにより別の 2 つの関数が呼び出されます。一方の関数では、外部 API から取得したニュースを Watson Natural Language Understanding に渡し、そのニュースから検出されたセンチメントと感情を取得します。もう一方の関数では、最新の市価変動を SMS (Twilio) または Slack、あるいはこの両方でアプリのユーザーに通知します。

このコード・パターンを完了すると、以下のスキルを身に付けられます。

  • Cloud Functions を作成してデプロイする
  • アラーム・トリガー内で cron を使用して Cloud Functions を呼び出す
  • Cloud Functions 内で Watson Natural Language Understanding を利用する
  • サーバーレス・コンピューティングを使用して保管中のデータを処理する

Flow

  1. ユーザーが追跡対象の証券コードを入力します。
  2. cron ユーティリティーを使用して、時間ベースのスケジュールにアラーム・トリガーが設定されます。このアラーム・トリガーは、設定された時間に get-stocks-data アクションをトリガーします。
  3. get-stocks-data アクションが Cloudant データベースから証券コードを取得し、外部 API を使用して株ごとの市場価格と各企業に関するニュースを取得します。
  4. get-stocks-data が、さらに notify アクションと send-to-nlu アクションの 2 つを呼び出します。
  5. notify アクションが SMS または Slack 通知によってユーザーに市価変動を伝えます。
  6. send-to-nlu アクションが、get-stocks-data アクションによって取得されたニュースをWatson Natural Language Understanding に送信し、このサービスからセンチメントと感情を取得します。
  7. センチメントと感情がデータベース内に保管されて、ユーザーがそのデータを表示できるようになります。

Instructions

このコード・パターンに関する詳細な手順は、GitHub リポジトリー内にある README.md ファイルに記載されています。手順の概要は以下のとおりです。

  1. リポジトリーを複製します。
  2. IBM Cloud サービス・インスタンスを作成します。
  3. 通知用の外部サービスを構成します。
  4. Cloud Functions をデプロイします。
  5. アプリケーションを起動します。

Related Blogs

Call for Code 2019 応募に向けて個別オンライン相談会の予約受付開始

皆さん、こんにちは。IBM デベロッパーアドボケイト戸倉彩です。 グローバルハッカソンは目標をもって仲間と一緒 […]

続けて読む Call for Code 2019 応募に向けて個別オンライン相談会の予約受付開始

Related Links