repo-clean:リポジトリ肥大化診断のためのミニマルCLI

Tool

概要

repo-cleanは、リポジトリが知らず知らずのうちに肥大化する原因(ビルド成果物、キャッシュ、重複バイナリなど)を早期に発見するためのミニマルなCLIツールです。指定ディレクトリをスキャンして、閾値以上の大きなファイル、コンテンツハッシュで検出した重複ファイル、よくあるジャンクディレクトリをレポートします。端末に見やすく表示するだけでなく、CIで解析しやすいJSON形式の出力もサポートしているため、自動化チェックの一部として導入できます。軽量で高速、Goで実装されておりビルドや配布も扱いやすい設計です。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 3
  • ファイル数: 20
  • メインの言語: Go

主な特徴

  • 大容量ファイル検出: 指定した最小サイズ以上のファイルを検出して一覧化。問題箇所を即把握可能。
  • ハッシュによる重複検出: ファイル内容のハッシュを比較して重複ファイルを特定。無駄なバイナリの重複を洗い出す。
  • ジャンクディレクトリ検出: node_modules/.cache や build/ など、よくある不要フォルダを識別して報告。
  • CIフレンドリーな出力: 人間向けの端末出力に加え、機械で解析しやすいJSON出力をサポート。

技術的なポイント

repo-cleanはGoで実装されたシンプルなコマンドラインツールで、設計方針は「最小限で確実に問題を可視化する」ことにあります。実務で増えがちな肥大化要因(大きな一時ファイル、同一コンテンツの重複、不要なキャッシュやビルド成果物)をターゲットにし、スキャン結果を端末とJSONで使い分けられる構成はCIへの組み込みに適しています。

実装面では、ファイルサイズの閾値を指定するフラグ(—min-size)やJSON出力フラグ(—json)などを備え、ユーザーが必要な粒度でスキャンできるようになっています。重複検出はファイルコンテンツのハッシュを用いるアプローチで、ディスク上のパスやファイル名に依存せず実際の中身で比較するため誤検出が少ない点が利点です。Go製であることから、単一バイナリ配布やCIイメージへの組み込み、並列化によるI/O/計算の効率化などが容易であり、スキャン対象が大きくても実行時間を抑えやすい設計が取りやすい点も魅力です。

リポジトリにはMakefileやPowerShellのビルドスクリプト(build.ps1)が含まれており、ローカルビルドやCIでのビルド手順が整備されています。インストール方法としてREADMEではGo 1.21以上でのgo installコマンドが示されており、Goのエコシステムに馴染んだ開発者であれば手軽に取り扱えます。出力フォーマットや閾値設定により、開発ワークフロー(ローカルチェック、CIのPRゲート)双方で役立つツールです。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: Gitで無視するファイルの定義。ローカルビルド成果物等を除外。
  • LICENSE: ライセンスファイル(プロジェクト利用上の条件を明示)。
  • Makefile: ビルド、テスト、インストールなどの自動化ターゲット。CI用の簡単なコマンドがまとめられている可能性あり。
  • README.md: ツールの目的、使い方、インストール方法、フラグ説明(—min-size, —json など)の案内。README内のインストール例には github.com/yourname/repo-clean@latest の表記があるため、実際の所有者名(Bladiostudio)に合わせた利用方法に注意が必要。
  • build.ps1: Windows環境向けのビルドスクリプト。PowerShellでのビルド手順を含む。

…他 15 ファイル

まとめ

シンプルで導入しやすいリポジトリ肥大化検出ツール。CI組み込みに適したJSON出力を備え、日常的なレポジトリ衛生に有用です。

リポジトリ情報:

READMEの抜粋:

repo-clean

Minimal CLI to scan repositories for bloat. It exists to make oversized files and junk obvious before they stick.

Why

Repos quietly grow from build artifacts, cache folders, and duplicated binaries. This tool gives a fast, repeatable scan so you can see the worst offenders early.

Install

Go 1.21+:

go install github.com/yourname/repo-clean@latest

Usage

repo-clean scan <path>
repo-clean scan <path> --min-size 10
repo-clean scan <path> --json

Flags:

  • --m...