ハードウェアの処理能力の向上や分散処理技術の進化、
クリックされなかったものも情報として記録したい
- ――お二人は大規模データ分析基盤の構築プロジェクトを進められているとのことですが、
どのようなきっかけでプロジェクトが始まったのでしょうか。 吉村氏:2012年にリクルートが買収したIndeedにヒアリングした際、
自分たちは分析のためのデータを十分に取れていないと感じたのがきっかけです。購入する、 予約するといったトランザクションは当然取得してRDBに記録しているほか、 Adobe AnalyticsやGoogle Analyticsを使い、 行動ログからユーザの導線を分析するといったことは行っていました。ただ、 それだけでは不十分で、 選択肢として表示された中で何がクリックされなかったのかなどのネガティブな情報や空室・ 空席の推移など、 より多くの情報を取得することが重要だと気づいたのです。 たとえば10個の選択肢の上から5番めがクリックされた場合、
ユーザが見たけれど押さなかった上の4個と、 ユーザの目に入らなかった下の5個では、 クリックされなかったという点では同じですが、 その意味合いは異なるでしょう。こうした幅広い情報を記録し、 分析に使えるようにすべきではないかと考えました。 それに加えてデータの粒度という問題があります。たとえば、
我々のサービスの1つである 「じゃらん」 (図1) では、 ホテルや旅館の空室の販売をビジネスにしています。その中で、 空き状況がどう推移しているのかを判断するための情報は取得していますが、 それぞれの宿と部屋、 そしてプランを掛け合わせると、 膨大なデータ量になってしまいます。それをどの単位で保持しておくのか。
![図1 今回のプロジェクトで、分析対象となっている「じゃらん」。日本全国の宿やホテルを予約できるWebサイトで、多くの人々に愛用されている 図1 今回のプロジェクトで、分析対象となっている「じゃらん」。日本全国の宿やホテルを予約できるWebサイトで、多くの人々に愛用されている](/assets/images/dev/serial/01/recruit-lifestyle/0004/thumb/TH800_003r.png)
そういったデータは、
売上予測を行ったり、 あるいは価格設定時における需要の判断に使ったりすることができます。ただ、 あまりにデータ量が膨大になるため、 既存のインフラで対応するのは難しい状況でした。また、 大量のデータを集めて分析するための基盤を構築する場合、 それがどれくらいの売上につながるのかといった説明も求められますが、 具体的な数値に落とし込むのは容易ではありません。このような背景から、 なかなか踏み込めなかったというのが従来の状況でした。
クラウド利用でコストを抑えつつプロフィットを創出
- ――どのようなきっかけから、
プロジェクトが進み出したのでしょうか。 吉村氏:1つは社内のリソースではなく、
外部のクラウドを使えば良いと考えたこと、 もう1つは分析をコストセンターとしてとらえるのではなく、 プロフィットセンターにするという方針を固めたことです。クラウドはコストの安さに加え、 大量のリソースを使うことができて、 集計処理のためのしくみを備えたサービスもあります。サーバを1台追加するだけで多くの投資が必要で、 なおかつ導入まで1ヵ月待たされる、 といった制約から解放されるのです。 また海外のサービスには、
取得したログにAPIでアクセスできるようにして、 即時に集計を行ってレコメンドに反映しているものが多くあります。それと同じしくみを実現すれば、 単なるコストセンターではなくなり、 プロフィットを生み出して会社に貢献できます。このようなことを説明すると 「やるべきだ」 ということになり、 プロジェクトが始まりました。 - ――プロジェクトはどのような方針で進められたのでしょうか。
吉村氏:技術的な制約はなしで考えようと決めました。私たちが提供しているサービスのさまざまなログを全部投入すると、
1日で数百Gバイトから数Tバイトのデータ量になります。それを日次で処理して翌日までに結果が集計されるのではなく、 リアルタイムで情報を見ることはできるか。このように、 技術的な制約 (=言い訳) をなくしたらどこまでできるのかチャレンジする、 というのが、 このプロジェクトの基本スタンスです。 - ――エンジニアとしてそのお話を聞いたとき、
吉田さんはどのように感じられましたか。 吉田氏:制約に縛られずに考えられるので、
すごくチャレンジングかつ創造的で、 エンジニアとして活躍の場を与えられたと感じました。事業的なミッションと技術的な挑戦の2つがうまくバランスしたのも良かった点ですね。
大規模データの即時分析を視野にプロジェクトを推進
- ――制約を設けないということは、
必然的にコスト負担も大きくなるのではないかと思うのですが、 そのあたりはどのように整理されたのでしょうか。 吉村氏:まず人的コストで言えば、
内部の社員を中心にできるエンジニアだけを集めてプロジェクトを回すようにしました。それによってエンジニアの人数を抑えています。また、 最も足枷がない形で、 エンジニアの人たちに最高のパフォーマンスを発揮してもらいたいと考えたことも少数精鋭にした理由です。 インフラのコストで言えば、
今回はクラウドを全面的に利用しているので、 オンプレミスよりも格段に安くなっています。それと先ほどお話したように、 レコメンドに分析データを使うことでプロフィットを得ることができます。私たちのサービスでコンバージョンレートが数%上がれば、 かなり大きな額の売上向上につながります。データの収集と分析、 そしてレコメンデーションまで、 分析のサイクルをグルッと回せば、 十分にビジネスとして成立します。このため、 コストが問題になることはなく、 やればいいじゃないという話になったのです。 - ――具体的には、
どのような処理が行われているのでしょうか。 吉村氏:まだ始めたばかりですが、
最近は最も大きいじゃらんのデータを取得し始めています。まずは売上影響の大きそうなページや機能から、 1日数十Gバイト程度の取得を始めています。この適用範囲はどんどん広げていく予定です。 吉田氏:ただ、
まだまだ序の口ですね。とりあえずじゃらんで一部のログデータを取り始めましたが、 不足している機能も多いですし、 プロジェクトはこれからが本番だと考えています。 吉村氏:そうですね。もっと多くのデータをリアルタイムに分析したいと思っています。もともと日次でデータを転送して分析していた処理をリアルタイムに近い形、
たとえば1分といった間隔でどれだけ処理できるのか。技術的なハードルが高いことに挑戦しているので、 プロジェクトはようやくスタートを切ったという段階です。
オープンソースの活用で開発のスピードを高める
- ――現状のシステム構成を教えてください。
吉田氏:ベースで使っているのはAmazon Web Servicesのクラウドサービスです。それに現状ではElasticsearchやKibanaを使ってデータを可視化
(図2) しているほか、 一部を集計してDynamoDBに投入し、 それをAPIで取得するといったこともやっています。
![図2 分析結果がわかりやすい形でグラフィカルに表示されている。この結果を新サービスなどの企画立案に活かすほか、レコメンドエンジンとしても使うことでプロフィットを生み出すことを視野に入れている 図2 分析結果がわかりやすい形でグラフィカルに表示されている。この結果を新サービスなどの企画立案に活かすほか、レコメンドエンジンとしても使うことでプロフィットを生み出すことを視野に入れている](/assets/images/dev/serial/01/recruit-lifestyle/0004/thumb/TH800_004r.png)
![図2 分析結果がわかりやすい形でグラフィカルに表示されている。この結果を新サービスなどの企画立案に活かすほか、レコメンドエンジンとしても使うことでプロフィットを生み出すことを視野に入れている 図2 分析結果がわかりやすい形でグラフィカルに表示されている。この結果を新サービスなどの企画立案に活かすほか、レコメンドエンジンとしても使うことでプロフィットを生み出すことを視野に入れている](/assets/images/dev/serial/01/recruit-lifestyle/0004/thumb/TH800_005r.png)
吉村氏:社内に固定的にインフラを持ち、
同じような環境を構築するのは難しいですね。たとえば膨大なデータを解析できるだけのCPUやメモリ、 ストレージといったハードウェアリソースを全部そろえるのは現実的ではありません。その意味でクラウド以外の選択肢はなかったのですが、 一方で特定のクラウドサービスに依存するとロックインされてしまうジレンマもあります。 ロックインは避けたいが、
同じような環境を私たち自身で構築するのは難しい。それならば、 私たちはクラウドを道具として使い、 その結果をサービスにどう反映するかで勝負する。そこが一番の本質であると考えています。 吉田氏:Fluentdなどのオープンソースも積極的に活用しています。ソースコードが自分で見られるので、
何か問題があってもすぐに確認できますし、 必要な機能を追加するといったことも可能です。本当に必要なものであれば自分で開発して自由に追加できるので、 スピード感を持ってプロジェクトを進められるのは大きなメリットだと思っています。 新しく採用した技術で言えば、
プログラミング言語にGoを使っています。ほかの言語の良いところがしっかり盛り込まれていて、 なおかつ無駄な機能がなくて簡潔に書くことができます。静的型付け言語のため処理も速いですし、 堅牢なプログラムを書けて、 非常に使い勝手の良いプログラミング言語だと感じています。
リスクを適切にコントロールしクラウドを活用
- ――技術的に肝となるのは、
どのような部分でしょうか。 吉田氏:大きいのはリアルタイム性でしょうか。そのため、
基盤には遅延なくきちんとデータを捌けることが求められます。今回は制約がないという背景もあったので、 ちゃんとスケールできるしくみを導入し、 基盤がボトルネックにならないような工夫をしようと考えています。現状、 じゃらんのデータを取得していて、 レコード数が数千万件、 データ量が1日あたり数十Gバイトというところですが、 本格的に対応すると10倍以上のデータ量になると予想しています。それにきちんと対応できる形を整えなければなりません。 吉村氏:海外では、
本当に細かく、 かつリアルタイムにデータ分析を行っていて、 それを利益に結び付けています。たとえば、 eBayやエクスペディア、 Booking. comといったサービスです。世界のトップクラスは、 データ分析をしっかり行っていて、 すごいレコメンドをしかけるなど、 さまざまな手を打ち出しているわけです。そういうところを目指さないと、 何をやっているの? 何でそんなに小さく収まっているの? という感じになってしまう。 確かに今までは技術的、
環境的な制約がありましたが、 それらを取り払って考えたときにどこまで行けるのか。おもしろい挑戦だと思いますし、 これを実現すると、 やっと世界の背中をちょっと掴むぐらいまで行けるのかなと思っています。 - ――本日はありがとうございました。