DMM オンラインサロン専用コミュニティ

OVERVIEW

オンラインサロン運営に特化したSNSを開発する

YEAR 2017 - 2019

DMM オンラインサロン専用コミュニティ(Web)
https://salon.dmm.com/

DMM オンラインサロン専用コミュニティ(アプリ)https://itunes.apple.com/jp/app/dmm-オンラインサロン/id1374134751


概要

オンラインサロン,つまりクローズドコミュニティとしてユーザに新たな居場所を提供するための,SNSプラットフォームを開発した。UI や機能は Slack・Facebook・Twitter などメジャーな SNS の影響を受けつつも本当に必要なものだけを残し,またそれらには無い独自の機能も取り入れている。

開発人員

途中で人員変更があったため,一番長く続いた期間のものを示す。

・プロダクトオーナー1名
・スクラムマスター1名
・Webデザイナー1名
・Webエンジニア3名(自分)
・インフラエンジニア1名

構成および自分の担当範囲

・React

React 15(現在16)でSPAとして開発。 Recompose を使用。
Redux + Redux Saga もふんだんに使用しているため,Moducks も採用した。
Laravel Echo で流れてきたブロードキャストイベントを Redux アクションとしてリアルタイムで拾える。

設計およびコーディングの30%程度を担当。

・React Native

Web で作ったものを iOS アプリとしても提供するために使用。最初はコンポーネントの使い回しをしようと考えていたが,限界を感じたためDRYを諦めて作り直した。

ナビゲーションライブラリとして React Navigation を採用,その他要件を満たすため Expo からeject した上で多数のネイティブライブラリを導入。

設計およびコーディングの30%程度を担当。

・Laravel

Laravel 5.4 (現在5.8)で開発。
本番環境は Amazon Elastic Beanstalk - Multi Container Docker。

Eloquent Model をエンティティとして利用しつつ,ビジネスロジックもそこに集約させるコンセプトで書いた。認証・認可・ルーティング・リレーション・通知など多岐に渡ってサービスプロバイダを継承し,抽象化やDRYが徹底できるようにカスタマイズしている。認証まわりの機能拡張に関してはプルリクエスト1件を laravel/framework リポジトリに提出し,既にマージされてリリースされている。

ページネーションには Lampager を利用している。Elasticsearch に限っては,Elasticsearch 6 以降に対応した Laravel アダプタが存在しないため,(公式の PHP SDK を使用する以外)ゼロからコードを書いて抽象化の仕組みを実装した。

テストカバレッジは80%~90%を維持している。

設計およびコーディングの90%以上を担当。

・Laravel Echo Server

・Aurora (MySQL)

・ElastiCache (Redis)

・Elasticsearch