TreeTrek — Gitリポジトリをブラウザで閲覧できる軽量PHPビューアの使い方

元記事を読む
キュレーターコメント

GitHubに頼らず自前サーバーでコードを公開したい人に刺さる軽量ツール。PHP単体で動くシンプルさが潔く、Git内部構造を学ぶ入門教材としても面白い一本。

概要

「GitHubなしで自分のリポジトリをWeb公開したい」 と思ったことはないだろうか。VPSやレンタルサーバーにコードを置いているけれど、ブラウザからサクッとファイルツリーを眺めたい——そんなニーズに刺さるOSSが TreeTrek だ。

TreeTrekとは何か

TreeTrekは、生のGitリポジトリ(bare repo)を直接読み取り、Webブラウザ上でファイルツリーとコンテンツを表示するPHP製のビューアアプリだ。GitHubやGitLabのような重厚なプラットフォームではなく、シンプルに「.gitディレクトリを覗く」ことに特化している。依存ライブラリも最小限で、PHPが動くサーバーさえあれば動作する。

リポジトリ構造を見ると、model/pages/render/styles/ という明確なレイヤー分離が見て取れる。Gitオブジェクト(blob/tree/commit)を読み取るロジックをモデル層に集約し、HTMLレンダリングを分離するシンプルなMVC的設計だ。

技術的な仕組み

Gitリポジトリは本質的にはファイルシステム上のオブジェクトDBだ。TreeTrekはPHPから直接 .git/objects/ を解析し、以下のような流れでコンテンツを返す:

  • HEAD → ブランチ参照 → コミットオブジェクト を辿ってルートtreeを特定
  • treeオブジェクト を再帰的に展開してファイル一覧を構築
  • blobオブジェクト をデコードしてファイル本文を表示

データベース不要・外部APIなし。git コマンドすら不要で、Pure PHPでオブジェクトを読む設計になっているとみられる(Config.php で bare リポジトリパスを指定する形式)。

セルフホストして使う方法

公開されている INSTALL.md に従えばセットアップは数分で完了するはずだ。基本的な手順はこうなる:

# bare リポジトリを用意(例)
git clone --bare https://github.com/yourname/yourrepo.git /var/repos/yourrepo.git

# TreeTrek をWebサーバーのドキュメントルートに配置
git clone https://repo.autonoma.ca/treetrek /var/www/treetrek

# Config.php でリポジトリパスを指定
# → ブラウザで http://yourserver/treetrek にアクセスするだけ

ApacheやNginxでPHPが動いていれば追加設定はほぼ不要。Lolipopやさくらのレンタルサーバーでもそのまま動作するはずで、コマンドラインが使えない環境でもFTPでファイルを置くだけというお手軽さが魅力だ。

こんな用途に刺さる

  • プライベートサーバーのコードをチームや顧客に読み取り専用で公開したい
  • Gitea/Giteaほどの機能は要らないが、ファイルツリーだけ見せたい
  • Git内部の仕組みを学ぶ教材として、PHPコードを読んで理解したい
  • GitHub Pagesが使えないオンプレ環境での軽量代替

Hacker Newsへの投稿時点ではポイント・コメント数ともに少なく、まだ知名度は低い。しかしそのシンプルさは、過剰な機能を嫌う「Unix哲学」的なエンジニアには刺さるプロジェクトだと思う。ソースコード自体もTreeTrek上でブラウズできる点が粋で、ドッグフーディングとして完璧なデモになっている。