このページでは、Google Chat 用アプリの作成に使用される一般的なサービス アーキテクチャ アプローチについて説明します。Google Chat に統合する既存のアプリがある場合は、既存の実装を使用または適応させることができます。新しい Chat 用アプリを構築する場合は、このページで同様の情報をさまざまな方法で提示し、ユースケースに適したアーキテクチャを選択できるようにします。
- 概要表をご覧ください。
- 各アーキテクチャ スタイルの概要をご覧ください。
- Chat 用アプリのロジックの概要をご覧ください。
- Chat 用アプリの会話パターン別の概要をご覧ください。
機能の概要
次の表に、Chat 用アプリの主な機能と機能、推奨される(
)サービス アーキテクチャ スタイルを示します。場合によっては、これらの機能を使用して別のアーキテクチャ スタイルを開発することもできますが、他のスタイル( )ほどユースケースに適していないことがあります。特長と機能 |
ウェブサービスまたは HTTP サービス |
Pub/Sub |
Webhook |
Apps Script |
AppSheet |
Dialogflow |
スクリプト |
---|---|---|---|---|---|---|---|
対象読者 |
|||||||
あなたのチーム |
|||||||
あなたの組織 |
|||||||
一般ユーザー |
|||||||
ユーザー操作 |
|||||||
自然言語処理を使用する |
|||||||
メッセージング パターン |
|||||||
同期メッセージの送受信 |
|||||||
同期メッセージの送受信、非同期メッセージの送信 |
|||||||
非同期メッセージのみを送信する |
|||||||
外部システムから単一の Chat スペースにメッセージを送信する |
|||||||
他のサービスやシステムにアクセスする |
|||||||
他の Google サービスとの統合 |
|||||||
ファイアウォールの内側で通信する |
|||||||
Chat イベントのクエリまたは登録 |
|||||||
コーディングとデプロイのスタイル |
|||||||
コードなしの開発 |
|||||||
ローコードでの開発 |
|||||||
任意のプログラミング言語での開発 |
|||||||
簡素化された DevOps |
|||||||
DevOps と CI/CD の完全な管理 |
サービス アーキテクチャ スタイル
このセクションでは、Chat 用アプリの作成に使用される一般的なアーキテクチャ アプローチについて説明します。
ウェブサービスまたは HTTP サービス
ウェブまたは HTTP サービスは、デベロッパーが公開 Chat 用アプリを構築するうえで最も柔軟性が高いため、最も一般的にデプロイされるアーキテクチャです。このアーキテクチャは、次のユースケースにおすすめします。
- Chat 用アプリが Google Workspace Marketplace で一般公開されている。
- Chat 用アプリは、同期メッセージの送受信、非同期メッセージの送信、外部システムからのメッセージの送信など、すべてのメッセージ パターンを送受信できます。
- Chat 用アプリは任意のプログラミング言語で開発されます。
- Chat 用アプリには、DevOps と CI/CD の完全な管理が必要です。
- Chat 用アプリサービスは、クラウドまたはオンプレミスのサーバーに実装されます。
この設計では、次の図に示すように、HTTP を使用してリモート サービスと統合するように Chat を構成します。
上の図では、HTTP Chat 用アプリを操作するユーザーは、次のような情報の流れになります。
- ユーザーが Chat スペースで Chat 用アプリにメッセージを送信します。
- HTTP リクエストは、Chat 用アプリのロジックを含むクラウド システムまたはオンプレミス システムのいずれかのウェブサーバーに送信されます。
- 必要に応じて、Chat 用アプリのロジックは、プロジェクト管理システムやチケット発行ツールなどの外部のサードパーティ サービスとやり取りできます。
- ウェブサーバーは、HTTP レスポンスを Chat の Chat 用アプリ サービスに返します。
- レスポンスがユーザーに返されます。
- 必要に応じて、Chat 用アプリは Chat API を呼び出して、メッセージを非同期的に投稿したり、他のオペレーションを実行したりできます。
このアーキテクチャでは、さまざまなプログラミング言語を使用して Chat 用アプリを設計できるため、システムにすでに存在する既存のライブラリやコンポーネントを柔軟に使用できます。このアーキテクチャを実装する方法はいくつかあります。Google Cloud では、Cloud Functions、Cloud Run、App Engine を使用できます。開始するには、Google Chat 用アプリを作成するをご覧ください。
Pub/Sub
Chat 用アプリがファイアウォールの内側に実装されている場合、Chat はアプリに HTTP 呼び出しを行うことができません。1 つの方法は、Pub/Sub を使用して、Chat アプリの実装が Chat からのメッセージを伝送するトピックをサブスクライブできるようにすることです。Pub/Sub は、メッセージを生成するサービスを、それらのメッセージを処理するサービスと切り離す、非同期メッセージング サービスです。このアーキテクチャは、次のユースケースにおすすめします。
- Chat 用アプリはファイアウォールの内側に構築されています。
- Chat 用アプリが Chat スペースに関するイベントを受信します。
- Chat アプリが組織にデプロイされている。
- Chat 用アプリは、同期メッセージを送受信でき、非同期メッセージを送信できます。
- Chat 用アプリは任意のプログラミング言語で開発されます。
- Chat 用アプリには、DevOps と CI/CD の完全な管理が必要です。
次の図は、Pub/Sub で構築された Chat 用アプリのアーキテクチャを示しています。
上の図では、Pub/Sub Chat アプリを操作するユーザーの情報フローは次のようになります。
ユーザーが Chat で Chat アプリにメッセージを送信する(ダイレクト メッセージまたは Chat スペース)、または Chat アプリがアクティブなサブスクリプションを持っている Chat スペースでイベントが発生する。
Chat はメッセージを Pub/Sub トピックに送信します。
アプリケーション サーバー(Chat 用アプリのロジックを含むクラウド システムまたはオンプレミス システム)は、ファイアウォール経由でメッセージを受信するために Pub/Sub トピックをサブスクライブします。
必要に応じて、Chat 用アプリは Chat API を呼び出して、メッセージを非同期的に投稿したり、他のオペレーションを実行したりできます。
使用を開始するには、Chat 用アプリのエンドポイントとして Pub/Sub を使用するをご覧ください。
Webhook
Chat Webhook URL への呼び出しを使用すると、特定の Chat スペースにのみメッセージを送信できる Chat 用アプリを作成できます。このアーキテクチャは、次のユースケースにおすすめです。
- Chat 用アプリがチームにデプロイされます。
- Chat 用アプリは、外部システムから単一の Chat スペースにメッセージを送信します。
このアーキテクチャでは、次の図に示すように、Chat 用アプリは特定の Chat スペースに限定され、ユーザーの操作は許可されません。
上の図では、Chat 用アプリの情報フローは次のようになっています。
- Chat 用アプリのロジックは、プロジェクト管理システムやチケット発行ツールなどの外部のサードパーティ サービスから情報を受け取ります。
- Chat 用アプリのロジックは、Webhook URL を使用して特定の Chat スペースにメッセージを送信できるクラウド システムまたはオンプレミス システムでホストされます。
- ユーザーは特定の Chat スペースで Chat 用アプリからメッセージを受信できますが、Chat 用アプリとやり取りすることはできません。
このタイプの Chat 用アプリは、他の Chat スペースや他のチームと共有することはできません。また、Google Workspace Marketplace に公開することもできません。Chat 用アプリでアラートやステータスを報告する場合や、一部のタイプの Chat 用アプリのプロトタイピングには、着信ウェブフックをおすすめします。
使用を開始するには、Webhook を使用して Chat にメッセージを送信するをご覧ください。
Apps Script
Chat 用アプリのロジックはすべて JavaScript で作成できます。Google Apps Script は、Chat 用アプリのローコード開発プラットフォームです。Apps Script は、ユーザー認証用の承認フローと OAuth 2.0 トークンを処理します。Apps Script を使用して一般公開の Chat 用アプリを構築できますが、1 日の割り当てと上限があるため、おすすめしません。
このアーキテクチャは、次のユースケースにおすすめです。
- Chat 用アプリがチームまたは組織にデプロイされている。
- Chat 用アプリは、同期メッセージの送受信、非同期メッセージの送信、外部システムからのメッセージの送信など、すべてのメッセージ パターンを送受信できます。
- Chat アプリには、DevOps 管理の簡素化が必要です。
このアーキテクチャは、次の図に示すように、Google スプレッドシート、Google スライド、Google カレンダー、Google ドライブ、Google マップ、YouTube などの他の Google Workspace サービスや Google サービスとも統合する Chat 用アプリに役立ちます。
上の図では、Apps Script Chat 用アプリを操作するユーザーに対して、次のような情報の流れが発生します。
- ユーザーが、ダイレクト メッセージまたは Chat スペースで Chat 用アプリにメッセージを送信します。
- Google Cloud にある Apps Script で実装された Chat 用アプリのロジックがメッセージを受信します。
- 必要に応じて、Chat 用アプリのロジックを Google Workspace サービス(カレンダーやスプレッドシートなど)や、Google サービス(Google マップや YouTube など)と統合できます。
- Chat 用アプリのロジックは、Chat の Chat 用アプリ サービスに応答を返します。
- レスポンスがユーザーに返されます。
開始するには、Apps Script を使用して Chat 用アプリを作成するをご覧ください。
AppSheet
AppSheet を使用すると、コードなしでドメイン共有の Chat 用アプリを作成できます。自動構成モードと次のテンプレートを使用して一般的な Chat 用アプリのアクションを構築することで、開発プロセスを簡素化できます。ただし、AppSheet ウェブアプリの一部の機能は Chat 用アプリでは利用できません。
このアーキテクチャは、次のユースケースにおすすめです。
- Chat 用アプリがユーザーとチームにデプロイされている。
- Chat 用アプリは、同期メッセージを送受信でき、非同期メッセージを送信できます。
- Chat アプリには、DevOps 管理の簡素化が必要です。
次の図は、AppSheet で構築された Chat 用アプリのアーキテクチャを示しています。
上の図では、AppSheet Chat アプリを操作するユーザーの情報フローは次のようになります。
- ユーザーが Chat で、ダイレクト メッセージまたは Chat スペースで Chat 用アプリにメッセージを送信します。
- Google Cloud にある AppSheet で実装された Chat 用アプリのロジックがメッセージを受信します。
- 必要に応じて、Chat 用アプリのロジックを Apps Script や Google スプレッドシートなどの Google Workspace サービスと統合できます。
- Chat 用アプリのロジックは、Chat の Chat 用アプリ サービスに応答を返します。
- レスポンスがユーザーに返されます。
まず、AppSheet を使用して Chat 用アプリを構築するをご覧ください。
Dialogflow
Dialogflow(自動会話と動的レスポンスのための自然言語プラットフォーム)を使用して Chat 用アプリを作成できます。このアーキテクチャは、次のユースケースにおすすめです。
- Chat 用アプリは、同期メッセージを送受信できます。
- Chat 用アプリは、自然言語処理を使用してユーザーに応答し、ユーザーとやり取りします。
次の図は、Dialogflow で構築された Chat 用アプリのアーキテクチャを示しています。
上の図では、Dialogflow Chat アプリを操作するユーザーは、次のような情報の流れになります。
- ユーザーが Chat で、ダイレクト メッセージまたは Chat スペースで Chat 用アプリにメッセージを送信します。
- Google Cloud にある Dialogflow 仮想エージェントがメッセージを受信して処理し、レスポンスを生成します。
- 必要に応じて、Dialogflow Webhook を使用して、Dialogflow エージェントはプロジェクト管理システムやチケット発行ツールなどの外部のサードパーティ サービスとやり取りできます。
- Dialogflow エージェントは、Chat の Chat 用アプリ サービスにレスポンスを返します。
- 回答が Chat スペースに配信されます。
開始するには、Dialogflow Google Chat アプリを構築するをご覧ください。
コマンドライン アプリケーションまたはスクリプト
ユーザーが Chat で Chat 用アプリを直接呼び出したり、返信したりすることなく、Chat にメッセージを送信したり、スペースの作成やスペースのメンバーの管理などの他のオペレーションを実行したりするコマンドライン アプリケーションまたはスクリプトを作成できます。このアーキテクチャは、次のユースケースにおすすめします。
- Chat 用アプリは任意のプログラミング言語で開発されます。
- Chat 用アプリは非同期メッセージのみを送信できます。
次の図にアーキテクチャを示します。
上の図では、Chat 用アプリの情報フローは次のようになっています。
- Chat 用アプリは Chat API を呼び出して、メッセージを送信したり、別のオペレーションを実行したりします。
- Chat はリクエストされたオペレーションを実行します。
- 必要に応じて、Chat 用アプリは CLI に確認メッセージを出力します。
チャットアプリのロジックの実装
Chat では、Chat 用アプリのロジックの実装方法に制約はありません。固定構文コマンド パーサーを作成したり、高度な AI と言語処理のライブラリやサービスを使用したり、イベントをサブスクライブして応答したり、特定の目標に合ったその他の処理を行うことができます。
ユーザー操作を処理する
チャットアプリは、さまざまな方法でユーザーとやり取りできます。ユーザー操作とは、ユーザーが Chat 用アプリを呼び出したり、操作したりするために行うアクションのことです。
コマンド パーサー
コマンド駆動型 Chat 用アプリは、Chat 用アプリのインタラクション イベントのペイロードを調べ、このコンテンツからコマンドとパラメータを抽出します。たとえば、Google Chat アプリのコマンドに応答するをご覧ください。
別の方法として、メッセージをトークン化し、コマンドを抽出してから、コマンドを各コマンドのハンドラ関数にマッピングする辞書を参照する方法があります。
ダイアログベースのユーザー インターフェース
ダイアログ ベースのアプリは、Chat 用アプリのインタラクション イベントに応答して、カードベースのダイアログを表示します。ユーザーは、フォームへの入力やアクションのリクエストなど、このダイアログで Chat 用アプリを操作できます。
ユーザーがダイアログでアクションを実行するたびに、新しいインタラクション イベントが Chat 用アプリに送信されます。アプリは、ダイアログを更新するかメッセージを送信することで応答できます。
自然言語処理
多くの Chat 用アプリの実装では、自然言語処理(NLP)を使用してユーザーの要求を判断します。NLP を実装する方法は多数あり、ご希望の方法で実装できます。
Dialogflow ES または Dialogflow CX Chat 統合を使用して、Chat 用アプリの実装で NLP を使用できます。これにより、自動会話と動的な応答のためのバーチャル エージェントを作成できます。
Chat にリクエストを積極的に発行する
チャットアプリは、Chat でのユーザーの直接的な操作によってトリガーされないメッセージやその他のリクエストを Chat に送信することもできます。これらの Chat 用アプリは、サードパーティ製アプリやユーザーからのコマンドライン呼び出しなどによってトリガーできますが、ユーザーは Chat でこれらの Chat 用アプリを直接操作することはできません。
インタラクティブでない Chat 用アプリは、Chat API を使用してメッセージやその他のタイプのリクエストを Chat に送信します。
会話パターン
Chat 用アプリがユーザーとどのようにやり取りするかを検討する必要があります。以降のセクションでは、Chat 用アプリが実装する可能性のある会話パターンについて説明します。
コール アンド レスポンス(同期)
同期呼び出しとレスポンスのパターンでは、Chat 用アプリはユーザーからのメッセージに 1 対 1 で応答します。次の図に示すように、ユーザーから Chat 用アプリに 1 つのメッセージが送信されると、Chat 用アプリから 1 つのレスポンスが返されます。
上の図では、Chat 用アプリを操作するユーザーの情報フローは次のようになっています。
- ユーザーが Chat 用アプリに同期メッセージを送信します(例: 「次の会議は何?」)。
- Chat 用アプリは、ユーザーに同期メッセージ(「シルバ先生、2 時 30 分」など)を送信します。
このタイプの会話パターンでは、ウェブ サービス、Pub/Sub、Apps Script、AppSheet、Dialogflow を使用して Chat 用アプリのアーキテクチャを実装できます。
複数のレスポンス(非同期)
複数のレスポンス パターンには、同期メッセージと非同期メッセージを含めることができます。このパターンは、次の図に示すように、ユーザーと Chat 用アプリ間の双方向通信を特徴としており、Chat 用アプリは任意の数の追加メッセージを生成します。
上の図では、Chat 用アプリを操作するユーザーの情報フローは次のようになっています。
- ユーザーが Chat 用アプリに同期メッセージ(「トラフィックをモニタリングする」など)を送信します。
- Chat 用アプリは、リクエストを承認する同期メッセージ(「モニタリング オン」など)をユーザーに送信します。
- その後、Chat 用アプリは REST API を呼び出して、1 つ以上の非同期メッセージ(「新しいトラフィック」など)をユーザーに送信します。
- ユーザーが Chat 用アプリに追加の同期メッセージ(「Ignore traffic」など)を送信します。
- Chat 用アプリは、リクエストを確認する同期メッセージ(「モニタリング オフ」など)をユーザーに送信します。
このタイプの会話パターンでは、ウェブ サービス、Pub/Sub、Apps Script、AppSheet を使用して Chat 用アプリのアーキテクチャを実装できます。
イベントのクエリまたはサブスクライブ(非同期)
非同期イベント駆動型パターンでは、Chat アプリは Chat API をクエリするか、Google Workspace Events API を使用して Chat スペースまたはユーザーへのサブスクリプションを作成することで、イベントを受信します。イベントは、新しいメッセージが投稿されたときやユーザーがスペースに参加したときなど、Chat リソースに対する変更を表します。イベント駆動型 Chat 用アプリは、イベント ペイロードを調べて変更された Chat リソースに関するデータを取得し、それに応じて応答します。
Chat 用アプリは、スペース、メンバーシップ、メッセージ、リアクションに関するイベントなど、さまざまな種類のイベントを受信できます。Chat 用アプリが Chat API のクエリまたはアクティブなサブスクリプションを通じてイベントを受信すると、Chat 用アプリは必要に応じて任意の数の非同期レスポンスを生成し、Chat API を使用して Chat に送信できます。
このタイプのロジックを使用すると、チケット管理システムなどの外部システムを更新したり、Chat スペースに非同期でメッセージを送信したりできます。たとえば、新しいユーザーが Chat スペースに参加したときにウェルカム メッセージを送信できます。
次の図は、イベント ドリブン型の会話パターンの例を示しています。
上の図では、Chat と Chat 用アプリ間のやり取りは次の情報フローになっています。
- Chat 用アプリが Google Chat スペースをサブスクライブします。
- Chat 用アプリがサブスクライブしているスペースが変更された。
- Chat 用アプリは、Pub/Sub のトピックにイベントを配信します。トピックは、サブスクリプションの通知エンドポイントとして機能します。このイベントには、リソースで変更された内容に関するデータが含まれます。
- Chat 用アプリは、イベントを含む Pub/Sub メッセージを処理し、必要に応じてアクションを実行します。
このタイプの会話パターンでは、Pub/Sub、ウェブサービス、Apps Script を使用して Chat 用アプリのアーキテクチャを実装できます。
イベントの受信と応答について詳しくは、Google Chat イベントのイベントを操作するをご覧ください。
Chat 用アプリからの一方向メッセージ
Chat 用アプリからの一方向メッセージ パターンを使用すると、Chat 用アプリは Chat スペースに非同期メッセージを送信できますが、ユーザーは Chat 用アプリと直接やり取りできません。このパターンは会話型でもインタラクティブでもありませんが、次の図に示すように、アラーム レポートなどの用途に役立ちます。
上の図では、Chat 用アプリと同じスペースにいるユーザーに次の情報フローがあります。
- Chat アプリは、Chat API を呼び出すか、Webhook URL に投稿して、ユーザーに非同期メッセージ(「キュー オーバーフロー アラート」など)を送信します。
- 必要に応じて、Chat 用アプリは追加の非同期メッセージを送信します。
このタイプの会話パターンでは、ウェブサービス、Webhook、Apps Script、AppSheet、コマンドライン アプリケーション、スクリプトを使用して Chat 用アプリのアーキテクチャを実装できます。
Chat 用アプリへの一方向のメッセージ
Chat 用アプリへの一方向メッセージ パターンを使用すると、Chat 用アプリがリクエストを処理しながら、Chat 用アプリが応答することなく、ユーザーが Chat 用アプリにメッセージを送信できます。このアーキテクチャは技術的には可能ですが、ユーザー エクスペリエンスが低下するため、このパターンは強くおすすめしません。
関連トピック
- Google Chat 用アプリを作成する
- Chat 用アプリのエンドポイントとして Pub/Sub を使用する
- 着信 Webhook を使用して Chat にメッセージを送信する
- Apps Script を使用して Chat 用アプリを作成する
- AppSheet を使用して自動化機能から Chat メッセージを送信する
- Dialogflow ES Chat の統合
- Dialogflow CX Chat 統合。