#プロジェクト概要
人事評価と組織づくりをコンセプトとした新規事業
日々のやりとりと日報をチャットUIで行い、その内容を網羅的に相互に360度評価で人事評価と連携していくサービス。
#チーム情報
PdM/PjM、開発者として一部兼任(基本はコードレビューや設計メイン)。エンジニアその他3名。デザイナー1名。営業1名。
【どのような機能の開発・実装か】【課題・問題点】
1. チャットサービスを基本としてそこに人事評価システムを組み込むプロダクトであるため、基本的に大量のデータがやりとりされるDB負荷を事前想定する必要がありました。
2. 日々のやりとりをするチャットの場に日報や人事評価を組み込むため、必要条件として日々のやりとりが円滑に行える操作体験が重要でした。そのため、できる限りリアルタイムにチャットのやり取りできる必要もありました。
【打ち手】
1. について
将来的に大規模負荷に耐えられるように、既存のチャットサービスと同様の設計に移行できるようにSlackやLINE、ChatWork、TeamsなどのUIやアーキテクチャの調査を行いました。
将来的アーキテクチャの改修を考慮した上で、初期段階では要望に柔軟に対応できるようにRDBを中心としたアーキテクチャを設計しました。
チャットには検索のしやすさや投稿・返信といった情報の分離を両立させるためにSTIを中心に設計し、画像などはポリモーフィックを使いました。
また、UIの改修要望も多く発生しうることを想定し、Frontendだけで改修可能なGraphQLを採用して設計しました。
N+1問題についてはBatchLoaderや箇所に応じて独立したGetエンドポイントを作ることを想定して進めました。
2. について
すでにスマートフォンでチャットのやりとりをするのが一般的な時代かつ、想定する利用ユーザーについても営業職も含めていたため、Push通知による準リアルタイム通知の仕組みが必要でした。Webアプリでは継続なPush通知を実現出来ないことから、モバイルアプリの開発を想定し、できるだけ低コストで開発できるようにReactとReactNativeを使った技術を選定して進めました。
【使用した技術】
GCP、CloudRun, MySQL, RubyOnRails, Next.js, React Native, TypeScript