Gitじゃないバージョン管理、Jujutsuを使ってみた

author:

sion908

date:

2026/09/08

event:

YokaTech #1

はじめに

QRコードを表示しながら、スライドの公開先を案内する。

https://slide.sion908.tech/

ここでスライドは公開しています

(ちなみに自分のポートフォリオもここから飛べます)

お前誰よ

紫苑

  • Sion908(X、GitHub など) [1]

  • 生息地(長崎、ぐんまー)

  • 長崎大学大学院工学研究科電気電子工学 修了

  • 株式会社デザイニウム

  • Webアプリケーション、3DCG、写真

  • 高校教員免許(数学、工業)

  • NaITE、UE長崎、JAWS-UG長崎

株式会社デザイニウム

  • 福島県会津若松市

  • MaaS,地域通貨を含む、都市OSの一端や、除雪クラウドなどのDX化などを行う

  • 東京の拠点では、ARやXRも行っている

corp_home

NaITE (長崎IT技術者会)

  • 長崎になんらかの縁や関わり、興味があるIT技術者を中心とした技術コミュニティ

  • ソフトウェア品質技術やソフトウェア開発技術の話題を中心に活動

  • 勉強会, もくもく会, QDG(Software Quality and Development Gathering), ToCセミナー

  • https://nagasaki-it-engineers.connpass.com/

  • 次回イベント: 2026.10.16(金) NaITE LT会 vol.3 〜話す、聞く、深める〜

JAWS-UG 長崎

  • Amazon Web Services(AWS)のユーザーグループ

  • AWSに興味がある方、初心者からエキスパートまで幅広い層が集まるコミュニティ

  • 基礎的な内容から実践的な活用まで、参加者同士で知見を共有

  • Discordサーバーで継続的な交流

  • 次回イベント: 2026/09/16(水) BuilderCards Naight

  • Webサイト: https://jawsug-nagasaki.connpass.com/

UE長崎

  • Unreal Engineと3D表現に興味を持つ人たちの長崎発クリエイティブ・コミュニティ

  • 「島を繋ぎ、長崎を一つのクリエイティブ・ギルドへ」

  • UEやメタバース of 3D表現の技術を使って、長崎の島々をつなぐ

  • Webサイト: https://ue-ngs.sion908.tech

  • 次回イベント: 2026.09.12(土) もくもく会 in AGORA 出島

今日はありがとうございます

自分も長崎でエンジニアのコミュニティがないということで、LT会などをやってました

アンラーニング

  • 過去に正しかったやり方を、「今も本当に正しいのか?」と問い直すこと

claudeばかり、codexばかり...

セレンディピティ(Serendipity)

  • 何かを探したり行動したりしている途中で、当初は狙っていなかった価値ある発見に出会うこと

単なるラッキーとは少し違います。重要なのは、偶然に出会ったものの価値に気づけることです。

Jujutsu(jj)

Gitと連携して使える、別のバージョン管理システム

今日は、jjを使っていて便利だと感じた「戻りやすさ」だけ紹介します。

SoftWareDesignにも取り上げられていました。

最近の開発

AIにコードを書いてもらうと、変更と試行錯誤が増えた

  • 何パターンか試す

  • 変更量が思ったより大きい

  • 「さっきの状態に戻したい」が起きる

でも、コミットは後回しになりがち

Gitでありがちなこと

  • まだ途中だからコミットしない

  • AIの変更を確認してからにする

  • やっぱり前の状態に戻したい

そのとき思うこと

  • どこまで戻せばいい?

  • さっきの状態は残っている?

  • 触るのが少し怖い

Jujutsuって?

Gitと連携して使える、別のバージョン管理システム

日本語の呪術からインスピレーションを得たそうです。

  • コマンド名は jj

  • Gitリポジトリをバックエンドにできる

  • GitHubを使うチームでも、自分だけjjで作業できる

作業中の状態も履歴にある

jjでは、作業コピーがコミットとして扱われます

$ jj log
@  zuknkrqq sion908@example.com  99d8bddc
│  hello jj
◆  zzzzzzzz root() 00000000
  • @ が、いま編集している作業コピー

  • jjコマンド実行時に作業コピーの変更がスナップショットされる

  • 「コミットする前だから何も残っていない」が起きにくい

操作そのものにも履歴がある

$ jj op log -n 3
@  14d44624dfa0  now  new empty commit
○  4c79e66c77e9  now  snapshot working copy
○  288fea96c31b  now  describe commit
  • ファイルの履歴だけではない

  • jjに対して何をしたかも見える

  • 間違えた操作を追いやすい

間違えたら jj undo

$ jj new
# あ、まだ新しい作業を始めるつもりではなかった
$ jj undo
  • 直前の操作を戻せる

  • 操作の履歴は jj op log で確認できる

  • 試行錯誤するときの心理的コストが下がる

Gitのチームで自分だけjjを使える?

使えます。

  • チームはこれまでどおりGitとGitHubを使う

  • 自分のローカル作業だけjjにする

  • pushしたコミットは、他の人には通常のGitコミットとして見える

  • ローカルでGitとjjの変更操作を混ぜすぎないのが安全

実際には、こういう作業が多い

PRを出して、レビューで修正する

PRを出す

jj git fetch
jj new main -m "feat: add login"
# ファイルを編集
jj bookmark create feat/login
jj git push -b feat/login

レビューで直す

jj edit feat/login
# ファイルを修正
jj git push
  • git add は不要

  • bookmarkは、修正したコミットに追従する

  • GitHub上では、いつものPRとして扱える

まとめ

  • AIで変更と試行錯誤が増えた

  • だから「戻りやすい」ことがうれしい

  • jjはGitと連携しながら、個人の作業を楽にできる

参考