目次
- 最初にAlexeyさんがコンピューターに出会った時の話を聞かせてください。そこからどうやってClickHouseが産まれたのかを辿りたいと思います。
- もう少し早送りしてどの辺からClickHouseのアイデアが産まれたのかを教えてください。どのようにしてプロフェッショナルなプログラマーになったんですか?
- 中学生の時から最初の仕事までを振り返ってもらいましたが、そのアクセス分析のシステムの時にアプリケーションではなくデータの構造が問題であるということに気付いたということですね。
- PHPによるフロントエンドから開発の仕事を始めて、アクセス分析を深く調べる中でレコード指向のデータ構造とカラム指向のデータ構造を理解して、データ圧縮の部分まで手を拡げて開発を行っていたわけですね。
- Hadoopの中心であるMapReduceは巨大なデータを決まった小さなチャンクに分割してKey-Valueを作り、それをReduceして集計するという発想のシステムですよね。論理的なデータの領域を無視して、とにかく分割して並列で処理を行うという素朴というか乱暴なシステムだったと思います(笑)。
- Apache Arrowが登場するよりも前に同じアイデアを持っていたということですね。
- これまでのバッチで分析をするというのではなくリアルタイムで分析結果を返すシステムが必要だということですか。
分散環境に最適なカラム指向データベースで高速なリアルタイム分析を可能にするClickHouseの創業者兼CTOのAlexey Milovidov氏が日本法人のイベントに合わせて来日。ClickHouseが創業した経緯や生成AIが今後どのように使われていくと考えているのかなどを、インタビューによって解きほぐす機会を得た。この稿では約1時間以上に及んだインタビューの前半を紹介する。
最初にAlexeyさんがコンピューターに出会った時の話を聞かせてください。そこからどうやってClickHouseが産まれたのかを辿りたいと思います。
インタビュー後に撮影した写真には日本法人社長の金子毅氏(左)と最高技術責任者である北迫清訓氏(右)も参加している。金子氏はマイクロソフト、レッドハットからNutanixを経てClickHouseに入社、北迫氏はAWSからGoogle Cloudを経て2026年3月にClickHouseに入社したベテランである。
Milovidov:私がコンピューターに触れたのは上に二人いる兄の存在が大きいですね。父親が家にホームコンピューターを買ってきたというのが最初ですが、それは当時のソビエト連邦では比較的まれな例だったと思います。最初は兄が簡単なゲームで遊んでいたんですが、ゲームを実行するには素朴過ぎるマシンだったので、私はBasicの命令を入れてどう動くかを試していたというのが最初のコンピューターとの出会いです。当時は雑誌に掲載されているBasicのコードをキーボードから入力して動かすかミニカセットに入ったゲームを読み込んで実行するという程度でした。最初は兄たちがゲームをするのを見ていたんですが、当時から紙にゲームの画面を描いたりして想像上のゲームを頭の中で作っていたという感じです。その後に父がIBM PCを買ってきました。そのPCは兄たちのお気に入りで、私にはBasicの教本を買ってくれました。そこから自分で簡単なゲームを作るというようにしてコンピューターに親しんでいったという感じです。
もう少し早送りしてどの辺からClickHouseのアイデアが産まれたのかを教えてください。どのようにしてプロフェッショナルなプログラマーになったんですか?
Milovidov:私が中学生の頃には学校にプログラミングのクラスがあり、最初はそこでPascalを勉強しました。それから暇な時間をプログラミングの課題をこなしたりゲームを作ったりしていました。そこで学んだことはすでに時代遅れにはなっていますが、大事なことを学びましたね。それはプログラミングでも数学でも同じですが、自分で学ぶ、誰かから教えられて習得するのではなく自分の意志で学ぶということを実行するということでした。
それから父にC言語の本を買ってくれとお願いして手に入れましたが、それはひどい内容の本でした。まぁ、それは私にとってという意味ですが。その時はC言語のことが良く理解できずに終わりました。その結果、Basicでは実装できていた簡単なゲームすらC言語ではプログラムできなかったということになりました。しかしプログラムで仕事をしたいと思ったので、いくつかの会社に応募してプロフェッショナルな開発者として仕事をしようと試みました。同時にオンラインフォーラムの管理者としてゲーム開発者のコミュニティに参加し始めました。当時は会議室にオンラインジョークのコードを仕込んだりしてましたね。その頃はPHPでプログラミングをしていましたから、PHPプログラマーのポジションを探していました。ゲームにも関心があったのでゲーム会社で働けると良いなとは思っていました。でも実際に就職してわかったのは仕事ではPHPを使い、趣味のゲーム開発ではC++を使うことになるということです。
そして仕事の中でPHPとデータベースを初めてちゃんと使ったという経験をしました。その時はMySQLでした。そして広告のアクセス分析のシステム開発に取り組みました。開発チームは少人数で私は入社直後だったんですが、入社した2日目に上司が2週間の休暇に行くという状況だったんです。でも上司が休暇に出かけてすぐにシステムが壊れてしまいました。その時にこの2週間の上司不在の時にまったく新しいシステムを作ってみようという野心的なアイデアが産まれたのです。最初のアイデアはこの3ティアーアプリケーションをすべてC++で書き直すというものでしたが、実際に検討してみるとデータをパースして集約して分析するという複雑な仕組みになっていて、単に書き直すだけでは終わらないことがわかりました。
中学生の時から最初の仕事までを振り返ってもらいましたが、そのアクセス分析のシステムの時にアプリケーションではなくデータの構造が問題であるということに気付いたということですね。
Milovidov:そうです。なので分析に必要な処理とそれに適したデータ構造を検討し始めたということです。そしてそれは単に広告のためのアクセス分析システムに留まらずに他のシステムに応用できると思ったんです。アクセス分析のシステムは無償で公開していたので、多くのフィードバックが集まりました。ユーザーがやりたい「分析」には多くのバリエーションがあるのだということを理解したタイミングでしたね。それが2008年頃だったと思います。そしてカラム指向のデータ構造が必要になって実装を始めました。その時にはWebのアクセスログに含まれるさまざまなデータ形式を効率よく処理するために圧縮のアルゴリズムを調べたりしていました。
PHPによるフロントエンドから開発の仕事を始めて、アクセス分析を深く調べる中でレコード指向のデータ構造とカラム指向のデータ構造を理解して、データ圧縮の部分まで手を拡げて開発を行っていたわけですね。
Milovidov:そうです。そしてHadoopが登場してデータ分析は一気にメジャーなアプリケーションになりました。
Hadoopの中心であるMapReduceは巨大なデータを決まった小さなチャンクに分割してKey-Valueを作り、それをReduceして集計するという発想のシステムですよね。論理的なデータの領域を無視して、とにかく分割して並列で処理を行うという素朴というか乱暴なシステムだったと思います(笑)。
Milovidov:そうですね、ちょっと乱暴だったかもしれません。この発想は巨大なデータを確率論的な正しさの上で処理をするというシステムでした。Googleが2006年に論文として発表した時はSmart Reviewsという彼らの広告分析のアプリケーションの解説に過ぎないものでしたが、巨大なデータをこれも巨大なクラスターで分散処理をするという意味においては大きな価値のあるものでした。その点ではGoogleは賞賛されるべきだと思います。分析のために巨大なデータを整理するというアイデアは、この頃から実装されていたということです。私も分析のためのデータを処理するサーバーの検討をしていました。それは当時OLAPサーバーと名付けられていたと思います。データを集約するためのシステム、それはMySQLをリプレースすることになると考えました。当時は50テラバイトのデータをMySQLで処理するというのは難しかったんです。
そしてログを高速に処理するLSM-tree(Log Structured Merge Tree)を発見しました。そこでカラム指向のデータベースと高速なデータ書き込みを可能にするテクノロジーを組み合わせて新しいソフトウェアが可能かを検証したいと思ったんです。高速に処理を行うためにはストレージに書き込むのではなくメモリー上にデータを置いて処理するという発想ですね。それは実際にはApache Arrowと同じ発想だったと思います。
Apache Arrowが登場するよりも前に同じアイデアを持っていたということですね。
Milovidov:そうです。それはApache Arrowのドキュメントを読んで確信しました。同じアイデアを持っていた人たちがいると。それはMarketoのソリューションにも見付けることができました。同じ発想でほぼ同時期に実装を行っていた人たちがいたわけです。そのアイデアを形にするプロセスで、多くの発見や実験を行いました。それが今でも役に立っているとは思います。その当時の仕事から学んだことは、リアルタイムで結果を出さないといけないシステムが存在するということです。
これまでのバッチで分析をするというのではなくリアルタイムで分析結果を返すシステムが必要だということですか。
Milovidov:そうです。5分間のユーザーの行動から分析を行い、それを即座に返すことができなければその5分は徐々に長くなって1時間になり、それが2日になり結果としてビジネスには使えないという状態になります。なのでリアルタイムでデータ分析を行うというのは、私にとってとても重要な目標になりました。それがClickHouseのプロトタイプとなったのです。
前編はここまで。現在のClickHouseについて語る後編は以下のリンクを参照されたい。
カラム指向DBのClickHouseのCTOにインタビュー、コンピューターとの出会いから生成AIによる未来を語る(後編)
- この記事のキーワード
