最近、NCMBを使ってユーザ同士がコミュニケーションできる仕組みを構築したいというニーズが出てきています。メッセージングアプリだけでなく、ゲームやフリマ、フォーラムアプリなど、多くのアプリでフォロー/フォロワーの仕組みが利用されます。
今回はコミュニケーション機能の基盤になるであろう、フォロー/フォロワー機能の実装を真剣に検討してみたので、その実装について解説します。まず初回となる今回は、データストアのスキーマについて解説します。 ※本編ではMonacaにて実装を行いますが、今回の記事の内容は言語を問いません。
利用するクラスについて
今回利用するクラスは全部で3つです。
クラス名 | 役割 |
---|---|
User | 認証用 |
Profile | 一般公開情報。フォロー、フォロワー数の合計も入ります。 |
Follow | フォロー、フォロワーに関する情報が入ります。 |
アクセス権限について
クラスに対するアクセス権限は次のようになっています。
- User
閲覧、更新ともに本人のみ - Profile
閲覧は誰でも可能。更新は本人、またはAdminグループのユーザのみ - Follow
閲覧は誰でも可能。更新は本人、またはAdminグループのユーザのみ
注意したこと
Userクラスにはメールアドレスが入るので、誰でも読み込み可能とするのは本番アプリでは良くありません。簡易的なデモや、企業内での利用など限られた利用者の中では問題ありませんが、広く一般公開されたアプリであればUserクラスは公開しない方が良いでしょう。
そこでProfileクラスを用意し、そこに公開用情報を入れています。また、Profileクラスにはフォロー、フォロワー数の合計数も入れています。毎回全データを取得するとデータ量が多くなるため、一覧表示ではProfileだけ表示すれば良い状態としています。
Followクラスは実際のフォロー、フォロワーのobjectIdが入ります。これはProfileのobjectIdになります。Followクラスも自分のデータは更新できますが、他のユーザの情報は修正できません。そこでフォローを行った際には、NCMBのスクリプト機能を通じてフォローされたユーザの情報を変更します。
初期データの作成
新規登録した際にはProfile/Followクラスに対してデータを作成します。つまりUser - Profile - Followはそれぞれ1対1対1の関係性になっています。
まとめ
今回のフォロー/フォロワー機能は、様々なアプリで利用できる機能になるでしょう。次回以降、複数のSDKで実装する例を解説していきます。