Slide 1

Slide 1 text

グリーライフスタイル株式会社 ソフトウェアエンジニア 樋口雅拓 メディアアプリLIMIAにおける プッシュ通知配信システム

Slide 2

Slide 2 text

● グリーグループのグリーライフスタイル株式会社で、LIMIA という住ま い領域のメディアを作っています。ゲーム会社ですが、最近はメディア に力を入れています。 ● LIMIAではインフラ、サーバ、Web、RecSysを経てAndroidを担当してい ます。6歳の娘のパパ。twitter: @mahiguch1 ● 技術書典7からサークル参加しています。 • https://limia.jp/ • https://arine.jp/ • https://aumo.jp/ • https://www.mine-3m.com/mine/ 2 Masahiro Higuchi/樋口雅拓

Slide 3

Slide 3 text

新宿拠点に勤務し ています。最大190 名収容可能な勉強 会スペースがあり ます。オフライン で集まれるように なったら、社内外 の勉強会を開催し たいと思っていま す。 松屋自販機もあり ます! 最高すぎる勉強会スペースと松屋自販機 3

Slide 4

Slide 4 text

グリーグループ公式部活動と して技術書典部を立ち上げ、 合同誌を作って頒布しました。 17:20から技術書典部の活動 紹介を行います。 企業部活動として技術書典7/8/9にサークル参加

Slide 5

Slide 5 text

5 背景と目的 何故システム内製化したのか 5

Slide 6

Slide 6 text

LIMIAとは? ● メディアサービス ● Android, iOS, Web ● 記事一覧を表示し、タップす ると記事詳細を閲覧できる。 ● 記事一覧はパーソナライズ。 ● 記事詳細読了後に関連記事を 出している。 ● 分析基盤はBigQuery

Slide 7

Slide 7 text

● 起動経路で最も多かったのは、プッシュ通知か らの起動。 ● 以前は人手で良さそうな記事を送信していた。 分析して特徴を見つけ、自動で最適な記事を送信 することで起動数増加を目指す! LIMIAサービスの特徴

Slide 8

Slide 8 text

8 どうやって最適なプッシュ通知を見つけるか 以下のPDCAを高速回転させる。 ● 仮説立案 ● オフライン検証 ● オンライン検証 ● 自動入稿対応 ここからは各項目について説明していきます。 8

Slide 9

Slide 9 text

9 仮説立案 9

Slide 10

Slide 10 text

目標はLTV - CPI > 0の状態を保つこと。 ブレストを行い、LTVに繋がりそうな仮説を立てた。 ● ユーザの興味に合わせた記事を配信すると起動率が上がる ● 読了率が高い記事を配信すると起動率が上がる ● ユーザが普段使っている時刻に配信すると起動率が上がる ● 配信回数を減らすとアンインストールが減る ● 配信回数を増やすと起動数が増える 仮説一覧

Slide 11

Slide 11 text

11 11 ⓘ Start presenting to display the poll results on this slide. 仮説の中で最も効果が高かったものは、どれでしょう?

Slide 12

Slide 12 text

12 オフライン検証 12

Slide 13

Slide 13 text

これまでの配信実績がBigQueryに蓄積されている。 これを使って、もし仮説の配信を行ったらどうなるかをシミュレ ーションする。 効果がありそうなら、オンライン検証へ進める。 なさそうなら、ここで終了。 効果が高そうな仮説を絞り込む! 13 オフライン検証方法

Slide 14

Slide 14 text

● ユーザが直近見た30記事のカテゴリを調べ、 最も多かったものをユーザの興味セグメン トとした。 ● 興味セグメント毎に起動率(=起動数/ユーザ 数)を集計。 ● 配信した記事のカテゴリと興味関心が一致/ 不一致で起動率を比較 ● 一致していたケースでは不一致に比べて、 20%起動率が高かった。採択。 オフライン検証(採択事例) ユーザの興味に合わせた記事を配信すると起動率が上がる

Slide 15

Slide 15 text

● 15日前から2日前のログからアプリ起動時刻を調べ、時刻毎のユーザ セグメントを作成。 ● 1日前のログから「その時刻のみに送信」と「全時刻に送信」を比較。 ● 対象時刻のみだと、起動数が40%減少。アンインストールが減って もカバーしきれない減少幅だったため、棄却。 オフライン検証(棄却事例) ユーザが普段使っている時刻に配信すると起動率が上がりアンインストール減少

Slide 16

Slide 16 text

16 オンライン検証 16

Slide 17

Slide 17 text

オフライン検証で効果が見込めるものをABテストした。 2週間を1ラウンドとし、ラウンド毎に異なる仮説を検証した。 30ラウンドあたりで収束したので、検証を終了した。 その結果、以下のパターンが最もLTVが高かった。 ● 一斉送信は1日5回 ● そのうち4回は興味関心と一致した記事 ● 記事は直近2週間の読了率が高かったもの この結果は当時のLIMIAユーザに対する最適値なので注意! そのまま使っても上手くいかない可能性が高い。 参考にするなら結果ではなくプロセスを。 オンライン検証 ABテスト

Slide 18

Slide 18 text

18 自動入稿対応 18

Slide 19

Slide 19 text

興味関心に合わせた記事を配信しようとすると、興味セグメント毎に配 信記事を選ぶ必要がある。興味セグメントを10個にした場合、10倍の記 事を選ばなければならない。人手では10倍のコストがかかってしまうた め、抽出作業を自動化した。 ● 配信枠に自動で3件づつ入稿 ● それを人が確認し、最適なものを選ぶ。 完全自動化すると、季節外れの記事(イベント終了後にイベント記事な ど)を送ってしまう可能性があるため、人手でのチェックを残した。 運用改善: 配信記事抽出自動化 ここからは少しシステムの話です

Slide 20

Slide 20 text

20 システム構成 20

Slide 21

Slide 21 text

バッチが毎分起動して、送信時刻になる と原稿と対象ユーザをSQSに送る。送信 バッチはSQSにqueueがあると、それ をFCMに対して送信する。 システム構成(配信)

Slide 22

Slide 22 text

入稿ツールでは、次の4つの画面を 作った。 ● 通知: 配信時刻 ● 条件: どの原稿を誰に送るか ● 原稿: 通知送信内容 ● コンテンツ: 遷移先コンテンツ 条件を設定すれば、ABテストや特 定のユーザへの配信が可能。原稿 を工夫することで複雑な通知を送 信可能。 入稿ツール

Slide 23

Slide 23 text

条件を満たした記事をBigQueryで集計。バッチで結果 を読んで、MySQLに書き込む。当時の基準は、以下の もの。 ● CTRが高い ● 読了率が高い ● 記事の長さが一定以上 システム構成(自動入稿)

Slide 24

Slide 24 text

● ユーザの興味に一致したコンテンツを配信することで、起動数が 10%から20%増加した。 ● 入稿作業の属人性排除と工数削減ができた 改善結果

Slide 25

Slide 25 text

● 自由に仮説を立て検証するためにプッシュ通知配信システムを内製 化した ● その結果、運用コストを下げるとともにCTRを改善する事ができた。 ● 機械学習的手法を取り入れて改善継続中 Ask The Speakerは、D会場です。 まとめ 25

Slide 26

Slide 26 text

26