Amazon Web Services ブログ

Amazon Chime SDK for Messagingを使ってアプリケーションにチャット機能を組み込む方法

概要

2019年の発表以来、Amazon Chime SDKのお客様からアプリケーションにメッセージング機能が必要であるという要望が多く寄せられてきました。テレヘルス(遠隔医療)のお客様は、ケアプロバイダーと患者間のリアルタイムおよび非同期のコミュニケーションを可能にしたいと考えています。ライブイベントの主催者は参加者がビデオストリームを見ながらメッセージングでリアルタイムにコンテンツについて議論したいと考えています。バーチャルな展示会を開催するサービスでは、メッセージングを使って会議の参加者とバーチャルなブースにいる専門家を結びつけたいと考えています。
そこで、私たちはAmazon Chime SDKにメッセージング機能を組み込みました。Amazon Chime SDKのメッセージングは、単なる基本的なチャット以上のものになるように設計されています。チャットのユースケースをお持ちのお客様は、チャネルを通じてユーザーのコミュニティをつなぐ体験を作ることができます。お客様は1人から数人のメンバーを含むシナリオ用のチャネルを作成したり、最大10万人のメンバーを含むチャネルを作成したりすることができます。また、Amazon Chime SDK for Messagingを使用して、複数のユーザーが同時にアプリケーションを表示・更新できるリアルタイムコラボレーション機能を構築し、各ユーザーの表示間で一貫した状態を維持することができます。現在、モバイルワーカー支援サービスを提供するPlayerLync社のようなお客様が職場での学習やコラボレーションを可能にするためにメッセージングを利用しています。

PlayerLync社のChief Technology OfficerであるGreg Menard氏は次のように話をいただいています。「PlayerLync社はStarbucks社、Crocs社、Southern Company Gas社などのお客様に、トレーニング、学習、コラボレーションをより効率的に行うためのオールインワンソリューションを提供しています。Amazon Chime SDKを選んだのは、既存のサービスに新規のコミュニケーション機能を追加するにあたり、既存のユーザーエクスペリエンスの中で、機能追加をコントロールすることが可能だったからです。また、AWSのセキュリティとスケーラビリティを提供し、使い慣れたAWSのサービスと統合して機能を追加できる点も気に入っています。音声とビデオの追加は簡単で、完璧に動作しています。このSDKの新しいメッセージング機能により、お客様にブロードキャストメッセージを提供して、関連するトピックを従業員全員に知らせたり、1対1のダイレクトメッセージを送っりすることができます。Amazon Chime SDKは、メッセージングデータとユーザーのアクセスを細かく制御できるので、お客様の厳しい法規制の要求に応えることができます。」
Amazon Chime SDKのメッセージングは、3つの主要コンポーネントで構成されています。まず、Amazon Chime SDK for Javascriptは、クライアント側でWebsocket接続を維持します。次に、AWS SDKには、クライアントサイドとサーバーサイドの両方からのメッセージングAPIが含まれています。最後に、React UIコンポーネントがオプションで用意されており、アプリケーションに一般的なチャット機能を簡単に追加することができます。


Amazon Chime SDK チャットデモアプリケーションの紹介

Amazon Chime SDKでメッセージングを開始する最も簡単な方法は、チャットデモアプリケーションをデプロイすることです。 以下の手順で、Amazon Chime SDKチャットデモアプリケーションをデプロイし、ユーザーを作成し、最新のチャットメッセージングアプリケーションを使用したことのある人なら誰でも知っているインターフェイスを通して、ユーザーがチャットチャネルでコミュニケーションする方法を体験できます。 このアプリケーションは、独自のアプリケーションのベースとして使用できるように、またはAmazon Chime SDKの機能を自分でメッセージングするための簡単な方法として使用できるように設計されています。

前提条件:

このウォークスルーでは、次の前提条件を想定しています。

デモアプリケーションアーキテクチャ

下図はAmazon Chime SDK for messagingで構築したチャットデモアプリケーションのアーキテクチャを説明しています。

注: サービスを利用開始すると、AWSアカウントに課金されますのでご注意ください。

  1. Amazon Chime AppInstanceは、すべてのメッセージのデータプレーンとして機能します。
  2. AWS CloudFormationテンプレートは、Amazon Cognito認証後のLambda関数を使用する認証レイヤーをセットアップするために使用されます。また、このテンプレートはデモアプリケーションでユーザーがアップロードした添付ファイルを保存するためのAmazon S3バケットを設定します。
  3. チャットのデモアプリケーションがデプロイされ、テスト目的でローカルに起動することができます。このアプリケーションはReactフレームワークを使用して構築されており、AWS Amplify JavaScriptライブラリを使用してAmazon S3に添付ファイルを保存し、Amazon Cognitoで認証を行い、Amazon Chime SDK Client Libraryを使用してメッセージング機能を利用しています。

この図はAmazon Chime SDKのAPIがクライアントサイドのアプリケーションからどのように呼び出されるかを示しています。Amazon Chime SDKで開発されたアプリケーションの認証、認可、メッセージングのライフサイクル、添付ファイの取り扱いなどが含まれています。

チャットデモアプリケーションのデプロイメント

このセクションではAWS アカウントで Amazon Chime SDK for messaging デモアプリケーションをセットアップする方法を記載します。
大まかなステップは以下の通りです:

  1. 利用可能なAWS CloudFormationテンプレートを使用して、Amazon Cognitoを使用したチャットユーザー用のセキュアなユーザーディレクトリ、チャット用のAmazon Chimeアプリインスタンス、および添付ファイル用のAmazon S3バケットをセットアップします。
  2. Amazon Chimeチャットのデモアプリをローカルにデプロイします。
  3. デモアプリケーションの機能をテストします。

Step 1. Amazon Cognitoを使用してチャットユーザー用のセキュアなユーザーディレクトリと、添付ファイル用のAmazon S3バケットをセットアップする

  1. プライマリアカウントでAWSマネジメントコンソールにサインインします。us-east-1(N.バージニア)リージョンに切り替えます。注:このセクションのAWS CloudFormationテンプレートは、US east (N. Virginia) Regionで起動する必要があります。
  2. 下のLaunch Stackの画像をクリックして、AWSアカウントでAmazon Chime SDKのチャットデモアプリに必要なインフラをセットアップするCloudformationテンプレートを起動します。
  3. Launch Stack
  4. Create Stack ページでNextをクリックします。
  5. Specify Detailsページで、以下の情報を入力します:
    DemoName – 「ChimeSDKMessagingDemo」のような、Amazon Cognitoリソース用のユニークなデモ名
  6. Configure stack optionsページでNextを選択します。
  7. Review ページで、I acknowledge that AWS CloudFormation may create IAM resources チェックボックスをチェックします。次にCreateをクリックします。
  8. スタックを作成すると、5つの出力( cognitoAppClientId, attachmentsS3BucketName, cognitoIdentityPoolId, appInstanceArn, cognitoUserPoolId)が生成されます。これらの値は、次のステップでのデモ・アプリの構成のためにメモしてください。

Step 2. Amazon Chime SDKチャットデモアプリをローカルにデプロイする

このセクションでは、React フレームワークで書かれたシンプルな Web アプリをローカル環境にデプロイします。このアプリは、Amazon Chime メッセージング SDK の機能をデモンストレーションします。ローカルでアプリをセットアップしたら、すぐに始めることができます。

  1. GitHubからプロジェクトをCloneします。
    git clone https://github.com/aws-samples/amazon-chime-sdk.git
  2. 下記コマンドでAmazon Chime SDKのチャットデモのルートフォルダまで移動
    cd ./amazon-chime-sdk/apps/chat
  3. 下記コマンドでコンポーネントライブラリのすべての依存関係をインストールします。
    npm install
  4. src/Config.js をテキストエディタで開き、次の設定を行います。
    const appConfig = {
    cognitoUserPoolId: '<COGNITO USER POOL ID FROM STEP 1>',
    cognitoAppClientId: '<COGNITO APP CLIENT ID FROM STEP 1>',
    cognitoIdentityPoolId: '<COGNITO IDENTITY POOL ID FROM STEP 1>',
    appInstanceArn: '<COGNITO APP INSTANCE ARN FROM STEP 1>',
    region: 'us-east-1',
    attachments_s3_bucket_name: '<S3 BUCKET NAME FROM STEP 1>'
    };
    export default appConfig;
  5. アプリケーションの設定を行った後、 demo/chat フォルダで次のコマンドを実行し、ローカルのfront-end serverをセットアップします。
    npm start
  6. ブラウザを開き、 https://localhost:9000 からテストを始めます。

Step 3: デモアプリケーションの機能をテストします。

このセクションでは、デモアプリケーションの機能をウォークスルーします。
ユーザー登録
ホームページで、チャットアプリケーションユーザーの登録オプションがあります。
ユーザー確認
ユーザー登録の際、Step2で設定したセキュアなAmazon Cognitoディレクトリにユーザーが作成されます。しかし、このユーザーは登録後未確認の状態です。ユーザーを確認するために、管理者は自分のAmazon Cognitoディレクトリ(CognitoAuthenticator)にログインします。管理者はユーザー名をクリックして、Confirm User を選択することで、ユーザーを確認します



注:Amazon Cognitoでは、複数のメカニズムを使ってユーザー確認を自動化することができます。詳細はドキュメントを確認ください。

ユーザーがAmazon Cognitoで確認されると、チャットアプリケーションにログインし、その機能を使い始めることができます。
その他機能
このデモアプリでは特定の会話のためのチャンネルを作成し、そこにメンバーを追加することもできます。これらのチャンネルは、パブリック(非メンバーがメッセージを読み、自分をメンバーとして追加できる)またはプライベート(メンバーのみがメッセージを読み、送信できる)とすることができます。また、プライベートチャンネルには、モデレーターのみが新規メンバーを追加できる「制限付き」と、現在のメンバーがメンバーを追加できる「無制限」があります。チャンネルのモデレーターは、チャンネルの詳細を編集したり、メンバーを管理したり、チャンネルを削除したりすることができます。チャンネルが作成されると、メンバーはそのチャンネルでメッセージを送信、編集、削除することができます。これらのメッセージはプレーンテキストでも添付ファイルでも構いません。このデモでは添付ファイルはステップ2でAWSアカウントに作成したAmazon S3バケットに安全に保存されます。添付ファイルのサイズは最大5MBまでです。
注:ここでは、添付ファイルにAmazon S3を使用していますが、Amazon Chime SDKでは、他のストレージも選択いただけます。

クリーンアップ

チャットデモアプリケーションの使用料請求を止める場合は、Step 2で作成したスタックとリソースを削除しクリーンアップする必要があります。
スタックとそのリソースを削除するには:

  1. Step 2で使用したリージョンのAWS CloudFormationコンソールから、作成したスタックを選択します。
  2. Delete Stackをクリックします。
  3. 表示される確認メッセージで、Yes, Deleteをクリックします。この段階でDELETE_IN_PROGRESSにステータスが変わります。スタックの作成を監視したのと同じように、Eventsタブを使って削除を監視します。AWS CloudFormationがスタックの削除を完了すると、リストからスタックが削除されます。

最後に、CLIで以下のコマンドを使って、Step 1で作成したAmazon Chimeアプリのインスタンスを削除します。
aws chime delete-app-instance --app-instance-arn <ARN FROM STEP 1>

結論

Amazon Chime SDK for messagingを使えば、お客様のアプリケーションに独自のメッセージング機能を簡単に構築し、カスタマイズすることができます。複雑なバックエンドインフラストラクチャを管理するための労力を心配する必要はありません。このブログ記事では、Amazon Chime SDKのメッセージング機能とその使用方法、そしてチャットアプリケーションを素早く立ち上げる方法について学びました。
Amazon Chime SDKのメッセージング機能は、米国東部(北バージニア)リージョンで本日より低価格のメッセージ毎の課金方式でご利用いただけます。Amazon Chime SDKのメッセージング機能を使い始めるには、開発者ガイドをご覧ください。

著者

Court Schuett

Court Schuett

Court is a Chime Specialist SA. He is passionate about helping customers design and build complex systems with AWS services. In his free time, he enjoys reading and learning about history, hiking, and curling.

Sagar Khasnis

Sagar Khasnis

Sagar Khasnis is a Senior Solutions Architect focusing on AWS Productivity Apps. He is passionate about building innovative solutions using AWS services to help customers achieve their business objectives. In his free time, you can find him reading biographies, hiking, working out at a fitness studio, and geeking out on his personal rig at home.


 

AWS Media & Entertainment 参考コンテンツ

AWSのメディアチームの問い合わせ先: awsmedia@amazon.co.jp

※毎月のメルマガをはじめました。最新のニュースやイベント情報を発信していきます。購読希望は上記宛先にご連絡ください。

 

翻訳は BD山口、SA小林が担当しました。原文はこちらをご覧ください。