2021年11月10日・11日の2日間にわたり、LINEのオンライン技術カンファレンス「LINE DEVELOPER DAY 2021」が開催されました。特別連載企画「DEVDAY21 +Interview 」では、登壇者たちに発表内容をさらに深堀り、発表では触れられなかった関連の内容や裏話などについてインタビューします。今回の対象セッションは「プッシュ通知到達率100%を目指して - データ解析で得られた知見」です。
LINE公式アカウントは、企業・店舗とユーザーの接点を送出するサービスであり、LINEのトークと同じようにお客さまと直接コミュニケーションできるほか、クーポンやショップカードの機能も利用できます。
このLINE公式アカウントにおいて、プッシュ通知が届かない、あるいは表示されるまでに時間がかかるといった問題がユーザーから指摘されていましたが、LINE社内でのテストでは再現することができませんでした。そこで開発チームは、現状の把握と課題解決に向けた取り組みを始めます。その取り組みの内容について、 LINE B2Bアプリ開発チームの庄司久人が語りました。

現状を把握するためにドッグフーディングとログ解析をスタート
――まず、今回の取り組みが始まった経緯を伺わせてください。
庄司:アプリ開発チームでは、定期的にApp StoreやGoogle Playのレビューコメントや、お客さまからのお問い合わせ内容を確認しているほか、企画側のメンバーと共同でユーザーインタビューを行っています。
そうした取り組みの中で、LINE公式アカウントのアプリにおいて、iOSとAndroidの双方で「アプリの通知が届かない」、あるいは「通知が遅れる」といった指摘を継続的に受けていました。
当然、アプリ開発中には開発者がテストを行っているほか、アプリをリリースする前にはQA部隊で動作確認を実施しています。ただ、こうした社内のテストや検証では問題が再現しない状況が続いていたのです。
そこでまずドッグフーディングを行い、通知が発生するのかどうかを改めて確認することにしたほか、我々のチームでログを収集し、そのデータを解析することにしました。そもそも手元の端末では再現しない問題だったため、本当に通知が届かないのかをデータで確認することが必要だと考えたためです。
ドッグフーディングを始めたのは2020年8月頃で、11~12月にはログ収集もスタートしました。ちょうど全社横断のログ基盤整備のプロジェクトが進行していたので、先行ベータのアプリとして手を挙げ、新しい基盤を使ってログを収集することにしました。
――そのログ収集で苦労したことはありましたか。
庄司: 2021年の11月頃からログ収集を開始したのですが、当初iOSアプリでのログ収集について、我々のアプリ開発チームにはアプリがバックグラウンドのときにログを収集する方法のアイデアがありませんでした。
一般のユーザーの方々が利用するLINEアプリの開発チームと、通知の不達や遅延について情報交換を行ったとき、どうやってログを収集すべきか悩んでいると相談したんです。それにより、「NotificationServiceExtension」でチャットの添付画像を通知に表示すればログを収集できるのではないかと教えてもらうことができて、無事にiOSアプリでもログを収集することができました。
またちょうどその頃、Data Engineeringの組織でログ基盤の整備のプロジェクトが進行していると聞き、そのプロジェクトを一緒にやらせて欲しいと手を挙げました。そして、先行ベータのアプリとしてプロジェクトに参画させていただけることになりました。
ログ基盤の開発を進めていた Data Engineering1チームのインタビューはこちら
https://engineering.linecorp.com/ja/interview/big-data-platform-unification/

プッシュ通知の仕組みの一部がブラックボックス化している難しさ
――実際にログを取得し、それを分析した結果を見たときの印象を教えてもらえますか。
庄司:Android環境において1分以内にプッシュ通知の到達した割合を見ると、日本では96%でしたが台湾では94.05%、タイでは92.32%と数値が落ち込み、さらにインドネシアでは88.6%に留まっていました。このインドネシアの状況を見たときに、1分以内に通知が届かないケースが2割以上もあることにショックを受けました。
Androidと異なり、iOSではいずれの国でも98~99%の到達率でした。このように、iOSとAndroidで顕著な差が生じていたことも意外だったことの1つです。
AndroidとiOSで、なぜこのような差が生じているのかは正直なところ解明できていません。通知の送信には、AndroidであればGoogle、iOSはAppleの仕組みを利用することになり、その仕組みは我々からするとブラックボックスであり、すべてをつまびらかにすることはできないことが理由です。
――国ごとの違いが発生している理由については、どのように考えていますか。
庄司:データのみから原因を判断するのは難しいと感じていますが、国ごとに違いが生じている理由としては、ネットワーク環境の違いやユーザーが利用するデバイスの価格帯の違いなどが考えられます。ただ、実際に現地に行って調査を行う、あるいは現地のユーザーにヒアリングするなどといったことを組み合わせて判断する必要があるでしょう。
特にLINEのようにグローバルでサービスを展開している場合、日本で起きないことが海外では起こるといったことがあります。本来であれば現地に行って原因を調査したいのですが、コロナ禍の現状では難しいため、歯がゆい思いがあります。
――ログ解析で苦労したことはありますか。
庄司:ログ解析はiOSやAndroidのエンジニアが行いました。普段からログ解析を行っているメンバーではないため、ツールの使い方やログの集計方法などにおいて当初は戸惑う部分がありました。
またログ解析を行い、その結果を見ても、なぜそうした事象が発生しているのかといった理由までは分かりません。通知が遅れていることはログ解析によって分かりますが、じゃあなぜ遅れるのかはログ解析の結果をいくら見ても分からないわけです。そのため、データを見るだけでなく、自分たちもサービスを使うドッグフーディングなどの取り組みは重要だと感じています。
ソースコードを読むまで知らなかったAndroidの仕様
――今回の調査で判明したことで、驚いたものがあれば教えてください。
庄司:Androidの中に、該当アプリで一定数以上の通知がすでに表示されていると、それ以上の通知を抑止するというロジックが組み込まれていたことです。
エンジニアリングマネージャーになる前から、Androidエンジニアとして開発に携わってきましたが、Androidでは通知量に上限があることは知りませんでした。Android OSのソースコードで、該当部分を初めて読んだときは、こんな仕様があったのかと驚きましたね。
この仕様についてざっと調べたところ、Googleのドキュメントにも記述はなさそうで、この仕様に対して名前も付けられていないようです。また、日本語で書かれているドキュメントはまったく見当たらず、英語でもWebサイト上の掲示板で少し議論されている程度でした。特にLINE公式アカウントのように、通知量が多くなるアプリではクリティカルな問題になる可能性があるので注意が必要でしょう。

――トラブルシューティングのための機能をLINE公式アカウントのアプリに追加することも検討されているとのことですが、具体的にどのような機能でしょうか。
庄司:通知が届かないと言われる原因は、大きく2つあるのではないかと考えています。本当に通知が届かないパターンと、ユーザーの設定ミスで通知が表示されないパターンです。
そこで、アプリとサーバーに何らかの状態の不整合が起きていないか、通知の仕組みのいずれかが原因で通知が送られていないのではないかといったことを調べるための機能や、テスト通知を送信する機能を付け加えることを検討しています。
ユーザーの設定が影響して通知が表示されないパターンに対するケアとしては、ユーザーの方に設定を確認していただくユーザーインターフェイスを用意するといったことを検討しています。たとえば、通知に必要なある設定がオフになっている場合、それをオンに変えるようにガイドするといった形です。
ユーザーインタビューにより実際のユーザーの使い方を把握
――通知の未達および遅延の解消に向けた、今後の取り組みについて教えてください。
庄司:通知の未達問題については、まず実際にどの程度の未達が発生するのかを把握することが必要だと考えています。
実はサーバーから送信された通知のデータと、アプリに到達した通知のデータを突合し、到達率を算出してみたのですが、直感的に疑わしいと感じる結果が出てしまいました。そのため、データの集計方法などについて精査する必要があると感じていて、腰を据えてサーバー担当者と一緒にログの集計方法を確認しようと考えています。これによって正しい到達率を導き出し、実態を把握することから始めます。
さらに未達と遅延のいずれにおいても、ドッグフーディングを継続するほか、ユーザーインタビューを実施してユーザーの方々の使い方を把握したいと考えています。
ユーザーインタビューでは、具体的にどのような設定で利用しているのかをヒアリングするほか、設定画面のそれぞれの項目の意味をユーザーに正しく把握してもらえているかどうかもチェックしたいと思います。我々としては正しく作ったつもりでも、ユーザーの方が間違って理解している可能性もあるためです。また、先ほどお話ししたトラブルシューティングの機能が提供できれば、その使われ方のデータからも何らかのヒントが得られるかもしれないと期待しています。
このように、今後もLINE公式アカウントのユーザーの方々に満足していただけるように、問題解決に向けた取り組みを進めていきます。
採用情報
LINE株式会社では一緒に働くエンジニアを募集しています!
今回のインタビューと関連する募集ポジションはこちらです。