チャットページ表示速度を1/6にまで速めてUX改善 - 株式会社HANOWA様

チャットページ表示速度を1/6にまで速めてUX改善 - 株式会社HANOWA様

image
歯科医療人材のシェアリングプラットフォーム「
歯科医療人材のシェアリングプラットフォーム「HANOWA

1. 株式会社HANOWAについて

代表の新井翔平様
代表の新井翔平様

🏢  会社名

株式会社HANOWA

📅  設立年月日

2019年1月22日

🗒  経歴

2019年12月に自身のライフスタイルに合った働き方をしたい歯科衛生士らと、働き手が欲しい歯科医院をマッチングするHANOWAをリリース。

2021年4月30日プレシリーズAラウンドで総額6,000万円の資金調達を行った。

歯科医療人材をマッチングする「HANOWA」が総額6000万円を調達、ライフスタイルに合った働き方を支援

2. プロダクトについて

image

📅  リリースしてからの経過時間

1~2年

🔧  技術スタック

Nuxt.js/Rails/Firebase/AWS

👪  ユーザー数

1000 ~ 2000人

3. 対応したエンジニアについて

image

👨 お名前

栗山隆仁様

🔧  技術スタック

TypeScript/Node.js/React.js/Next.js/Vue.js

🗒  経験年数

10年

⭕️ 所属

フリーランス

4. 課題

改善前

HANOWAさんでは、歯科衛生士と歯科医院がメッセージをやりとりするためにチャット機能があります。

そのチャット機能では、RailsとFirestore両方に交互にリクエストを送っているためチャット一覧表示に遅延が発生していました。

5. 解決方法

改善後

キャッシュを利用し、一度読み込んだチャット一覧情報を保持して初期表示の速度を1/6まで速くしました。

6. 実際にかかったコスト

💰 トータル

20万円

📅  期間

1ヶ月

🕛 この応募の時間単価

4,000円

🔬 実際に行われた作業過程

🔍  調査1 - 問題の関数の特定

今回、loadPartners()という関数が原因で初期表示が遅くなっていました。そのためまずはこの関数の挙動を調査していただきました。

image

⚗ 検証1 - 1リクエストあたりの取得数を増やす❌

1ドキュメント1リクエストを1リクエストで複数のドキュメントを取得をしようとしましたが、ドキュメントにフィールドが一件も登録されていないと、ドキュメントは存在していないものとして扱われ、where/onSnapshot等で動的な取得ができないため断念しました。

image

⚗ 検証2 - RailsのAPIを使う ❌

api側でfirestoreとやりとりを行うことで、複数ドキュメント取得できるようにしようとしましたが、backendで利用するfirebase-adminでは使いたい関数を使えず断念しました。

image

⚗ 検証3 - ストリームを利用❌

CloudFirestoreとのやり取りを高速化するために公式からのレコメンドとしてストリームを利用するということがあった為検証しました。

image

📅 稼働スケジュール

2021/7/4

  1. ✉️  栗山さんの応募
  2. ⛏  作業開始

2021/7/5

  1. 💡 作業完了
  2. 💰 栗山さんが請求する

💬 HANOWA代表新井様からのコメント

代表の新井翔平様
代表の新井翔平様

栗山さんは、slackに入った直後に自らチームの皆さんにご挨拶をしてくれましたので、とても安心感がありました。 調査も細かく隙間なくやっていただけたので、納品物の結果にとても満足しました! 一番有難しかったというか、印象的だったのは、サーバーサイドのタスクをお願いした際、ご自身の得手不得手をはっきりと主張してくださったことです。不透明に苦手領域のタスクをダラダラとされるよりも、エンジニアの得意領域を対話を通じてしっかり伝えてくださればマネジメント側としては対策が立てられます。フルリモートで、明確な雇用の主従関係があるわけでもなく、テキストが主なコミュニケーション手法である場合、出来ること出来ないことを明確に宣言してくださるのは本当に助かります。そういった面でのコミュニケーション能力の高さ、管理されなくても主体的能動的に課題を観察して見つけ、改善にまで結びつける実行力にはとても助かりました。ISSUE単位のお仕事で期待値が正直そこまで高くなかった分、その見返りにはとても満足しています。ありがとうございました!

🔗 その他のページ

🏢  企業登録する

👨  エンジニア登録する

🗒  単価診断を受ける

💡 企業様向けご利用方法を見る