LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog

LINEの各サービスのマーケティング活動を支えるメッセージ配信ツール「OAMM」開発の裏側を探る

LINEグループで提供しているサービスを継続的・効率的に成長させる“Growth”開発に特化したグループ会社として、2018年6月に発足したのがLINE Growth Technologyです。

「Growth開発の裏側」シリーズでは、同社が開発したプロダクトに焦点を当て、LINEグループにおける“Growth開発”のおもしろさや課題、働くエンジニアの想い、やりがいなどを紹介しています。

第2回では、LINEグループの様々なサービスで使われているメッセージ配信ツールである「Official Account Marketing Manager」通称”OAMM”について、チームのマネージャーでサーバーサイドエンジニアのBaek Sangwoo、サーバーサイドエンジニアの藤本哲と村田浩司に話を聞きました。

Baek Sangwoo(画像左上):2015年にLINEに入社した後、2018年にLINE Growth Technologyにjoin。チームマネージャーとテックリーダーの2つの軸で、様々なプロジェクトに参画。現在は新しく組織された開発Gチームにおいて、モニタリングシステムをメインで担当する。

藤本哲(画像右上):2019年4月にLINE Growth Technologyに入社し、主にOAMMの開発に携わる。前職はシステムインテグレーターで、ネットワークシステムの構築などを担当していた。

村田浩司(画像中央下):システムインテグレーターで基幹システムの構築や改修などに携わった後、2020年4月にLINE Growth Technologyに入社し、OAMMの開発などを担当する。

OAMMを開発することになった理由

――まずOAMMは何のためのツールなのか教えてください。

藤本:OAMMはLINE公式アカウントを通じてメッセージを配信するためのシステムです。もともと、LINE公式アカウントを管理するためのツールとして社内外に提供されている「Official Account Manager」という別の公開ツールがあります。フォロー時のメッセージ設定やリッチメニューの設定に加え、メッセージ配信を行うこともできますが、メッセージ配信の際に選択できるターゲット条件は、ユーザの年齢・性別・住所の推定値などに限られています。

OAMMは、LINEグループ内のサービスのLINE公式アカウント管理者が利用できる社内限定のツールでして、マーケティングのためのメッセージ配信に特化したツールという位置付けです。メッセージを送るユーザーを特に詳細に設定できることが特長です。たとえばLINEショッピングであれば、「このブランドの商品を買ったことがある人」や「その購入回数」などといった条件でユーザーを絞り込んでメッセージを送信することができるなど、各サービスごとにカスタマイズされた条件でターゲティングができます。

――OAMMを開発することになった背景には、どのような理由があったのでしょうか。

藤本:Official Account Managerにもターゲティングの機能はあり、機械学習によってユーザーを性別や年齢層などで分類し、その結果を利用してメッセージを送信することは可能です。ただLINE社内には、もっと細かくユーザーを絞り込んでメッセージを送信したいといったニーズがありました。

このニーズを満たすため、従来はユーザーの購買履歴などが記録されたデータベースを用いてユーザーを絞り込んでいました。具体的には、まずメッセージを送信したいユーザーのIDを取得するクエリを作成し、データベースに対して実行します。これによって得られたIDをOfficial Account Managerに登録し、そのID宛にメッセージを送信するという流れです。

この作業を行うのは、多くの場合それぞれのサービスに所属しているデータサイエンティストです。ただクエリの作成やIDの取得、Official Account Managerへの登録といった作業は手間がかかり、データサイエンティストの本来の業務であるデータ分析のための時間を奪うことになりかねません。また企画してから実際にユーザーがメッセージを受け取るまでのタイムラグが大きいことも問題でした。こうした課題を解決するために、OAMMを開発することになりました。

Baek:また、OAMM上で、配信したメッセージの開封率などをチェックすることも可能です。これにより、データサイエンティストに依頼することなく、メッセージの配信から結果確認までが一貫して行えるようになり、次なるマーケティング施策を検討しやすくなったこともOAMMの成果であると考えています。

OAMMを開発する中での苦労

――OAMMの開発はどのように進められたのでしょうか。

Baek:もともとは当時のO2O事業のマーケティング担当者が利用するためのツールとして開発がスタートしました。ただLINE Growth Technologyがメインで開発を主導することになったタイミングで、全社的に利用できるツールにしようということで方向転換し、ベース部分から見直しています。

藤本:最初、O2O事業の担当者からこういったツールがほしいとのリクエストがあり、それに対応するために開発を進めていました。ただ、このツールがあれば全社共通の課題の解決につながるのではないか、LINE社内の多くの人に喜んでもらえるのではないかということで、他の事業でも使えるように開発することになりました。

ただ、OAMMで扱う情報にはサービス固有の内容が含まれることなどから、サービスごとにカスタマイズ開発を行っています。そのため、OAMMを使いたいというサービスがあれば、どういったメッセージを配信するのか、現状の課題は何かといったことをヒアリングした上で、そのサービスにフィットするように開発を行っています。

――OAMMの開発で苦労したことがあれば教えてください。

藤本:最も苦労したのは、メッセージに含まれる画像の保存と配信部分です。ストレージに画像を配置し、メッセージを表示すると端末からストレージにアクセスして取得する仕組みになります。ただ、当初は負荷分散の仕組みなどを入れていなかったため、画像を保存したストレージにアクセスが集中して大きなトラブルに発展してしまいました。

このトラブルが起きた背景には、内部で大規模なテストを行うことが難しいという課題もあります。数百万人のユーザーにメッセージを配信するとどうなるのかといったことをベータ環境で試せず、実際に本番環境でメッセージを配信するまで問題に気づけなかったんです。

Baek:多数のユーザーがストレージにアクセスして画像を参照するといった場合、通常であればCDNを利用して負荷分散を行います。実はトラブルが起きたときもCDNは使っていたのですが、CDNサーバーに画像がキャッシュされる前に画像へのアクセスが大量に発生したため、トラブルが発生していました。そこで利用することにしたのが、LINE社内で運用されているメディアストレージの「OBS」(Object Storage)です。

OBSはLINEやLINEファミリーサービスで使うメディアデータを管理するためのものであり、ストレージ自体にキャッシュの仕組みが備わっているほか、データがアップロードされた時期に応じて保存するストレージの種類を変更する機能などを備えています。参照される頻度が高い、アップロードされたばかりの画像は高性能なSSDに、アップロードから時間が経ち、参照頻度が低い画像はコスト効率の高いHDDに保存するといった形です。

OAMMでは、このOBSとCDNを組み合わせつつ、さらにCDNサーバーに事前に画像をキャッシュするプレウォーミングの仕組みも利用し、数百万人のユーザーに画像付きメッセージを送っても問題なく処理できる環境を整備しました。

藤本:メッセージの時間指定配信も悩んだ部分です。メッセージを配信する際は、配信先となるユーザーを抽出するために、Hadoopクラスタに対してクエリを実行する必要があるのですが、結果が返ってくるまで長時間待たされるケースがあります。このようにユーザー抽出に時間がかかるため、直前にメッセージの時間指定配信を設定すると、指定した時間にユーザー抽出が完了せず、意図した時間に送信できない可能性があります。

しかし時間指定配信は、サービス側からはマーケティングの観点から、時間にシビアに、かつ最新のデータを抽出して配信をしたいという希望をもらっていました。

指定した時間通りに配信するためには、できるだけ前もって設定してもらう方が良いですが、あまりに余裕を持たせると最新のデータが抽出から漏れるため、機会の損失につながる恐れがあり、逆にギリギリまで設定可能にすると意図した時間にメッセージが送信されない恐れがあります。この部分をどういうルールにするのかは、かなり悩んだところです。

現状は、前日までに時間指定配信を設定してもらい、メッセージを配信する当日の早朝にクエリを実行してユーザーを抽出するようにしています。早朝であればHadoopクラスタのタスクが混雑していないため、遅延する可能性が低いことが理由です。

さらにLINEのMessaging APIには、ユーザーIDを事前にアップロードしてグルーピングし、メッセージ配信を予約する機能があります。これを利用すれば、作成したグループでメッセージを送るというリクエストを配信時間に発行するだけで済みます。そこで早朝に抽出したユーザーIDを事前にMessaging APIでグルーピングし、指定した時間になったら即座に送信できるようにしました。

その後、運用を続ける中で1~2時間あればユーザー抽出に失敗することはなさそうだということが分かったので、最近ではもう少し直前まで時間指定配信を設定できるようにしています。

村田:サービスによっては、「こういうメッセージをこのタイミングで送らなければならない」といったことが法的に決まっているケースがあり、事業部側とのすりあわせに苦労したこともありました。

また、そもそも僕たちはエンジニアで、マーケティングに携わった経験はありません。そのため、技術的に正しいことであっても、それがマーケティング観点で許容できるかどうかといったことについて、事業部側の担当者と話し合うことは多かったですね。

ユーザー目線で開発することを意識

――OAMMのカスタマイズのために各事業部にヒアリングする際、特に意識していることはありますか。

藤本:ヒアリングして、こういった配信がしたいという要望を受けたとき、なぜその配信をしたいのか、背景まで聞くようにしています。マーケターとしては何らかの問題があり、それを解決するためにメッセージを配信したいのだと思います。ただ技術的観点まで含めた場合、マーケターの考えたことが最適な課題解決につながらないことがあるためです。

エンジニアは課題解決のプロだと思っているので、背景にある課題まで詳しくヒアリングして解決策を導き出し、例えば「こういった配信項目があったほうがいいんじゃないですか」など、我々からも提案することを心がけています。

当初は事業部の担当者の要望どおりに開発していたのですが、それだと使われない項目があったり、逆に機能が不足しているので追加開発してほしいと要望されることが多かったんですね。そのため、マーケターの方が感じている課題を詳しく聞き取り、僕たちも課題解決策を考えるべきだと思うようになりました。

Baek:LINE Growth Technologyでのツール開発では、ユーザー目線で考えることを意識しています。当然、ユーザーはシステムのスペシャリストではないので、システムに関して知識を持つエンジニアがユーザーに寄り添い、さらにユーザーのニーズをきちんと理解した上で開発するというわけです。これはOAMMでも同様であり、マーケターが何をしたいのかについて、LINE Growth Technology側の開発メンバーが細かい部分まで把握して作ることで、マーケターが求めているものと我々が作ったシステムに齟齬がないようにしています。

村田:OAMMを利用する理由の1つとして、業務を効率化したいというものがあります。もしユーザー目線がないがしろにされていて、使い勝手が悪いということになれば、作業効率が低下してしまうことになり、業務の効率化という目的を達成することができません。

さらにユーザービリティの観点で言えば、このボタンを押したときの挙動として2つのパターンが考えられて、そのどちらなのかが分からないといった状態では、事故が発生する確率が高まってしまいます。そういった事故が起きないように、迷わずに使えるインターフェイスにするなどといった部分は意識しているところです。

――OAMMに追加した機能で、印象に残っているものはありますか。

藤本:LINE社内の機械学習系のシステムに、「類似配信(Look a Like)」と呼ばれる類似モデリングの機能があります。これを利用し、たとえばAという商品を買ったユーザーのIDをインプットすると、その商品に興味を持ちそうなユーザーを抽出することができるんですね。さらに興味の度合いがスコアとして出力されるため、そのスコアに応じたメッセージを用意して配信することで、コンバージョン率を高めることができます。

この類似配信の仕組みを入れることにより、これまでとは別の観点でユーザーを抽出することが可能になりました。これにより、OAMMはこれまで以上に幅広い用途で使えるようになったと感じています。

さらに現在は、送りたいコンテンツをインプットすると、それに興味を持ちそうなユーザーを自動的にリストアップして配信する仕組みを、社内のマシンラーニングのチームと共同で進めています。これが実現すれば、さらにOAMMの有用性は高まるのではないかと期待しています。

――OAMMを開発したことで、その効果やユーザーからのフィードバックなどの反響はどうですか?

Baek:細かな導入効果は計測していないのですが、これまで対象ユーザを抽出する作業に従事していたデータサイエンティストの作業がOAMMによって自動化されたため、データサイエンティストが創造的な業務に時間を割くことができるようになった、と聞いています。

また、これまでには手作業で抽出を行っていたためミスもあったのですが、それも無くなったという声も聞いていますね。サービスによっては、条件が複雑になってしまうためこれまで手作業での抽出ができず、そもそもキャンペーンを行うことができないところもありました。OAMMを導入することにより簡単に抽出することができるようになったので、効果的なキャンペーンが実施できるようになります。色んなサービスの成長に貢献できていると思います。

OAMMの開発で得られた学び

――今後、OAMMで実現したいことや追加したい機能としてはどういったものがありますか。

村田:現状ではOAMMで送信できるコンテンツには制限があるのですが、その自由度を上げていきたいと考えています。それとライトに使えるOAMMの実現です。現状は事業部ごとにデータを作ったり画面を開発したりする必要があり、すぐに使いたいと言われても対応できません。ただLINEという会社はスピード感をすごく大切にしているので、とりあえずライト版を導入し、その後カスタマイズして使いやすくするといったことができればいいなと考えています。

藤本:OAMMに対しては、LINEの各事業部から様々な要望が挙げられています。リソースがあればすべて対応したいところなのですが、そういうわけにもいかないため、優先度を付けて開発している状況です。

Baek:その優先度は、その機能を追加することで、特定の事業部だけでなく、幅広い事業部で喜ばれるものを最優先で考えています。その次に、特定の事業部であっても、その機能を導入することで大きな効果が見込める機能です。こういった考えで優先順位付けを行い、開発する機能を決定しています。

藤本:最終的には、データを活用してユーザーとのコミュニケーションを促進する、あるいはユーザーの体験を高めていくことができるように、OAMMをアップデートしていきたいと思います。

――最後に、OAMMの開発によってエンジニアとして成長できたことを教えてください。

Baek:OAMMで扱うデータ量は膨大で、さらに極めて多くのユーザーにメッセージを送信します。このような大規模なシステムでの制御の仕方やデータの持ち方などを深く理解できたことが大きいですね。また、マーケターの人たちの考えを理解することも学びにつながっています。

村田:システムインテグレーターでエンジニアとして働いていたときは、予算や期間が決まっていることもあり、自由に開発できない部分が少なくありませんでした。しかしOAMMの開発では、制約条件をあまり気にせず開発することができています。これにより、サービスをよくするために何が必要なのかといった、エンジニアとしての考え方の基礎を身につけられたと思います。

藤本:私も前職はシステムインテグレーターのエンジニアだったのですが、大きいプロジェクトに携わっていたため、自分が書いたコードがどのように動いているのか、どこで役に立っているのかをイメージできませんでした。しかしOAMMの開発プロジェクトは、ダイレクトにマーケターから要望を受け、自分の書いたコードが多くの人に影響を与えることを実感できています。また、そうした中で本当に課題解決するためには何が必要なのか、マーケティングの成功に寄与するためには何を追加すべきかといったことを考えられるようになったのは、自分が成長した部分だと感じています。

LINE Growth Technologyでは、一緒に働くメンバーを募集しています。