DEV Community

Cover image for BizOps Workspaceでユーザーとチャンネルを管理する方法

BizOps Workspaceでユーザーとチャンネルを管理する方法

このハウツー記事は、BizOps Workspaceと総称されるPubNubのデータ管理機能について説明する一連の記事の一部です:

BizOps Workspaceは、アプリケーションの管理を支援するツールのセットです。 この記事では、コードを変更することなく、ユーザーとチャネルに関するApp Contextメタデータと、それらの間の "メンバーシップ "関係を管理できる"ユーザー管理"と "チャネル管理"の機能について見ていきます。 この記事では、App Contextとは何か、それがユーザー管理とチャネル管理にどのように関係するかを説明し、BizOps Workspaceがソリューションの管理にどのように役立つかを理解するのに役立ついくつかのインタラクティブな例を提供します。

アプリコンテキストとは?

アプリ・コンテキスト(以前はオブジェクトとして知られていた)により、次のことが可能になります:

  • アプリケーション内のユーザーとチャネル、およびそれらの間の関係に意味を与えます。
  • すべてのエンティティのメタデータをサーバーに保存し、クライアントにグローバルな真実のソースを簡単に提供できます。 ユーザーは人間を表す必要はなく、代わりにユーザーオブジェクト内にデバイスのステータスを保存するのが一般的です。
  • オブジェクトの値が変更されると、即座にリアルタイムのイベントを受け取ることができる。

どんなアプリケーションでも App Context を使うことができますが、特にChat Solutions を作成する開発者に人気があります。

App Context 自体は新しいものではないので、すでに使い慣れている場合は、'User Management' と 'Channel Management' が提供するものについて説明する次のセクションに進んでください。

App Context はユーザと チャンネルに推奨されるフィールドと、それらの間のメンバーシップに推奨されるフィールドを提供します。 これらのフィールドのほとんどはオプションですが、典型的なチャットアプリケーションで App Context をどのように使うか見てみましょう。

ユーザーアプリコンテキスト

新しいユーザーがあなたのアプリケーションに登録されると、おそらく外部のIDプロバイダを介して、PubNubに対してそのユーザーを一意に識別する何らかの方法があるでしょう。 これは、ユーザーのクライアントがPubNub SDKを初期化するために使用するユーザーIDです。 PubNubユーザーIDは、同じユーザーを識別するためにソリューションの他の場所で使用するIDと同じではないかもしれないので、'外部ID'フィールドでそれを追跡することをお勧めします。

ユーザー名、電子メール、およびプロファイルURLは説明する必要はありませんが、App Context内にこれらを保持する利点は、ユーザーがこれらのフィールドのいずれかを変更した場合、当社のすべてのSDKでサポートされているApp Contextイベントを使用して、すべてのリスニングクライアントに変更をスケールで伝播できることを意味します。

チャネルApp Context

PubNubはユーザがチャンネルを購読または公開するたびに自動的にチャンネルを作成しますが、チャンネルはおそらくアプリケーションにとって意味のあるものを表します。たとえば、チャットアプリでは、通信にチャンネルを使用するグループチャットがあるかもしれませんし、ライブイベントではポールを管理するために専用のチャンネルを使用するかもしれません。

チャネルにApp Contextを指定すると、そのチャネルに関連する任意のメタデータが保存・更新され、その更新はオプションですべての関係クライアントに伝搬されます。 チャネルに名前を付けるかもしれません。たとえば、'ユーザAとユーザBのチャット'などです。また、おそらくチャネルはドキュメントの保存に関連しており、カスタムの'URI'フィールドで追跡できるかもしれません。

メンバーシップアプリコンテキスト

ユーザとチャネルの両方にApp Contextを定義したので、ユーザがチャネルの'メンバ'であるかどうかを指定することで、2つの関係を定義することができる。

ユーザがチャネルに参加すると、同じチャネルの他のメンバに関するアップデートを受け取ることができる。ユーザが「参加」または「退会」したときや、そのユーザのApp Contextが更新されたとき(例えば、名前を更新したとき)に通知される。

これは、特にチャットアプリの開発者にとっては、多くの価値を提供する非常に強力なメカニズムです。 App Contextを使用しない場合、すべてのユーザーを自分で追跡し、そのユーザーがどのチャネルのメンバーであるかを追跡し、そのユーザーが参加または退会したときに同じチャネルの他の全員に通知する必要があります。 この課題は直線的にスケールしないため、ソリューションのユーザーが増えれば増えるほど、この情報をすべて一元管理しようとするのは難しくなります。

App Contextを使用することで、チャットクライアントは内部状態を維持するために必要なすべての情報を提供され、PubNubAccess Managerでそのデータを完全に制御して不正アクセスを防ぐことができます。

ユーザー管理とチャンネル管理とは何ですか?

ユーザ管理」と「チャネル管理」は、PubNub管理ポータルを通じてサーバ上のアプリケーションのApp Contextデータを変更する方法を提供します。 たとえば、ユーザ名やチャネルの説明を変更したり、不要になったユーザを削除したりすることができます。

以前は、アプリケーションのApp Contextを更新したい人は、必要な変更を行うために弊社のSDKのいずれかを使用する専用のフロントエンドを開発する必要がありました。 これらの新しい管理機能を使用すると、新しい開発なしでApp Contextデータを更新できます。

ユーザーまたはチャンネル管理を使用するには、以下が必要です:

  • キーセットでApp Contextを有効にする

  • アプリケーションで App Context を使用し、ユーザーやチャンネルに関するメタデータや、それらのエンティティ間のメンバーシップを保存すること。 どの SDK を使用してもかまいませんが、新しいチャットアプリを作成する Typescript 開発者には、弊社のChat SDKをお勧めします。

  • 詳細はBizOps Workspace のドキュメントを参照してください。

ユーザー管理

ユーザー管理ペインでは以下のことができます:

  • ユーザーの作成と削除

  • ユーザーのフィルタリングと検索

  • ユーザーに関連付けられているメタデータの作成または更新

  • ユーザのチャネルメンバーシップを作成または更新する。

たとえば、システムでアクティブでなくなったユーザを削除したり、ユーザを個別にプロビジョニングすることなく、テスト目的で新しいユーザを作成したりできます。

アプリコンテキストを提供したユーザは、ユーザ管理ビューに表示されます。チャットSDKを使用している場合、このSDKは裏でアプリコンテキストを処理します。 例えば、チャットSDKの'createUser()' メソッドは、JavaScriptのsetUUIDMetadataを呼び出します。 チャットSDK以外のSDKを使用している場合、アプリコンテキストデータを変更するための専用APIが提供されます。JavaScriptのAPIについては既に述べましたが、JavaSwiftKotlinPythonUnityなど、私たちのすべてのAPIに相当するものがあります。

User Managementのドキュメントページでは、User Managementの使い方を説明します。必要であれば、新しいユーザーのメンバーシップを作成すること(Assign to Channels)を忘れないでください。

チャンネル管理

チャネル管理ペインはユーザ管理ペインと似ていて、チャネルを作成または削除したり、チャネルに関連するメタデータを更新したり、チャネルのメンバーであるユーザを更新したりすることができます。

たとえば、アクティブでなくなったチャネルを削除したり、新しいチャネルを作成して、本番データに触れることなく環境の新機能をテストしたりできます。

App Context を提供したチャネルは、チャネル管理ビューに表示されます。チャット SDK を使用している場合、アプリコンテキストは舞台裏で処理されます。 例えば、'チャネルを作成' メソッドのファミリは、JavaScript のsetChannelMetadata()setMembershipsを呼び出します。 チャット SDK 以外の SDK を使用している場合、App Context データを変更するための専用 API が提供されます。

Channel Managementのドキュメントページでは、Channel Managementの使い方を説明します。必要であれば、新しいチャネルのメンバーシップを作成すること(Assign Users)を忘れないでください。

インタラクティブなデモ ユーザーとチャンネル管理

ユーザ管理とチャネル管理を理解するには、それを使ったり、デモを見たりする方がずっと簡単なので、インタラクティブなデモアプリを作成しました。

アプリケーションのコードはPubNubDevelopersのGitHubアカウントで見ることができますし、https://pubnubdevelopers.github.io/App-Context-Exerciser/、アプリのホストされたバージョンを見ることができますPubNub.comでこの記事を見ている場合は、以下のiFrame内に埋め込まれたアプリも見ることができます。

埋め込みコンテンツがこのページで利用できない場合は、https://pubnubdevelopers.github.io/App-Context-Exerciser/

インタラクティブデモのセットアップ

このデモはあなたのキーセットに新しいユーザーを作成し、あなたのキーセットで見つけたチャンネルに参加します。このため、このデモで遊ぶときは新しいキーセットを作成することを強くお勧めします。

  1. 管理ポータルから新しいPubNubキーセットを作成します。

  2. このキーセットでApp Contextを有効にする。

  3. このキーセットでUserChannelMembership Metadata Eventsを有効にする。 これらはキー設定ページのApp Contextセクションにあるオプションです。 これらを有効にしないと、アプリにアップデートが反映されません。

  4. 他のすべてのキー設定オプションはデフォルトのままにしておきます。

  5. 最初のステップで生成したパブリッシュ・キーとサブスクライブ・キーをメモしておきます。

  6. 適切なテキストボックスに公開キーと購読キーを入力し、'Save'を押す。

インタラクティブ・デモの使用

公開キーと購読キーをデモに入力すると、デモは以下のような動作をします:

  • キーセットで自身を表すユーザを作成する。

  • キーセットで利用可能なユーザーとチャンネルを検索します。 チャンネルが見つからない場合は、テストチャンネルとユーザーを作成します。

  • 対話型デモを代表するユーザーは、見つかったすべてのチャンネルに参加し、それらのチャンネルと関連するユーザーのアップデートを受信できるようにする。 これが非常に寛容に感じられる場合は、本番環境では、不正アクセスを防止するAccess Managerがキーセットで有効になっていることを思い出してほしい。

  • 次に、PubNub管理ポータルのBizOpsワークスペースにある「ユーザ管理」と「チャネル管理」機能に切り替えます。

  • ユーザー管理]画面と[チャネル管理]画面には、それぞれデフォルトのユーザーとチャネルが作成されているはずです。

  • Users、Channels、およびMembershipsのApp Contextを更新します。 更新内容がデモアプリに反映されるはずです。

  • 必要であれば、'Refresh Data'ボタンを使ってApp Contextから最新のアップデートを取得します。この作業が必要なのは、テストアプリケーションのユーザとメンバーシップを共有していないユーザやチャネルを作成した場合のみです。

上のスクリーンショットは、ユーザuser_1のApp Contextを更新し、特にnameとemailフィールドを更新し、いくつかのカスタムデータを追加しています。

上のスクリーンショットは、チャネルtest_channel3 の App Conext を更新しています。

上のスクリーンショットはtestchannel_3からすべてのユーザを削除し、チャンネルにメンバがいなくなったことを示しています。 Memberships'ビューにメンバが存在しないことに注意してください。

PubNub Chat SDKを使用した例

ユーザ管理とチャネル管理はどのようなSDKやユースケースでも動作しますが、チャットアプリを作成する開発者には特に便利です。 開発者にはTypescriptを使用してチャットSDKをターゲットにしたグリーンフィールドのチャットアプリケーションを作成することを推奨しているため、このセクションではこれらの管理機能をそのSDKで使用する例を示します。

前述したように、Chat SDK は App Context を使用してこれらのユーザーとチャネルの関係を保存します。

自分でこれらの手順を実行する場合、バックエンドで行った更新を確認するためにチャットアプリケーションをリフレッシュする必要があります。 これはアプリケーションの制限であり、チャットSDKの制限ではありません。

サンプルのチャットアプリを使用してチャンネルデータを管理するには、チャンネル名を変更し、ブラウザを更新した後にアプリの上部に表示される更新された名前を見ることができます。

User データを管理するには、userData構造体にマイナーな変更を加える必要があります。そうしないと、アプリをリロードするたびに、変更内容が書き換えられてしまいます。

そうしないと、アプリを再読み込みするたびに変更が書き換わります。例えば、'User Management'で変更できるようにしたい設定をコメントアウトしてください:

data: { name: "Mary Watson" /* custom: { initials: "MW", avatar: "#ffab91" }*/ },
Enter fullscreen mode Exit fullscreen mode

会員数の更新は、サンプルのチャットアプリを使用して表示するには少しトリッキーですが、私が思いつく最も簡単なアプローチは、各メッセージが送信されるときに現在の会員数を出力するようにhandleSend()関数を変更することです。

handleSend()関数を以下のように変更します:

const members = await channel.getMembers()
await channel.sendText(text + "... channel members total: " + members.total)
Enter fullscreen mode Exit fullscreen mode

上のスクリーンショットには簡単な説明が必要です。

  1. MembershipsのApp Contextデータを変更せずにメッセージを送信。 この結果、チャンネル・メンバーが2人いるというメッセージが表示される。

  2. チャンネルからメンバーの1人を削除。

  3. 別のメッセージを送信し、今度はチャネルのメンバーが1人しかいないことを確認する。

  4. ステップ2を繰り返すと、それ以降のメッセージはチャンネル・メンバーが0人と表示される。

待てよ...。チャネルのメンバーじゃないのに、どうしてまだメッセージを受信しているんだろう? これはよくある質問で、ドキュメントに記載されているように、connect()を呼び出してメッセージを受信するようにサブスクライブする必要があります。これは、チャネル作成APIによって確立されたメンバーシップとは別のもので、BizOps Workspaceは後者のみに関係しています。

概要

BizOps Workspaceは、ユーザとチャネルのメタデータを簡単に管理する機能を提供します。

この記事では新しいアプリケーションの作成に焦点を当てましたが、BizOps Workspaceは既存のアプリケーションを使用している開発者にとっても同様に有用です。 あなたのアプリケーションがApp Contextを使用するように書かれていれば、コードを変更することなく、この記事で説明した機能を利用することができます。

ユーザー管理とチャンネル管理はどのPubNub SDKでも動作します。それでも、チャットSDKを使用している開発者は、App ContextがチャットSDKの基本アーキテクチャに組み込まれているため、採用へのパスが容易になります。 チャットSDKを使用する場合、ユーザー管理とチャネル管理は "単に動作します"。

ヘルプやサポートが必要な場合は、お気軽に専任のサポートチームにご連絡いただくか、開発者リレーションズチーム(devrel@pubnub.com)にメールしてください。

PubNubはどのようにお役に立ちますか?

この記事はPubNub.comに掲載されたものです。

私たちのプラットフォームは、開発者がWebアプリ、モバイルアプリ、およびIoTデバイスのためのリアルタイムのインタラクティブ性を構築、配信、管理するのに役立ちます。

私たちのプラットフォームの基盤は、業界最大かつ最もスケーラブルなリアルタイムエッジメッセージングネットワークです。世界15か所以上で8億人の月間アクティブユーザーをサポートし、99.999%の信頼性を誇るため、停電や同時実行数の制限、トラフィックの急増による遅延の問題を心配する必要はありません。

PubNubを体験

ライブツアーをチェックして、5分以内にすべてのPubNub搭載アプリの背後にある本質的な概念を理解する

セットアップ

PubNubアカウントにサインアップすると、PubNubキーに無料ですぐにアクセスできます。

始める

PubNubのドキュメントは、ユースケースやSDKに関係なく、あなたを立ち上げ、実行することができます。

Top comments (0)