「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上でブラウズできる点が粋で、ドッグフーディングとして完璧なデモになっている。