Jujutsu (jj) が注目を集める理由 — Git互換の次世代バージョン管理システムを徹底解説
はじめに
HNで413ポイントを獲得し、大きな話題となっているバージョン管理システムがある。Jujutsu(CLI名: jj) だ。Gitと完全互換でありながら、ステージングエリアの廃止・コンフリクトの遅延解決・全操作の取り消しといった革新的な設計を持つ。この記事では、jjがなぜ「Gitの次」として注目されているのか、その技術的な仕組みと実務への影響を解説する。
Jujutsuとは何か — 開発背景と現在地
Jujutsuは、GoogleのエンジニアMartin von Zweigbergkが開発した分散型バージョン管理システムだ。Rustで実装されており、GitHubスターは2.8万を超える。最新バージョンはv0.40.0(2026年4月2日リリース)。
最大の特徴はGitリポジトリをそのままストレージバックエンドとして使用する点だ。jjで作成したコミットは通常のGitコミットとして保存されるため、チームメイトがjjを使っていなくても問題ない。既存のGitリポジトリで jj git init --colocate を実行するだけで、すぐにjjを使い始められる。
MercurialとGitの長所を統合する設計思想を掲げており、「よりシンプルかつ使いやすく、それでいてより強力」を目指している。Steve Klabnikによる公式チュートリアルが公開されたことで、改めてコミュニティの注目を集めた形だ。
Gitの「当たり前」を覆す3つの設計
1. ワーキングコピー=コミット
jjの最も根本的な設計変更は、ワーキングコピーそのものがコミットであるという点だ。ファイルを編集すると、その変更は自動的に現在のコミットに反映される。git add に相当するステージング操作は存在しない。
「ステージングがないと、コミットを論理的に分割できないのでは?」という疑問が浮かぶだろう。jjでは逆のアプローチを取る。まず全ての変更をコミットし、その後 jj split で外科的に分割する。完全なコンテキストを保持した状態で分割できるため、Gitの git add -p よりも柔軟で失敗しにくい。
この設計により、「ワーキングコピーがダーティだからコマンドが失敗する」という状況が原理的に発生しない。git stash も不要になる。
2. コンフリクトはコミットの一部
Gitではマージコンフリクトが発生すると、その場で解決するまで他の作業に進めない。jjのアプローチは根本的に異なる。コンフリクト状態がコミットグラフにファーストクラスオブジェクトとして保存されるのだ。
つまり、コンフリクトが発生しても別タスクに切り替え、後から戻って解決できる。コンフリクトマーカーではなく論理的な表現として保存されるため、一度解決すれば、その解決内容が子孫コミットに自動的に伝播する。大規模なリベース作業で同じコンフリクトを何度も解決する苦痛から解放される。
3. 全操作が取り消し可能
jjはリポジトリに対する全ての操作をオペレーションログに記録する。Gitのreflogに似ているが、HEADポインタの履歴だけでなくリポジトリ全体の状態を記録する点が決定的に異なる。
jj undo 一つで直前の操作を取り消せる。リベースに失敗しても、ブランチを誤って削除しても、一瞬で元に戻せる。Gitで git reflog を駆使して復旧作業をした経験がある人なら、この安心感の大きさがわかるだろう。
AI時代のワークフローとの親和性
2026年現在、Claude CodeやCopilotといったAIエージェントがコードを自動生成する場面が増えている。AIが生成した大量の変更を人間がレビューし、論理的なコミット単位に整理し直すワークフローの重要性は増す一方だ。
jjの jj split や jj squash による柔軟な履歴操作は、まさにこのユースケースに適している。AIが一気に生成した変更を、後から意味のある単位に分割・再構成できる。自動リベース機能により、親コミットを修正すると子コミットが自動的に更新されるため、履歴の整理がはるかに容易になる。
また、jj にはRevsetsと呼ばれるコミット選択のためのクエリ言語がある。SQLライクな式でコミットの集合を柔軟に指定でき、複雑な履歴操作をプログラマブルに実行できる。AIとの協調開発で増大するコミット量に対処する強力な武器だ。
導入の現実 — 制限事項と注意点
jjには注意すべき制限もある。
- IDEサポートが限定的: VS CodeやJetBrains系のGitインテグレーションはjjを直接サポートしていない。Gitバックエンドを使っているため間接的には動作するが、jj固有の機能をIDEから操作することはできない
- GitHub PRワークフロー: ブランチベースのPR作成には
jj git pushでブックマーク(jjにおけるブランチ相当)をプッシュする必要がある。Gitほどシームレスではない - 学習コスト: ステージングの廃止やワーキングコピー=コミットという概念は、Git経験者にとってパラダイムシフトとなる。慣れるまでの違和感は避けられない
- 「Google公式サポート製品ではない」: Google内部で使われているが、公式サポートはコミュニティベースである
現時点では個人開発や小規模チームでの導入が現実的だ。チーム全員がjjを使う必要はなく、一人だけjjを使いながらGitリポジトリを共有することも可能なため、段階的な導入がしやすい設計になっている。
まとめ
- Jujutsu (jj) はGit互換の次世代VCSで、ステージングの廃止・コンフリクトの遅延解決・全操作の取り消しという3つの設計革新を持つ
- Rustで実装され、GitHubスター2.8万超、v0.40.0まで開発が進んでいる
- AI時代の「大量変更を後から整理する」ワークフローとの親和性が高い
- IDE統合やGitHub連携にはまだ課題があるが、Git互換のため段階的に試せる
Gitの基本設計が生まれてから20年以上が経つ。jjは「Gitを置き換える」のではなく「Gitの上でより良い体験を提供する」というアプローチで、バージョン管理の次の一歩を示している。