一休.com Developers Blog

一休のエンジニア、デザイナー、ディレクターが情報を発信していきます

一休の1 to 1マーケティングを支えるプラットフォーム

データサイエンス部・大西 id:ohke です。

一休の1 to 1マーケティングを支えるプラットフォームについてお話したいと思います。

1 to 1マーケティング

一休の主力である宿泊予約サービスは今年で19年目、レストラン予約サービスも13年目を迎え、会員数も800万人を超えました。
一休のサービスを「知らなかった」から「知っている」という成熟フェーズに入ってきますと、集客に加えて、1 to 1マーケティングがより重要になってきてます。

一休の1 to 1マーケティングで大事にしていることは3点です。

  • 施策に必要なデータは全てデータウェアハウス (DWH) へ集約する
  • オートメーションツール (内製のWebアプリケーション) でターゲットの抽出、コンテンツの作成、配信を一元管理する
  • ユーザごとにコンテンツを最適化する (レコメンド)

f:id:ohke:20181228105756p:plain

DWHとETL

1 to 1マーケティングでは、ユーザの過去の行動に基づいて施策を実施していきます。
そのため、予約情報 (サービスのテーブルデータ) 、アクセス情報 (Google Analyticsと内製のリアルタイムログ収集ツール1) 、およびそれらと紐付くマスタデータなどは、全てDWHに集約しています。

DWHには、SQL Server (RDS) を使っています。SQL Server Management StudioやRedashでSQLを書けば、誰でも集計・分析を行えるようになります。

DWHへの日々のETL (抽出・加工・格納) は極めて重要になります。
ETLが失敗・遅延すると、データにアクセスできなくなり、1 to 1マーケティングに支障を来してしまいます。マーケティングの文脈以外にも、DWHは、CEOをはじめ各事業部長や集客チーム・UI/UXチームの定点観測や意思決定に利用されるため、データが無い・間違っていることによる影響は甚大です。

一休ではETLを管理するツールとして、Apache AIrflowを導入・運用してきました

user-first.ikyu.co.jp

日次だけで約400タスク (1タスクが1つのテーブルのエクスポートなどと対応します) 、さらに週毎・時毎などのタスクもあわせると、そこそこ大規模なETLとなります。

f:id:ohke:20181228125559p:plain

DWHとETLを健全な状態に維持し続けるために、以下の改善・運用も行ってます。

  • 社内の各部署から依頼されるDWHへのデータ追加や計算方法変更への対応
  • 各部署で自然発生的に持っていたETL処理もAIrflowへ統合
  • 事業担当者 (マーケタや営業) が実行するクエリのチューニング
  • 滞留クエリの自動検知・除去

オートメーションツール

1 to 1マーケティングでは、その名の通り、ユーザ一人ひとりに寄り添ってなければなりません。しかし一方で、アプローチするユーザ数も減らしたくないので、必然的に、少数のユーザに深くターゲットした施策をたくさん実行する必要があります。

1 to 1マーケティング施策の実行にあたっては、大まかに、ターゲットの抽出、コンテンツの作成、配信という3段階の作業を行います。
従来は他社のマーケティングメール配信サービスを使ってきましたが、数十以上の施策を実施するにあたって、大きな壁にぶつかりました。

  • ターゲットやコンテンツに埋め込む値の抽出は、マーケタの日々の手運用に頼られていたため、スケールしない
    • SQLで抽出したCSVファイルをファイルサーバにアップロードする、ということを施策ごとに行っていました
  • 配信は他社のサービス任せとなる (一休でコントロールできない) ため、事故無く運用するためには習熟が必要

また、メールだけではなく、サイトに来訪しているユーザにもアプローチするために、以下の新しいチャネルも要件として生まれていました。これらのチャネルをサービスに密に組み込んでしまうと、施策のたびにマーケタと事業部のエンジニア・デザイナが協同せざるえないため、クイックに施策を実行できなくなります。

  • サイトメッセージ: サイト上でのお知らせやクーポン配布に使われます
  • ポップアップ: サイトメッセージよりも訴求力が強く、クーポン配布に使われます

そこで、ターゲットの抽出・コンテンツの作成・配信を一元管理するオートメーションツール (Webアプリケーション) を内製することで、上の課題の解決を図りました。

  • ターゲットやコンテンツに埋め込む値の抽出を、DWHへ発行するSQLで記述できるようにする2
  • テキストやHTMLを編集できるようにすることで、自由にデザインを変更・プレビューできるようにする
  • 配信のチャネル (メール or サイト上のメッセージ or サイト上のポップアップ) 、日時、優先度などを確認・変更できるようにする
  • 配信は全てオートメーションツールで行うため、基本的には事業部のエンジニア・デザイナとコミュニケーションする必要が無い

f:id:ohke:20181226165711p:plain

オートメーションツールの導入と、その後のマーケタの細やかな施策設計によって、現在では毎日100近くの施策がこのツールから実行されています。

f:id:ohke:20181226163558p:plain

日々の効果測定は、Google Analyticsなどを使って収集し、Redashでビジュアライズして、Slackに通知するというカジュアルな方法を採ることが多いです。

f:id:ohke:20181227145344p:plain

オートメーションツールそのものは以下のアプリケーション構成となっています。

  • サーバサイドは、Python + Flask + SQL Alchemy
  • フロントエンドは、React
  • CI/CDは、CircleCI + CodeDeploy

オートメーションツールからの配信は、チャネルごとに異なる機構で行っています。

  • メールは、サービスと同等の構成をマーケティング用に構えました3
  • サイトメッセージとポップアップは、RDS (SQL Server) に配信リストを渡し、API (Go) 経由でサービスからアクセスすることで実現しました
  • それぞれの配信結果もDWHへETLすることで、開封率の集計や効果測定を行ってます

f:id:ohke:20181228104528p:plain

レコメンド

いくらオートメーションツールで簡単にユーザへ配信できるようになったとしても、そのユーザにとって嬉しい情報でなければなりません。

ホテルやレストランの予約を提供している一休にとって、「そのユーザがどのホテル or どのレストランをおすすめされると喜ばれるか」というのは、サイトでの検索結果やリマーケティング施策では重要なテーマです。特に、ユーザの直近の行動を反映できないリマーケティング施策 (例えば、数ヶ月前に宿泊したユーザを対象としたメール) では、興味を引くコンテンツとなっていないとユーザの心が離れる (要するにウザいと思われる) 要因となってしまいます。

一休では、サイトでの検索結果やリマーケティングメールに表示されるホテルやレストランのリストは、各ユーザの過去の行動を反映したものとなってます。レコメンドと呼んでいます。
具体的には、ホテルやレストランでの行動 (予約やアクセスなど) を元に、アイテムベースの協調フィルタリングを用いて、類似したホテルやレストランをおすすめするというロジックになっています。これらのロジックもDWH上のデータを使って計算しています。

サイトでの検索結果にも同様のロジックでレコメンドしてますが、リアルタイムな情報を使う必要があること、および、サービスに組み込むために堅牢性が求められることから、APIとして提供してます。
このAPIは以下のような構成となっています。こうしたサービスから利用されるアプリケーションの開発・運用もデータサイエンス部の役割です。

  • 実装はPython + Flaskで、全てオンメモリに展開してリクエスト都度で計算してます
  • インフラは、ECS + ElasticBeanstalk
  • CI/CDは、CircleCI

課題は山積みです

今回お話した中でも、まだまだ取り組めていない課題はたくさんあります。

  • DWH/ETLやオートメーションツールの安定化
    • 営業時間前にデータが出揃ってないと、集計・分析や施策の精度が落ちてしまうので、ETLの品質を担保し続けていかないといけません
    • そこまで熟達していないマーケタがSQLやデザインを自由に記述できるので、大きな事故につながらないようにシステムで細やかに予防する必要があります
      • 「検証配信」や「計算する」(件数チェック) はそのための仕組みとなってます
  • 配信タイミングの最適化
    • このユーザには朝8:00、そのユーザには夜7:00など、ユーザごとにチャネルに触れる時間帯が異なる
    • そのユーザがチャネルに触れる時間帯を狙ってアプローチしたい
  • 協調フィルタリングによって売り上げのリフトに成功していますが、更なるUX向上のために別のアプローチを模索中
    • 協調フィルタリングでは、ライトユーザの場合には情報が不足しているため、レコメンドによるリフトが小さくなってしまいます (いわゆるコールドスタート問題)
    • ヘビーユーザでも、ユーザの嗜好が常に一定では無く、ユーザのコンテキスト (目的、一緒に行く人、気分など) を汲み取る必要があります
      • 以前イタリア料理店に行ったからと言って、未来永劫イタリア料理店に行くとは限りません
    • リアルタイムのユーザ行動を反映しながら、その時点でそのユーザにとって最もフィットするホテル or レストランをおすすめできるようになることを目指してます

上に加えて、データサイエンス部としては他にも様々な課題に取り組んでいます。

  • 急増するレストランへの営業活動を最適化する
  • 抽象的なワードでも良い感じにレストランを検索できるようにする
  • クーポン施策の最適化 (損益分岐点の予測など)
  • などなどなどなど...

データサイエンス部では、こうした取り組みを4人で遂行しています (2018/12現在) 。

一緒に取り組んでいただける仲間を募ってます

DWHやETLの改善に燃える!

一休の経営や施策の根幹を成すデータの安定供給のために、自ら設計・構築・運用できます。

内製アプリケーションをクイックに開発・改善したい!

フロントエンド、バックエンド、インフラ、CI/CDを自分で考えて開発できます。

統計モデリングや機械学習でもっとかっこよく課題を解決したい!

高価格帯のサービスECサイトですので、他のサービスと一線を画したテーマの問題に取り組めます。

自ら考えた施策でもっとユーザに愛されるサービスへ育てたい!

CEO直下で施策の立案・遂行・改善に取り組めます。


  1. 詳しい経緯はこちら → データ分析基盤、その後 - 一休.com Developers Blog

  2. 一休のマーケタはSQLを書けます。

  3. 詳しくはこちら → 新メール配信基盤への移行 /ikyu-mail-platform - Speaker Deck