新しい IBM Developer JP サイトへようこそ!サイトのデザインが一新され、旧 developerWorks のコンテンツも統合されました。 詳細はこちら

コミュニティー間のコラボレーションを促すモバイル・アプリを作成する

危機の際に、支援物資を入手できる場所を周知させる場合や物資収集の支援を申し出る場合でも、ボランティアの派遣といったローカル・サービスを提供する場合でも、あらゆる困難な状況にコミュニティー同士が協力して問題解決に対処できる態勢づくりに関心が高まっています。

2020 年の SARS-COV-2 (COVID-19、いわゆる「新型コロナウィルス」) 危機を例に挙げると、連邦政府と地方自治体では幅広いプログラムを展開しているかもしれませんが、一般に、最も必要としている場所にできるだけ早く支援の手を差し伸べるには、ローカル・レベルで協力するのが最も効率的な方法です。従来のソーシャル・メディアはコミュニティー内で連絡をとる手段の 1 つであるとは言え、多くの場合、必要とされている支援を迅速に見つけられるように構造化されていません。

現在の危機的状況の中、私たちはすでに現地の食糧、医療機器、その他の援助物資が不足している場面を目にしています。この問題をさらに悪化させているのは、推奨される (あるいは必須の) 自主隔離とソーシャル・ディスタンシングという対策により、十分な援助物資がある場所に簡単にアクセスできないことです。

今、求められているのは、コミュニティー同士が簡単につながって必要な情報を交換できるようにするソリューションです。

学習の目的

このチュートリアルでは、ReactNative フロントエンドと Node.js バックエンドを、IBM Cloud を介して Watson Assistant、Cloudant データベース、HERE Location Services に接続する方法を学びます。開発者はこのチュートリアルをランチパッドとして、コミュニティー同士の協力を促進する統合ソリューションの構築にスムーズに取り掛かることができます。

前提条件

注: このアプリケーションは iOS デバイスと Android デバイスの両方で稼働します。それぞれのタイプのデバイスを対象とした手順については、README ファイルをご覧ください。

所要時間

このチュートリアルの所要時間は約 20 ~ 30 分です。

仕組み

居住、企業規模、ボランティア団体など、物資サプライヤーとなる資格に制限はありません。食糧、支援物資、リソース、その他の必需品を提供できる場合、サプライヤーはこのモバイル・アプリケーションを使用して簡単なフォームに記入し、何をどれだけ提供できるのかを伝えることができます。この情報は IBM Cloud 内のデータベースに格納されます。

食糧、支援物資、リソース、その他の必需品を必要とする受領者は、このモバイル・アプリケーションを開き、チャット・インターフェースを使用して、支援物資を入手できる最寄りの場所を検索します。例えば、「どこに行けばパンが手に入る?」、「買ったものを代わりに取りに行ってくれる人はいる?」などと入力します。モバイル・アプリケーションは (最初に Watson Assistant を利用して質問を理解してから) データベースにアクセスし、必要としているものを入手できる場所を示す地図を表示します。

フロー

このソリューション・スターターのアイデアは、チャット・インターフェース (Watson Assistant)、入手可能な救援物資の状態を保持するデータ・ストレージ、ユーザーが必要とする情報をリアルタイムで提供するロケーション・サービスを統合するというものです。

アーキテクチャー図

  1. 物資を受領する側のユーザーがモバイル・アプリを起動します。ユーザーは複数のサービス全体にわたり情報にアクセスできます。
  2. 受領側のユーザーが Watson Assistant に対し、必要な食糧やサービスに関する質問をすると、その答えが返されます。
  3. 供給側のユーザーは、提供できるリソースについて投稿できるとともに、必要とされている品目を検索できます。
  4. 受領側のユーザーは HERE Location Services を利用して、援助物資を引き取る (または預ける) 場所へのルートを示す地理位置情報データを取得できます。

手順

  1. Watson Assistant のインスタンスをセットアップします
  2. Cloudant を使用して CouchDB インスタンスをプロビジョニングします
  3. HERE Developer ポータルで API 鍵を生成します
  4. サーバーを実行します
  5. モバイル・アプリケーションを実行します

1. Watson Assistant のインスタンスをセットアップする

IBM Cloud にログインし、Watson Assistant のインスタンスをプロビジョニングします。

  1. IBM Cloud カタログに含まれている Watson Assistant のインスタンスをプロビジョニングします。
  2. Watson Assistant サービスを起動します。
  3. アシスタントを作成します。
  4. アシスタントダイアログ・スキルを追加するために、starter-kit-cooperation-dialog-skill.json ファイルをインポートします。
  5. 「Assistants (アシスタント)」ページに戻り、アクション・メニュー ( ) から「Settings (設定)」を選択して開き、「API Details (API 詳細)」をクリックします。
  6. Assistant ID (アシスタント ID)」、「API Key (API 鍵)」、「Assistant URL (アシスタント URL)」の値をメモします。「Assistant URL (アシスタント URL)」については、完全なディレクトリー/パスではなく、ベース URL/ドメイン (例: https://api.us-south.assistant.watson.cloud.ibm.comhttps://api.eu-gb.assistant.watson.cloud.ibm.com) をメモしてください。これら 3 つの値のすべてがステップ 4 で必要になります。

  7. Preview Link (リンクをプレビュー)」を表示し、ダイアログ・スキルをテストして検証する際のリンクを取得します。

2. Cloudant を使用して CouchDB インスタンスをプロビジョニングする

IBM Cloud にログインし、Cloudant を使用して CouchDB インスタンスをプロビジョニングします。

  1. カタログから「Databases (データベース)」を選択し、「Cloudant」パネルを選択します。
  2. 「Cloudant」パネルを選択すると、Cloudant プランを選択できるようになります。単純なテスト用の無料枠があります。この CIR サンプルを実行するには、この無料枠のプランで十分です。該当する地域を選択し、サービス名に名前を付けます。「Available authentication methods (使用可能な認証方式)」としては、「Use only IAM (IAM のみを使用)」を選択することをお勧めします。他の設定はデフォルト値のままでかまいません。準備ができたら、青色の「Create (作成)」ボタンをクリックします。
  3. Cloudant インスタンスが作成されたら、CIR API サーバーがこのインスタンスと通信するために使用する、サービス資格情報を作成する必要があります。実行中の Cloudant インスタンスを選択すると、左側のメニューから「Service credentials (サービス資格情報)」を選択できるようになります。新しいサービス資格情報を作成して名前を付けます (任意の名前にできます)。
  4. 資格情報が作成されたら、ステップ 4 で API サーバーのコードに貼り付けられるよう、「View service credentials (サービス資格情報を表示)」を選択し、表示された資格情報をコピーします。

3. HERE Developer ポータルで API 鍵を生成する

このアプリケーションは地図、検索、経路指定に対応するために、HERE Location Services を利用します。

これらのサービスにアクセスするには、API 鍵が必要です。HERE Developer ポータルで説明されている手順に従って、JavaScript API 鍵を生成してください。

4. サーバーを実行する

以下の手順に従って、サーバー・アプリケーションをセットアップして起動します。

  1. リポジトリーのクローンに含まれる starter-kit/server-app ディレクトリーにナビゲートします。
  2. starter-kit/server-app ディレクトリー内にある .env.example ファイルをコピーして、.env という名前の新しいファイルを作成します。
  3. 新しく作成した .env ファイルを編集し、ASSISTANT_URLASSISTANT_IDASSISTANT_IAM_APIKEY を、ステップ 1 で Watson Assistant のダイアログ・スキルの「API Detail (API 詳細)」ページからメモした値で更新します。また、CLOUDANT_IDCLOUDANT_IAM_APIKEY を、ステップ 2 で作成したサービス資格情報からコピーした値で更新します。(CLOUDANT_ID には、資格情報に含まれる username を使用してください)。
  4. manifest.yml ファイル内の name を編集し、値をアプリケーション名 (例: my-app-name) に変更します。
  5. ターミナルを使用して、以下の操作を行います。
    1. リポジトリーのクローンに含まれる starter-kit/server-app ディレクトリーにナビゲートします。
    2. npm install を使用して依存関係をインストールします。
    3. サーバー・アプリケーションをローカルで起動するか、IBM Cloud にデプロイします。
      • ローカルで実行する場合:
        1. npm start を使用してアプリケーションを起動します。
        2. サーバーには http://localhost:3000 でアクセスできます。
      • IBM Cloud にデプロイする場合:
        1. IBM Cloud CLI を使用して、ibmcloud login で IBM Cloud アカウントにログインします。
        2. ibmcloud target --cf を使用して、ターゲットとする Cloud Foundry の組織とスペースを設定します。
        3. ibmcloud app push を使用してアプリを IBM Cloud にプッシュします。
        4. サーバーには、manifest.yml ファイル内で指定された name を使用した URL (例: https://my-app-name.bluemix.net) でアクセスできます。

5. モバイル・アプリケーションを実行する

以下の手順に従って、モバイル・アプリケーションを実行します (Xcode iOS シミュレーターを使用)。

  1. リポジトリーのクローンに含まれる starter-kit/mobile-app ディレクトリーにナビゲートします。
  2. starter-kit/mobile-app ディレクトリー内にある .env.example ファイルをコピーして、.env という名前の新しいファイルを作成します。
  3. 新しく作成した .env ファイルを編集します。
    • STARTER_KIT_SERVER_URL を、前のステップで起動したサーバー・アプリの URL で更新します。
    • HERE_APIKEY を、HERE Developer ポータル内で生成した API 鍵で更新します。
  4. ターミナルを使用して、以下の操作を行います。
    1. starter-kit/mobile-app ディレクトリーにナビゲートします。
    2. npm install を使用して依存関係をインストールします。
    3. cd ios を実行して、カレント・ディレクトリーを ios ディレクトリーに変更します。
    4. pod install を使用して依存関係をインストールします。
    5. cd ../ を実行して、カレント・ディレクトリーを mobile-app ディレクトリーに戻します。
    6. npm run ios を実行して、シミュレーター内でアプリを起動します。iOS 13.0 以降で実行してください。
    7. 初めてシミュレーターを起動するときは、必ず「Features (機能)」メニューで「Location (ロケーション)」を設定してください。

シミュレーター内でアプリケーションが実行中になったら、以下のさまざまな画面にナビゲートできます。

ホーム画面 寄付画面 検索画面 チャット画面 地図画面 1 地図画面 2

まとめ

お疲れさまでした!コミュニティーで必要としている重要なリソースを入手できるよう、リソースを提供できるサプライヤーを特定するために使用できる Call for Code ソリューションを構築しました。これで、さまざまな方法で生活に有意義な違いをもたらすチャットボットとデータベースを IBM Cloud 内で作成できるようになったはずです。サンプル・コードに変更を加えて、コミュニティー向けの新しいソリューションを作成することや、このチュートリアルを基に新しいアプリケーションを構築することができます。

謝辞: このスターター・キットとチュートリアルの開発には、次の IBM 社員も貢献してくれました: Omer Arad、Robert Loredo、Debbie Kestin Schildkraut、John Swanson、Bruce Weed