メインコンテンツへスキップ
ClickHouse は Linux、FreeBSD、macOS でビルドできます。 Windows を使用している場合でも、Linux が動作する仮想マシン上で ClickHouse をビルドできます。たとえば、Ubuntu を実行する VirtualBox などです。

GitHub でリポジトリを作成する

ClickHouse の開発を始めるには、GitHub アカウントが必要です。 また、ローカルで SSH 鍵を生成し (まだ持っていない場合) 、公開鍵を GitHub にアップロードしてください。これはパッチを提供するための前提条件です。 次に、右上隅にある “fork” ボタンをクリックして、ClickHouse リポジトリ を自分のアカウントにフォークします。 変更を提供するには、たとえば issue の修正や機能追加を行う場合、まずフォーク内のブランチに変更をコミットし、その後、変更内容をメインリポジトリに対する “プルリクエスト” として作成します。 Git リポジトリを扱うには、Git をインストールしてください。たとえば Ubuntu では、次を実行します。
Git のチートシートはこちらで確認できます。 詳細な Git マニュアルはこちらで確認できます。

開発マシンにリポジトリをクローンする

まず、作業用マシンにソースファイルをダウンロードします。つまり、リポジトリをクローンします。
このコマンドにより、ソースコード、テスト、その他のファイルを含む ClickHouse/ ディレクトリが作成されます。 URL の後ろにチェックアウト先として任意のディレクトリを指定できますが、このパスには空白文字を含めないことが重要です。空白文字が含まれていると、後でビルドが失敗する可能性があります。 ClickHouse の Git リポジトリでは、3rd party libraries を取り込むためにサブモジュールを使用しています。 サブモジュールはデフォルトではチェックアウトされません。 次のいずれかを実行できます
  • git clone--recurse-submodules オプション付きで実行する
  • git clone--recurse-submodules なしで実行した場合は、git submodule update --init --jobs <N> を実行して、すべてのサブモジュールを明示的にチェックアウトする (<N> には、たとえばダウンロードを並列化するために 12 を指定できます) 。
  • git clone--recurse-submodules なしで実行し、容量を節約するためにサブモジュール内の履歴を省く shallow サブモジュールチェックアウトを使用したい場合は、./contrib/update-submodules.sh を実行する。この方法は CI で使われていますが、サブモジュールの操作が不便になり、動作も遅くなるため、ローカル開発には推奨されません。
Git サブモジュールの状態を確認するには、git submodule status を実行します。 次のエラーメッセージが表示された場合
GitHub に接続するための SSH キーが見つかりません。 これらのキーは通常 ~/.ssh にあります。 SSH キーを利用するには、GitHub の設定でアップロードする必要があります。 HTTPS 経由でリポジトリをクローンすることもできます。
ただし、この方法では変更内容をサーバーに送信できません。 とはいえ、一時的にはこのまま使い、後で SSH キーを追加してから、git remote コマンドでリポジトリのリモートアドレスを置き換えることができます。 元の ClickHouse リポジトリのアドレスをローカルリポジトリに追加して、そこから更新をプルすることもできます:
このコマンドを正常に実行すると、git pull upstream master を実行して、ClickHouse のメインリポジトリから更新を取り込めるようになります。
git push をそのまま使わないでください。誤ったリモートやブランチに push してしまうおそれがあります。 代わりに、git push origin my_branch_name のように、リモート名とブランチ名を明示的に指定することをおすすめします。

コードを書く

以下に、ClickHouse 向けのコードを書く際に役立つクイックリンクをいくつか示します。

IDE

Visual Studio CodeNeovim は、これまで ClickHouse の開発で特に使いやすかった 2 つの選択肢です。VS Code を使っている場合は、IntelliSense の代わりに、より高いパフォーマンスを発揮する clangd 拡張機能 の使用をおすすめします。 CLion も優れた選択肢です。ただし、ClickHouse のような大規模プロジェクトでは動作が遅くなることがあります。CLion を使用する際は、次の点に注意してください。
  • CLion は自動的に build パスを作成し、ビルドタイプに debug を選択します
  • 使用される CMake は、ユーザーがインストールしたものではなく、CLion で指定されたバージョンです
  • CLion は ninja ではなく make を使ってビルドタスクを実行します (これは通常の動作です)
このほか、Sublime TextQt CreatorKate も利用できます。

プルリクエストを作成する

GitHub の UI で、自分のフォーク先リポジトリに移動します。 ブランチで開発していた場合は、そのブランチを選択する必要があります。 画面上に “Pull request” ボタンがあります。 つまり、これは「自分の変更をメインリポジトリに取り込んでもらうためのリクエストを作成する」ということです。 作業がまだ完了していなくても、プルリクエストは作成できます。 その場合は、タイトルの先頭に “WIP” (work in progress) を付けてください。これは後で変更できます。 これは、共同レビューや変更内容の議論を進めるのに役立つほか、利用可能なすべてのテストを実行するためにも有用です。 変更内容の簡単な説明を必ず記載してください。これは後で release changelog の生成に使用されます。 ClickHouse の社員があなたの PR に “can be tested” タグを付けると、すぐにテストが開始されます。 最初のいくつかのチェック (たとえば code style) の結果は、数分以内に返ってきます。 ビルドチェックの結果は 30 分以内に届きます。 主要なテスト一式の結果は 1 時間以内に返ってきます。 システムは、あなたのプルリクエストごとに ClickHouse の binary build を個別に用意します。 これらのビルドを取得するには、チェック一覧の “Builds” エントリの横にある “Details” リンクをクリックします。 そこには、ビルド済みの ClickHouse .deb パッケージへの直接リンクがあります。必要であれば、これを production サーバーにデプロイすることもできます。

ドキュメントの作成

新機能を追加するすべてのプルリクエストには、適切なドキュメントを必ず添付してください。 ドキュメントの変更内容をプレビューしたい場合は、ドキュメントページをローカルでビルドする手順を こちら の README.md ファイルで確認できます。 ClickHouse に新しい関数を追加する場合は、以下のテンプレートを参考にしてください。

テストデータの使用

ClickHouseの開発では、現実に近いデータセットを読み込む必要が生じることがよくあります。 これは、特に性能テストでは重要です。 特に用意した、匿名化済みのweb analyticsデータセットを利用できます。 これには、追加で約3GBの空きディスク容量が必要です。
clickhouse-client では:
データをインポートします。
最終更新日 2026年7月3日