この記事はコインチェック株式会社のアドベントカレンダー2日目(シリーズ2)の記事です。
コインチェック株式会社のカレンダー | Advent Calendar 2024 - Qiita
はじめに
販売所事業部 バックエンドGの渡邊です。
今回、Coincheckの販売所で取り扱っているビットコインをはじめとした通貨に価格変動があったときにユーザーに向けてプッシュ通知するという作業の大部分を自動化したことと人的コストを削減した話について、前編と後編に分けてお話しします。
価格変動のプッシュ通知
Coincheckのアプリをインストールしているとこのようなプッシュ通知が届くことがあります。
この通知は、Coincheckの販売所で取り扱っている通貨に対し、24時間前の価格と比較してある程度大きく変動があった場合に変動率と価格をお知らせするものです。
ユーザーが価格変動情報を早く知ることで暗号資産売買のきっかけを提供するという狙いでマーケティング担当によって運用されています。
しかし、実は最近までこの通知送信は担当者がほぼ全て手作業で行なっていました。
この運用には4つの課題点がありました。
①担当者が価格変動を監視しなければならない
これまではシステムによって5分毎に、通貨別に設定されたしきい値を超える価格変動があるとSlackへ通知する仕組みになっていました。
この仕組みではプッシュ通知すべきタイミングに通知されるのではなく、価格変動を検知した全てのタイミングで通知されるので、担当者はプッシュ通知すべきタイミングを見計らってSlackに通知された価格変動の数値を見るという能動的な作業をする必要があるのです。
この作業は営業日であれば特に問題はないのですが、非営業日だと担当者が必ずしもSlackを常に見ているわけではないため、プッシュ通知の機会を逃してしまうことがありました。
②プッシュ通知の送信のためにPCで作業しなければならない
Coincheckのプッシュ通知はFirebaseによって送信していますが、PC端末でFirebaseの管理画面にログインしてプッシュ通知イベントを作成するようにしていました。
こちらも非営業日で担当者が外出して手元にPCがないといった場合に、プッシュ通知を送信することができません。
③準備に時間がかかり通知が届くまでにタイムラグが生じる
送信内容はSlack通知された価格変動の数値をコピペしており手作業が発生する上、ダブルチェックをする必要があるので時間がかかってしまいます。
これにより、プッシュ通知を送信したかったタイミングの価格変動情報と比べて、ユーザーが受信した内容は鮮度が落ちている可能性が大きくなります。
④負荷分散のために複数回に分けてプッシュ通知を送信している
プッシュ通知を一気に全Coincheckユーザーに対して送信してしまうと、そのプッシュ通知からアプリを開きCoincheckへのアクセスが集中的に増加してしまう懸念があります。これを回避するために、プッシュ通知をするときに数回に分けて送信するという作業をしており、1回の送信実行で終えることができていませんでした。
価格PUSH通知botの作成
これらの課題を解決するために、バックエンドGでは価格PUSH通知botを作成しました!
価格PUSH通知botは次のような特徴があります。
-
プッシュ通知を送信すべきタイミングのときだけSlack通知される
-
(補足)9時から22時の間に最低6時間の間隔を設け、1日最大3回までの頻度としています。
-
-
同時に複数の通貨の価格変動を検知した場合は、あらかじめ決めたプッシュ通知すべき通貨の優先順位によって最大2件分の通知内容を作成する
-
Slack通知に含まれるPUSH送信実行ボタンを押すとFirebaseによってプッシュ通知が送信される
つまり、これまでの課題を解決し、
担当者が行うのはSlack通知を受け取ったらアクションするという受動的な作業となり、
プッシュ通知の内容も自動作成されるので、ダブルチェックが必須ではなくなり、
Firebaseの操作なくプッシュ通知送信までSlackだけで完結できるので、プッシュ通知の送信実行までの時間が短縮され、また、スマートフォンだけでも作業することができるようになりました。
この価格PUSH通知botによって担当者の作業コストが大きく削減され、また、非営業日の運用ハードルも大きく下がりました。
もしかしたら最近アプリから価格変動のプッシュ通知がよく来ると感じているユーザーもいるかもしれませんが、それは価格PUSH通知botが完成したからだと思います。
おわりに
本記事では価格変動のプッシュ通知の運用の問題点と価格PUSH通知botによって解決したことをざっくりとお話してきましたが、明日公開する後編ではどのように価格PUSH通知botを実装したかをお話したいと思いますので、引き続きお読みいただけると嬉しいです。