独自の解析エンジンが、理想とするプロダクトには必要だった──プレイドのCPOとCTOが語るKARTEの開発秘話
CXプラットフォーム「KARTE」を運営するプレイド。その開発の基盤を支えるエンジニアたちは、日々どんなことを考えているのでしょうか。
創業当初からKARTEの開発を支えてきたCPOの柴山直樹と、2015年にジョインしたCTOの牧野祐己がKARTEの開発秘話や、プロダクトを通して叶えたい未来を語り合いました。聞き手を担当したのは、Product Specialist Engineerの池上 純平です。
リアルタイム性と自由度を両立させるために。独自の解析エンジンを開発
ーー「KARTE」の特徴のひとつに、独自解析エンジン「Brook」があります。独自に解析エンジンを開発しようとしたきっかけはなんだったのですか?
柴山 人に関する行動データを扱えるサービスを作ろうという話が、KARTEの構想段階で出てきたときに、人をどうやってデータ上で表現するかをやりたいと思った。その当時はまだ大学に所属していて、機械学習をMapReduce上でどう表現するかに取り組んでいた。その頃は、「機械学習のMapReduce表現を近似的にエッジコンピューティングでやる、それによって高速性を出す」という、Matrix Factorizationをエッジでやる話を論文で書こうと思っていた時期。
柴山 ユーザーのデータがローカライズされて一部ストア化されている中で、どうやるかを考えていた。当時考えた方法だと、ユーザーのデータの解析(アグリゲーションとフィルタリング)をプリ・アグリゲートしたり、フィルタリングしたりする際の高速性と自由度が担保できるんじゃないかと思っていた。従来のMapReduceよりも軸を絞ったやり方で、他のところがやっているよりも明らかにうまいやり方があるなと。
当時のMapReduceはHadoopが全盛で、今もそこまで状況は変わってないけどSpark Streamingあたりも成熟してない時だった。従来の解析系のツールも人にfocusを当てるとデータの表現方法が中途半端で、やれることも中途半端だった。当時は、「めちゃくちゃリアルタイムに寄せるけど、自由度が低いデータ表現か、自由度はめちゃくちゃあるけど、バッチでやるから解析が遅い」の2つのどちらかが取られていた。
スクラッチで作ったらリアルタイム性と自由度が高いエンジンができそうだけど、すでに存在しているフレームワークを使ったほうが、もちろん開発コストはかからない。他のプレイヤーが自由度高いものをやっていないときに、そこにコストかけてやるのを無駄な気もしていた。それでCEOの倉橋と相談したら、彼が「できることが多いし速いなら、そっちのほうがいいんじゃない?」という名言を残して。「やり始めたら最初の5ヶ月くらいその開発しかやらないけど」って言いながら作り始めた。
ーー世の中には汎用的に使える解析エンジンがあったけれど、ユーザーをこう解釈したいという軸がありつつ、リアルタイム性と自由度を持つちょうどいい解析エンジンがなかったから作った。
柴山 そう。アグリゲーションする軸がひとつに決まっているとローカライズできて、それがキーバリューとなり、DBとすごく合う。その代わり、一度軸を決めて情報を集め始めると、軸を変えられない。人という軸以外の解析はできない中途半端な解析エンジンだけど、自分たちがやりたいサービスには合っていた。独自開発の意思決定は今振り返っても良かったと思っていて、開発の難しさは上がっているかもしれないけど、クライアントの開発に落とさなくて済む範囲が広がったのは間違いない。
ーークライアントがKARTEを使ってできることの自由度が上がって、新しく開発しなくてもできることが広がった、と。
柴山 未だに既存のフレームワークだと今の性能は出せないので、独自で開発して良かったと思う。ユースケースの限られた解析エンジンを使っていたら、その解析エンジンではできないKARTEの使い方が出てきたときに、解析エンジンの乗り換えや拡張が必要になっていたかもしれない。
ーーこれまでBrookを大きく書き換えることもなかったのですか?
柴山 全く書き換えていないわけではなく、牧野にけっこう書き換えてもらってはいる。
牧野 アイデアが変わっているというより、分散処理できるようにアルゴリズムを考えた感じ。やろうとしているコンセプトは同じで、実装の仕方が多少書き換わった。自由度は高くてリアルタイムだけど、いろんな解析をするためのバッチ側を拡張する方向に進んだかな。ユーザー軸ではないデータの解析はバッチ側に寄せた。ここ最近、データエンジンとしてはバッチ側をいじっていて、KARTE Datahubもまさにバッチ側のプロダクト。
ーー想定していたユーザーのデータの持ち方の軸を超える使い方や要望が出てきて、そのエンジンと切り離された部分を使ってユーザーデータを拡張する機能も出てきたのですね。それは当時の想像を超えていたと。
柴山 人という軸においてはクロスできない状態にして、統計的に圧縮がかけられるようにはなっているけど、それがどんどん増えていく。統計的な処理がさらにスケールしていくこと、また、タイムウィンドウのような時間的なツリーマージなどは完全に初期設計から抜けていた。そういった部分との戦いは、最初の頃は牧野と話し合いながらコードを作っていて面白かった。
どう整合性を保つかとスケール性について取り組んできて、最近ではさらに結果整合から強整合に変えるのも可能だなと思っていて。開発リソースさえあれば突っ込める。そこには早めに手を出せると面白い。
ーーちょっと抽象度が上がってきたので、より具体的な話を聞いてみたいのですが。
牧野 例えば、あるセグメントに入ったものが一瞬矛盾してしまうことがある。両方、アンドで接続したセグメントがあったときに、しばらくすると一貫性がある状態になるが、一時的に一貫性がなくなることがある。分散しているから解釈が違って、こうした事象が起きてしまう。開発リソースをかけてこの状況を解決していけると面白い。
ーーすでにKARTEはJavaScriptのSDKやアプリ、サーバーサイドのAPI、オフライン接点など、いろんなところからデータが飛んでくる状況。今後、データの持ち方を変えていく可能性はありますか?
柴山 もちろん。ただ、今はやらないといけないことがたくさんあって、優先順位が低い。自分たちも知識が上がっているから、やれることは増えている。コアであるから、どう開発していくかは面白い。
きっとDBが好きな人には、面白い環境だと思う。プレイドがやっていることは、新しい発想は基本的には全然ない。組み合わせや順番を変えているだけの話で差分が生まれて、サービス化できているのが面白い。
アイデアへの共感、世の中へのインパクト。研究からビジネスの世界へ飛び込んだ理由
ーー二人とも、それぞれ大学院や企業で研究をしていた経験がありますよね。そのままアカデミックな分野にとどまるという選択もあったはず。なぜ、ビジネスの分野でやってみようと思ったのですか?
牧野 KARTEの「人の行動データを活用する」というアイデアに共感したことと、そのアイデアを伸ばすためのビジネス的な土壌もあったのが大きかった。当時のプレイドは、独自のアイデアで解析エンジンを作ろうとしていたし、きっとこのアイデアを伸ばせば技術的にもおもしろくなりそうだと感じた。
ある制約のもとで、その制約がビジネス的に許されている状況。KARTEであれば、ユーザー軸での解析ができればOKで、それはビジネス的にも成立して事業を伸ばせるのであれば、そこを極める。
その制約がある中で新しいものを作るのはやりやすかった。実際にプロダクトを出してみて、負荷がかかった状態で、ボトルネックを特定して、それをどう解決するかの繰り返しでいいモノが生まれる。何もない状態でボトルネックを想定して解決するのは難しい。何もないところで考えるよりは面白いって思っていた。
ーー自分で問いを立てて、アイデアを形にしていく縛りの中で課題を問くほうが解きやすくなるし、プロダクトを出したことによるトラフィック的、ユーザー的フィードバックもあって、改善しやすいということですよね。柴山さんは、共同創業者としてKARTEのアイデアを考える段階から参画していますよね。それはどういう経緯だったのですか?
柴山 社会にとって本当にインパクトのあるものをつくりたかった。確かに、大学で研究しているのも面白かった。論文を読んだり、考えて作ったものをテストしたり。でも、インパクトがあるものが生まれる環境ってなんだろうという思いを捨てきれなかった。
研究の世界は、業界の構造的に新しいものが生まれにくいし、ブラッシュアップのスピードも遅い。しかし、FacebookやGoogleなどの環境をみていると、「ビジネス」という競争環境にさらされているからか、スピードが早く、面白いアイデアも生まれやすいなと感じていた。データ規模がぜんぜん違うし、多様性も違う。
サービスを考えないとアルゴリズムはできないんじゃないか、ビジネスの世界で闘った方がきっといいものを生み出せると思って、大学院の博士課程を中退してビジネスの世界に飛び込んだ。
ーービジネス上の制約やフィードバックがあったときに、その枠の中でどう解決するかを考えることではじめて生まれるイノベーションがあるのかもしれないですね。
牧野 あえてプレイド的な魅力をあげると、ユーザーとの近さとデータの蓄積。ワンプロダクトで、データ解析ツールを提供しているのでデータが蓄積されている。いろんなプロダクトがあると顧客にフォーカスしにくかったり、SIerだとデータを扱えなかったりする。
もちろん、大企業でも各部署では実践していると思う。僕らは顧客に近い状態で、ひとつのプロダクトにフォーカスできる。そこが利点だと思う。
ーーGoogleやFacebookなどは、事業を展開しながら研究論文を発表していますよね。そうした中で、プレイドでは成果を世に発信していくことについてはどう考えていますか?
柴山 今のフェーズではまだ早いとは思う。サービスが十分に成長していない状態で研究に気を取られてしまうと本末転倒なので。ただ、会社とサービスの規模が大きくなって、リソースにも余裕が出てきたらやってみたい。
牧野 他の人にとっても価値のある論文にするには、サービスの規模はもっと大きくないといけない。だから、まずサービスを伸ばすべき。その間、重要な技術に関する研究をしないわけではないし、外に向けて発信するかどうかは考えないといけない。
柴山 プレイドが実践していることが論文化されたとして、その面白さは規模やスケールに正当化されるところがある思っている。現時点で発表したところで、「まぁ面白いことやってるね」くらいの反応にしかならないと思う。
ーーGoogleやFacebookが研究論文を発表して面白いのは、その裏で動いているスケールの大きなプロダクトがあるから、ということですよね。
柴山 プレイドの取り組みも、すでに分散のさせ方は面白いとは思うけど、もっと大きなスケールで実践している企業もある中で発表してもねという思いがある。世界レベルでの見られ方を想定したときに、インパクトが弱い。サービスの中で、データに関する課題をどう解いていくのかに日々向き合うことで、研究につながるようなデータを蓄積していきたい。
Webサイトをつかさどる“脳”を作ってみたい
ーー例えば、今後「KARTE」のようにユーザーデータに関する基盤が海外でも使われるようになったら、どんなテーマに挑戦してみたいですか?
牧野 「こういう環境になったら、こういうことをやろう」とか、イメージしていることは山ほどある。KARTEは汎用的なプラットフォームを目指していて、発想の広がりが生まれる点が魅力のひとつ。その面白さは、脳にけっこう近いと思っている。
ーー「脳」ですか?
牧野 はい。データ分析プロダクトとしては、「アクション(施策)」が近い点がKARTEの特徴。ワンストップツールなので、クライアントからエンドユーザーまでがセットになっているのが、KARTEのコア。これが脳に近い。
脳がしているのは、物理空間があり、人間が運動することでフィードバックを得て、うまく運動できるようにネットワークが正される。運動だけじゃなく、外界とのインタラクションをして、失敗したりしながら、上手くやる方法を覚えているんですよね。
アクションし、フィードバックを得て、調整する。その繰り返しを膨大な量で実施するKARTEは、かなり脳に近いんじゃないかなと。
柴山 Webはデータが面白い。脳的なものを育てるようなアプローチを取ろうとすると、情報環境がリッチで、インタラクションできて学習できる必要がある。さらにその一つ上のメタな最適化、ランダム探索寄りの最適化が働く環境を構築できると、アルゴリズム自体が進化するんじゃないかな。
インタラクション環境があり、アルゴリズムがメタにアップデートされていく環境を作る。その方法の一つとして、例えば、大量の機械学習の技術者たちがその環境に自分のアルゴリズムをインプットして、新しくするというループがくるくる回っていくと、ある程度「脳」的なものができる気がしていて。そういう環境づくりができると面白いよね。
ーーどうすれば、実現できるのでしょう?
柴山 KARTEだと、後ろ側に強化学習を入れている。とても単純だけど、まさしく学習のひとつ。KARTEじゃなくても、大きなサイトだったらすでに1万セッションの規模があって、ABテストのように決まった変数から選ぶのを最適化していく強化学習がある。変数が増えて自由度が上がってくると、また面白みが増す。セグメントを拡張したり、よりユーザーの複雑なフィールドに展開していったりすると、問題は難しくなって、最適化に時間はかかるけれど知的なものが生まれる土壌になる。
ーー例えば、「Hello」からスタートするアルゴリズムがあって、ユーザーとインタラクションして、フィードバックを重ねている間に、どんどんテキストのコミュニケーションが最適化されてくる。
柴山 けっこう実現できそうな感じがしている。ただ、世の中の会社はどちらかというと、環境よりもアルゴリズムを先に作るケースが多い。まず、環境にアプローチするほうがめちゃくちゃおもしろい。ただ、それには膨大な時間がかかるし、体力も必要。
牧野 その未来に向かうような入り方をしているのが、自分がプレイドに魅力に感じた点でもある。しかも、ビジネスとしても価値があるアプローチ。ビジネスとして成立する領域をおさえつつ、裏側で目指したい状態に向けてプロダクトを磨いていけるはず。
ーーたしかに、その環境を目指してビジネスを進めているかどうかは大きな違いですね。
ビジネスとプロダクト。それぞれのバランスを保ち、強い組織へ
ーー目指す先はとても魅力的である一方で、難しい道のりだとも思います。「KARTE」を開発していくなかで、プロダクトとビジネスは、どのようにバランスを取っていきたいと考えていますか?
柴山 遠い先を目指しているんだ、ということを常に「忘れないこと」は大事。プロダクトとビジネスのバランスも、今も完全に上手くいっているとは思っていなくて、常にバランスがとれるよう戦っているところ。ビジネスが面白いときもあって、プロダクトとビジネスのバランスをとるのは難しいですね。
ーー会社の中でも、自分の中でも、バランスが変わるんですよね。それは魅力であり、難しさでもありますね。組織としては、どうバランスをとっていけるといいのでしょうか?
牧野 長期的には、今日話したようなことを成し遂げたいと考えるメンバーの濃度をどう上げるかが大事なんだと思う。短期的な選択に関する話が出た時に、「そもそも、そのためにこの会社に来たわけじゃない」と言える人がどれだけいるか。とはいえ、ビジネスを前に進めないといけない場面もあるので、衝突するケースもあると思う。最後、大事な場面で折れないというのは重要だと思うね。
ーー「プレイド的にそれはやるべきじゃない」という話が中で出てくるうちは、ブレーキが効いているってことですよね。長期的な視野を持つために必要なことは何でしょうか?
柴山 やはり、スピードを上げすぎないことが重要だと思う。足元を見過ぎないと言いますか。スピードを上げすぎてしまうと、つい「やれることはやっておこう」「取れるものは取っておこう」と人は考えがち。そうした、目先のことにとらわれることを防ぐためにも、スピードの調整は必要だと思う。
牧野 ビジネスのスピードを上げすぎず、プロダクトのスピードは上げることかもしれない。ビジネスのスピードを上げすぎるとプロダクトが歪むけれど短期的に売れるものを作ろう、ということも起こりえる。プロダクトも「実装できるから、とりあえず実装しちゃう」ケースもあるので、プロダクトも短期と長期の視点のバランスを常に考えないといけない。
ーー短期に合わせることも必要ですが、短期に合わせすぎると長期で対応できなくなってしまう。短期と長期のバランスをどうとっていくのかは難しいですが、とても重要ですね。本日はありがとうございました。
最後に
CX(顧客体験)プラットフォーム「KARTE」を運営するプレイドでは、顧客体験をよりよくするとはどういうことなのか、Web/アプリの未来はどう在るべきか、深く考えたいというエンジニア(インターンも)を募集しています。