アプリを開発する際にmBaaSをどう組み合わせれば良いか、mBaaSデザインパターンとして考えてみたいと思います。今回は写真を友人とシェアし、コメントや反応を返せる写真共有アプリを考えてみたいと思います。
要件としては次のようになります。
- ユーザ登録機能をつける
- 友達をフォローできる機能をつける
- 友人がアップロードした写真を見られる一覧画面がある
- 写真をアップロードする。その際、コメントなどを書けるようにする
- 人の写真にコメントすることができる
ユーザ登録機能
これはmBaaSに用意されている会員機能がそのまま使えます。 会員機能はメールアドレスとパスワード、またはユーザIDとパスワードが選択できます。また、Twitter/Facebook/Google+といったソーシャルサービスからのログインもサポートされています。
ソーシャルサービスログインを使うと、写真をシェアしたり同時投稿するような機能にも使えますのでオススメです。
フォローする機能
フォロー機能はグループ機能を使って行います。そのため、ユーザ単位でグループも作成していく必要があります。フォローとフォロワー、2つのグループを作成するのが良いでしょう。そしてフォローしたタイミングでフォローグループにユーザを追加したり、フォローされたユーザのグループにも追加します。二つのグループを操作するのはデータの二重化という問題を生みますが、データの公開範囲を考える際には必要な操作と言えます。
アップロードした写真を一覧する画面
いわゆるタイムライン相当の画面になります。この画面を実現するためには、写真ごとにパーミッションを設定する必要があるでしょう。どのグループに対して写真を公開するか指定すれば良いので、プライベートな写真であれば自分だけ、友人だけであればフォロワーのグループ、一般公開であればパブリックに設定すればOKです。後は写真を検索すれば、mBaaS側で自動的にパーミッションを考慮した写真だけを返却してくれます。
写真のアップロード
写真はファイルストアにアップロードができます。サムネイルなどサイズの小さい画像が必要な場合は、クライアントサイドで生成してからアップロードする必要があるので注意してください。特に最近のスマートフォンで撮影した写真は数MB以上のものも多いので、一覧する際にそのまま使うのはお勧めされません。
mBaaSにはアップロードされた写真をHTTPSで取得する機能があります。写真自体は一般公開とし、そのURLをデータストアに入れておくのがお勧めです。写真のファイル名は全体でユニークになっていなければいけませんので、UUIDを生成するか、コメントをデータストアに保存したときのIDを使うと良さそうです。
写真にコメントする
写真のURLはデータストアに保存しておきます。そしてそのデータに対してコメントクラスを追加しましょう。mBaaSのデータストアにはポインタが保存でき、リレーションを組めるようになっています。各写真データごとのコメントを保存できます。リレーションを活用してください。
今回の想定では、
- データストア
- 写真に対するテキスト、誰がアップロードしたかと言ったメタデータの保存
- 写真に対するコメント
- 会員管理
- 会員登録
- フォロー/フォロワーの関係
- ファイルストア
- 写真データの保存
を使う想定で考えてみました。さらに発展させる場合としてはコメントやフォローがあった場合のプッシュ通知機能が考えられそうです。
ぜひmBaaSを使ってアプリを作ってみてください。