Skip to content

オープンソースの10年間:ステンドグラスの視点から

photo-tyler-hannan.jpeg
Tyler Hannan
2026年6月19日 · 19分で読む

ClickHouse がオープンソースになってから 10 年が経ちました。Open House San Francisco の 2 日目キーノートでは、この歩みをさらに掘り下げて振り返りました。本稿は、そのプレゼンテーションの主要スライドを取り上げながら、長文記事として再構成したものです。

オープンソースはよく「大聖堂とバザール」や「大きなテント」などに例えられます。


私たちは別の比喩を試みました。ステンドグラスです。単なる装飾としてではなく、何年にもわたる何千人もの人々の営みが、誰一人として単一の英雄譚に矮小化されることなく、世界中で実際に稼働するひとつのものへと結実していく姿を写し取るメタファーです。

stained-glass-light-lead-pieces.jpg

TL;DR

  • ステンドグラスは、オープンソースの 10 年を捉える優れた視点です。鉛の枠に支えられた無数のガラス片、光が透過して初めて意味を持つ姿、そして永く残り続けるための修復という営みそのものです。
  • cBioPortal は、そのあり方を本番環境で体現しています。クエリが数分ではなく数秒で返ることで、研究者は探索の手を止めずに済みます。
  • ClickHouse は、コントリビューターへの謝意を製品自体に組み込んで提供しています。system.contributors を使えば、普段データを検索しているのと同じエンジンでクエリできます。
  • コミュニティの歩みと製品の歩みはひとつのアパーチャー(窓口)で重なり合います。Git の履歴、GitHub 上のアクティビティ、そして製品に刻まれた謝辞は、すべて SQL で読み解くことができます。

光と鉛、そして無数のガラス片

色ガラスは所定の形に切り出されて届き、それぞれが収まるべき場所を見据えて選ばれます。金属の溝がそれらの破片を支え、混ざり合わないよう保ちます。石張りの窓枠全体がそれを抱え込み、光を室内に通します。内側から見れば、絵柄が鮮やかに浮かび上がります。通りから眺めると、まず黒い格子が目に入り、その縁に色がほのかに見える程度です。

ステンドグラスの窓は、壁にかける絵画とは異なります。それは外と内とをつなぐインターフェースであり、光がそこを透過して初めて、描かれた像が意味を持ちます。公開データセットも同じように解釈できます。どの立場に立つかによって、同一の事実であっても見え方が変わってきます。

中世ヨーロッパの壮大なゴシック教会において、窓は「光の建築」でした。ラテン語の写本を読む機会のない人々に向けて、神学や教義の物語がガラスの断片に宿されていました。窓はまさにパブリックインターフェースでした。見上げるほど高く、色彩豊かに読み取れるほど明るいものでした。ギルドはルビー色や青色の調合手法を厳重に守り抜きました。薔薇窓は誰か一人のエゴで作られたものではありません。それは一組の手の寿命を超えて受け継がれた、長期の委嘱事業でした。

gothic-rose-window.jpg

その技術は身廊にとどまりませんでした。宮殿や市庁舎、そして産業の時代へと広がっていきます。ティファニーはガラスを材料科学と工場の連携作業として扱いました。金属酸化物による玉虫色の光沢、溶融炉、ガラス片を選別して箔を巻くカット職人のチーム。これは、大聖堂の建設よりも私たちがソフトウェアを構築する姿に近いと言えます。レシピ、ツーリング、審美眼、スループットを備えながらも、遠くから視認でき、風雨に耐えるひとつの窓を作り上げるのです。

tiffany-industrial-stained-glass.jpg

ノートルダム大聖堂をご存知でしょう。2019年4月、生中継の映像の中で尖塔が崩落しました。ほんの数時間の間、8 世紀の歴史が一夜にして幕を閉じるかのように見えました。しかし、そうはなりませんでした。修復には 5 年の歳月と 34 万人の寄付者、そして何世代にもわたって使われてこなかった技術を学び直した職人たちが必要でした。ノートルダム大聖堂は 2024年12月に再開しました。薔薇窓は依然としてそこにありました。新しい鉛の枠、そして残せる限り残された古いガラス片。修復こそが、価値ある存在を長く存続させる手段なのです。

notre-dame-restoration.jpg

壁画ではなく、モザイク

何世紀もの歴史があるからこそ、講演で掲げた次の 3 つの言葉は、私たちにとって単なるスローガンではありません。

  • 壁画ではなく、モザイク:誰の手によるものかという粒度が保たれ、切り込みの跡をその目で確かめることができる。
  • 壁紙ではなく、窓:表面的なテクスチャで構造を覆い隠すのではなく、奥行きを持ち、光を透過させる。
  • 無数のカットを、ひとつの開口部で:多種多様な作業が、世界で共有されるひとつの開口部を通して視界に広がる。

これらを見失えば、幾何学模様はただ綺麗なだけのものになってしまいます。この後に続くのは、数値、時間、そして人々の参加の記録です。切り取られたヒーローの姿ではなく、窓全体の物語です。

本物の窓を透過する光: cBioPortal

メモリアル・スローン・ケタリングがんセンター(MSK)は、がんゲノミクス向けオープンインターフェースである cBioPortal を運用しています。変異、コホート、生存率、治療法などを扱っています。2011年に MSK で始まり、世界中の研究機関へと広がりました。数十万件におよぶ患者レコードと、数十億件のデータポイントを保持しています。

ボトルネックはデータの欠如ではなく、データベースの待機時間でした。以前のスタックでは、フィルタリングに 1 分以上かかることもあり、研究者たちは探索の手を止めてしまっていました。同チームは、巨大な結果セットをアプリケーション側に取得するのをやめ、ClickHouse 側で SQL を使って重いフィルタリング処理を実行するように移行しました。その結果、肝心な処理経路においてポータルは約 10 倍高速化しました。エンジンが十分に高速であれば、利用者は使い続けてくれます。これこそが、窓を透過する光の意味するところです。

cbioportal-study-view.png

MSK での取り組みの詳細は、「メモリアル・スローン・ケタリングがんセンターががん研究を加速するためにClickHouseを活用した方法」で詳しく取り上げています。要約すれば、これは Git 履歴のグラフなどではなく、医療分野で実際に稼働している本番プロダクトの話だということです。

まずアナリティクスが高速である必要がありました。コホート、フィルター、集計がすばやく返る状態です。それができて初めて、あらゆる質問にいちいち手間をかけることなく、上層にチャットインターフェースを追加できるようになります。自然言語は SQL や cBioPortal のグラフに取って代わるものではありません。平易な言葉で問いかけ、信頼できるツールで結果を確認するという、もうひとつの入り口にすぎません。スキーマ、フィルター、コホートに実際に何が含まれているかは依然として重要です。その基盤となるエンジンは、すでに数分ではなく数秒で応答しています。

cbioportal-ask-the-data.png

ClickHouse が ClickHouse を読み解く

ステンドグラスは私たちの視座でした。このセクションで扱うのは私たちの観測機器です。Git の生データ、GitHub の公開アーカイブにあるアクティビティ、そしてバイナリ内に組み込まれた氏名です。世界中で稼働しているのと同じツールを使って、この窓にクエリを投げます。

プロダクトの物語とコミュニティの物語は、ひとつの開口部を共有しています。

デモの構成

ここに裏でスプレッドシートを隠し持つような手品は一切ありません。3 つのデータソースと、1 つのエンジンです。

ソース 内容 取り込み方法
Git 履歴 ClickHouse/ClickHouse のベアクローンから取得したコミットごとの 1 行 INSERT ... FORMAT JSONEachRow で ClickHouse Cloud にロード
GH Archive 1 つのリポジトリにおける 1 か月分の時間別ファイルからなる GitHub 公開イベント github_events テーブルにロード
system.contributors 接続先ビルド内に保持されている謝辞の行 製品本体に同梱

3 つの要素すべてに対して同じエンジンを使用しています。うち 2 つは私たちがロードしたもので、1 つはバイナリに同梱されていたものです。

時間経過による個別のコントリビューター数

累積曲線におけるステップは、それぞれが初登場の瞬間を示しています。リポジトリの歴史に初めて加わった作者であり、時間が経つにつれて積み重なっていきます。この曲線は毎週のスループットではなく、立ち上げ当初からのユニークな作業者の数をカウントしています。新機能の開発に貢献し、ドキュメントや README を通じて鉛の枠を微調整し、私たちが作り上げたものの輪郭を形作ってきた職人たちです。

distinct-contributors-cumulative.png

公開ログにおける動き

同じリポジトリを、別のソースから見てみましょう。2025年4月だけでも、ClickHouse/ClickHouse には約 11,000 件の公開イベントがありました。コメントが最も多く、続いてプッシュとプルリクエスト、レビュー、そして新規 Issue と並びます。これは GitHub 全体ではなく、1 つのリポジトリの 1 か月分のデータです。キャプションに定義された期間における、人々の参加の動きです。

github-archive-events-april-2025.png

1 つのカウンターと、高いクローズ率

GitHub では、Issue とプルリクエストの両方に単一のカウンターが使われます。2026年3月19日、ClickHouse/ClickHouse のそのカウンターは 100,000 を突破しました。これはバグ報告、機能リクエスト、変更提案など、公開台帳の全体を表しています。従業員も外部のコントリビューターも、同じ階段を共有しています。

Issue の数が多いこと自体は問題ではありません。人々がプロジェクトの扉に仕事を運んできてくれていることを意味します。重要なのは、扉を叩かれた後に何が起きるかです。講演の時点で、Issue の 83% が解決され(27,600 件中 23,016 件)、プルリクエストの 99% がクローズされていました(71,284 件中 70,362 件)。これは、開発スピードを保ちながらもプロジェクトの全体像が破綻せずに把握できていることを示す数値です。

github-counter-closure-rates.png

規模感を把握するために比較すると、MySQL の合算カウンターはおよそ 120,000 件前後です。LLVM は約 187,000 件で、Issue のクローズ率はおよそ 70% です。PostgreSQL は現在も活動の多くをメーリングリスト上で行っており、アーカイブと議論するのが苦でなければ立派なバグトラッカーとして機能します。私たちはこうしたプロジェクトと同じ土俵に立っています。解決を伴わないスループットは単なるノイズにすぎないため、スクリーンショットと並べてクローズ率を明示しています。

system.contributors

system.* の下を見ると、ほとんどのテーブルはパーツ、設定、ハウスキーピング処理といったマシンに関する状態を表しています。一方、system.contributors は人についての情報を教えてくれます。マーケティングページのフッターではなく、テーブルの行として名前が並びます。エンジンと同じ成果物の中に同梱されているため、「誰がこれを作ったのか?」と尋ねるとき、CMS からなんとなく情報を取得してくるわけではありません。確かな実体をクエリしているのです。

ClickHouse が最初にオープンソース化されたとき、Alexey Milovidov はある情景を思い描いていました。誰かが面接に臨み、「私の知っているソフトウェアを作ったことはありますか?」と尋ねられた際、「ClickHouse で私の名前をクエリしてみてください」と答えられる日が来ることを。このテーブルが存在し、私たちが更新し続けているのはそのためです。世界中で実際に動いているのと同じツールを使って読み取れる形で、製品の中に謝意が同梱されています。

Open House San Francisco で提示したビルドでは、その数は 2,632 でした。

SELECT count() FROM system.contributors

それぞれの行は、バイナリにコードを組み込むまでの経路に携わった人々を表しています。リストは膨大ですが有限であり、だからこそ重みを持って響きます。これは、顧客のためにクエリする対象とまったく同じ種類のオブジェクトです。ここではログだけでなく、人々の労苦に対しても同じ透明性が保たれていることを感じていただきたいと考えています。

キーノートのために誰かが手作業でこのリストを編集したわけではありません。プロジェクト自体の台帳記録、つまり Git が記憶しているパッチやマージの長い軌跡から引き継がれ、各バージョンに同梱されるリストへとまとめられています。ビルドが切られると、そのビルドが備える謝辞のセットがディスクに出力されます。同一バージョンを使用している 2 台のノート PC は、まったく同じ行を読み取ります。これは関係者だけが見られるプライベートクラウドではなく、バイナリデータとともに固定化された謝意としてのコミュニティの姿です。

このテーブルには継ぎ目があります。コードへのすべての貢献が同じ形で現れるわけではなく、スキーマはどうしても製品として出荷されるコードを優遇してしまいます。しかし、ガラスが一枚板で鋳造されたかのように取り繕うくらいなら、私たちは率直な継ぎ目をそのままお見せしたいと考えます。

リリース間での新しいコントリビューターの確認

スライドに名前がびっしり並んでいても判読できません。SQL を使えば、その差分を容易に読み解くことができます。2 つのバージョンからコントリビューターのリストをエクスポートし、差分を抽出します。

sudo docker run --rm clickhouse/clickhouse-server:26.5 clickhouse-local \
  --query "SELECT * FROM system.contributors ORDER BY name" \
  > contributors_26.5.txt

./clickhouse local --query "
  SELECT arrayStringConcat(groupArray(line), ', ')
  FROM file('contributors_26.5.txt', LineAsString)
  WHERE line NOT IN (SELECT * FROM file('contributors_25.5.txt', LineAsString))
  FORMAT TSVRaw
"

あるいは、自分の名前がすでに載っているか確認することもできます。

SELECT * FROM system.contributors WHERE name ILIKE '%You%'

次はあなたの番かもしれません。

Champions: すでに公開されている活動を、より鮮明な鉛枠で際立たせる

グラフは活動の勢いを示しました。コントリビューターテーブルは、製品に組み込まれた名前を示しました。そしてクエリは、その場にいる人々へと視線を向け直しました。

ClickHouse を前進させているのはコントリビューターです。人々はパッチとして、スレッドとして、講演として、ドキュメントとして、あるいは真夜中の Slack で難問に答える人として姿を現します。どれひとつとして、バイナリに対する副次的な活動などではありません。それらすべてが物語そのものです。

一部のコントリビューターは Champions に就任します。公認の教育者、執筆者、アドボケイトです。Champions はコントリビューションの代わりになるものではありません。すでに公に行われている活動を、より鮮明な鉛の枠で際立たせるためのものです。私たちは公に表明しています。私たちはこの知見の共有を認識しており、それがより遠くまで届くよう支援できると。ガラスはすでにそこにありました。Champions は、どの破片が光を捉えているかを指し示し、周囲の人々がそれらをより早く見つけられるようにするためのフレームなのです。

このプログラムは、実際の作業が行われている現場に寄り添っています。派手な発表よりも本人の意志が大切であるため、名前は本人の同意が得られた場所にのみ掲載されます。Champions に興味がある方は、clickhouse.com/community でプログラムの詳細をご確認ください。日々の Issue、チャット、プルリクエストでの活動に加えて、イベントへの招待、キャリアの認知度向上、コミュニティでの表彰、各種グッズなどの特典が用意されています。

10年が経ち、今も光は通り抜けなければならない

ClickHouse はコミュニティであり、クエリ可能なデータベースでもあります。それらはひとつのステンドグラスとして結びついています。多様な作業のカットが集まり、インフラストラクチャという枠組みによって支えられ、外の世界の光の中で実際に稼働することで意味を持ちます。

オープンソースのクレジットが本物なのか、単なるポーズなのか疑問に思ったことがあるなら、ぜひクエリを実行してみてください。名前はバイナリの中にあります。Issue やプルリクエストは公開ログに記録されています。MSK の研究者たちは数秒でコホートをフィルタリングしています。修復は日常的な営みです。光は今も、そこを通り抜けなければなりません。


この記事をシェア

  • Y Combinator icon
  • X icon
  • Bluesky icon
  • Facebook icon
  • LinkedIn icon

Subscribe to our newsletter

Stay informed on feature releases, product roadmap, support, and cloud offerings!

Follow us

XBlueskySlackGithubTelegramMeetupRSS