62
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Git の歴史を映画のように再生する gitlogue を作りました

Last updated at Posted at 2025-11-23

はじめに

最近 Omarchy を導入したり、r/unixporn を眺めていて、ターミナルスクリーンセーバーの存在を知りました。
cbonsaiasciiquariumtarts など、ターミナルを彩る様々なツールがあります。

そのうちなにか自分で作ってみたいと思い、以前 GitType を作った経験から、 Git のコミットを題材にしたスクリーンセーバーを実装することにしました。

そうして完成したのが gitlogue です。
Git のコミット履歴をシネマティックなアニメーションとして再生する CLI ツールです。

GIF

demo2.gif

スクショ

screenshot-editor.png

特徴

  • 🎬 コミットをアニメーション再生
  • 🌳 プロジェクトのファイルツリー
  • 🎨 Tree-sitter によるシンタックスハイライト*
  • 🖥️ スクリーンセーバー
  • 🎭 9 種類のテーマ

インストール

ワンライナー (推奨)

curl -fsSL https://raw.githubusercontent.com/unhappychoice/gitlogue/main/install.sh | bash

Homebrew (macOS/Linux)

brew install unhappychoice/tap/gitlogue

Cargo

cargo install gitlogue

使い方

以下のコマンドで、スクリーンセーバーが起動します。

gitlogue

特定のコミットを表示したい場合は、コミットハッシュまたは範囲を指定します。

# 特定のコミットを再生
gitlogue --commit abc123

# 直近5コミットを再生
gitlogue --commit HEAD~5..HEAD

# 古い順に再生
gitlogue --order asc

# ループ再生
gitlogue --commit abc123 --loop

その他

# テーマを変更
gitlogue --theme dracula

# タイピング速度を調整 (文字あたりのミリ秒)
gitlogue --speed 20

# 特定のファイルパターンを無視
gitlogue --ignore "*.ipynb" --ignore "poetry.lock"

# テーマ一覧を表示
gitlogue theme list

# デフォルトテーマを設定
gitlogue theme set dracula

設定ファイル (~/.config/gitlogue/config.toml) でカスタマイズも可能です。
詳細は Configuration Guide を参照してください。

ユースケース

  • 🖥️ スクリーンセーバー — ランダムなコミットを無限再生
  • 📺 プレゼンテーション — 実際のコミット履歴をライブで再生
  • 🎬 コンテンツ制作 — VHS や asciinema でデモを録画
  • 🎓 学習用途 — コードの進化を視覚化し、学習材料として
  • 🎨 デスクトップカスタマイズ — デスクトップの彩りに

なぜ作ったか

以前作った GitType で、ratatui や tree-sitter といった TUI の技術には慣れていました。
せっかくなので、それを活かして「Git 版のスクリーンセーバー」を作ってみようと思い立ちました。

実装にあたっては、以下のような点を意識しました。

  • リアルなタイピング表現

    • 単に diff を流すのではなく、実際にコードを書いているような動きを再現。
    • カーソル移動や削除の動きも含めて、「コミットの過程」を見せる。
  • 視覚的な楽しさ

    • ターミナルスクリーンセーバーとしても使えるよう、見た目にこだわりました。
    • テーマのカスタマイズやシンタックスハイライトで、ただ眺めているだけでも楽しめるように。
  • Git との自然な統合

    • git loggit diff といった既存のワークフローを置き換えるのではなく、補完する形で。
    • 特定のコミットを指定したり、範囲を再生したりと、柔軟に使えるように。

技術

  • Rust
  • ratatui (TUI実装)
  • tree-sitter (シンタックスハイライト、26言語対応)
  • git2-rs (Git 操作)

GitType を作った経験が大いに役立ちました。
特に ratatui での TUI 実装や tree-sitter によるシンタックスハイライトの実装は、前回の知見をそのまま活かせました。
おかげで、UI のデザインやアニメーションの実装に集中できたのは大きかったです。

対応言語

Rust, TypeScript, JavaScript, Python, Go, Ruby, Swift, Kotlin, Java, PHP, C#, C, C++, Haskell, Dart, Scala, Clojure, Zig, Elixir, Erlang, HTML, CSS, JSON, Markdown, YAML, XML

リンク

関連プロジェクト

  • GitType - 自分のコードでタイピング練習ができる CLI ゲーム

おわりに

gitlogue は「ちょっと面白いかも」という軽い気持ちで作ったツールでした。

ところがリリースしてみると、Terminal Trove の Tool of The Week に選ばれたり、1200 star 以上をいただいたりと、思いがけない反響がありました。
正直なところ、そんな大層なツールだとは思っていなかったので、自分でも驚いています。

振り返ってみると、UI のデザインにこだわったのが良かったのかもしれません。
ただコミット履歴を表示するだけでなく、「見ていて楽しい」「ターミナルに置いておきたい」と思ってもらえるような見た目を目指しました。

スクリーンセーバーとして、プレゼンテーションツールとして、あるいは単に Git の履歴を眺める楽しみとして、ぜひ試してみてください。

gitlogue
62
26
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
62
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?