バンドル内でサイズを占めるモジュールを把握できる、ズーム可能なインタラクティブツリーマップを生成する webpack プラグイン兼 CLI。
Zxilly/go-size-analyzer
コンパイル済みGoバイナリのサイズをパッケージ、セクション、シンボル別に分析し、テキスト、JSON、HTML、SVG、Web、ターミナルUIで出力するCLIツール。
- スター
- 2,195
- フォーク
- 45
- 未解決の Issue
- 9
- 最終コミット
- 3 日前
これは何?
go-size-analyzerは、コンパイル済みGoバイナリのサイズが大きくなる原因を調べるツールです。ELF、Mach-O、PE、および実験的なWebAssemblyバイナリを解析し、標準ライブラリやvendor依存関係を含むパッケージと、.rodata、.gopclntab、DWARFデバッグデータなどのバイナリセクションにサイズを割り当てます。
結果はテキストの表として表示できるほか、JSON、HTML、SVGのツリーマップとして出力したり、ローカルのWebインターフェースやターミナルUIで対話的に調べたりできます。diffモードでは、2つのバイナリまたは保存済みのJSON結果を比較し、パッケージ別・セクション別の増加量を表示できます。Goのバージョンやビルド間でサイズの変化を追跡するのに便利です。
WebAssemblyビルドを使ってブラウザー上で実行することもできますが、動作はかなり遅くなるため、小さなバイナリに限って使うことが推奨されています。strip済みバイナリも解析できますが、精度が低くなる場合があります。
主な機能
- 01ELF、Mach-O、PE、および実験的なWebAssemblyバイナリを解析します。
- 02パッケージ、標準ライブラリ、vendor依存関係、セクション別にサイズを分析します。
- 03テキスト、JSON、HTML、SVGのツリーマップ形式でレポートを出力します。
- 04対話型のWebインターフェースとターミナルUIを備えています。
- 05diffモードで2つのバイナリまたは保存済みJSON結果を比較します。
ユースケース
- Go製サービスやCLIのバイナリサイズを増大させている依存関係を特定する。
- Goツールチェーンのバージョンやコミット間で、バイナリサイズの変化を追跡する。
- ビルドのサイズを示す対話型ツリーマップを、ネットワーク経由でチームメンバーと共有する。
- リリース用バイナリで、デバッグセクションやシンボルがサイズの大部分を占めていないか確認する。
クイックスタート
- 1
Goでインストール
go install github.com/Zxilly/go-size-analyzer/cmd/gsa@latest - 2
コンパイル済みのGoバイナリでWebインターフェースを起動
gsa --web golang-compiled-binary
使う前に知っておきたいこと
- AGPL-3.0ライセンス(コピーレフト)のもとで提供されており、ネットワーク経由で提供する場合、変更したソースコードの共有が求められます。
- ソースからビルドするにはGo 1.27以降が必要です。
- シンボル情報が削除されたバイナリの解析は不正確な場合があります。
- ブラウザー上のWebAssembly版はネイティブ版より大幅に低速です。
収録されている特集
トピック
よくある質問
- go-size-analyzer とは?
- コンパイル済みGoバイナリのサイズをパッケージ、セクション、シンボル別に分析し、テキスト、JSON、HTML、SVG、Web、ターミナルUIで出力するCLIツール。 go-size-analyzerは、コンパイル済みGoバイナリのサイズが大きくなる原因を調べるツールです。ELF、Mach-O、PE、および実験的なWebAssemblyバイナリを解析し、標準ライブラリやvendor依存関係を含むパッケージと、.rodata、.gopclntab、DWARFデバッグデータなどのバイナリセクションにサイズを割り当てます。
- go-size-analyzer は無料で使えますか?ライセンスは?
- go-size-analyzer は AGPL-3.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- go-size-analyzer は今もメンテナンスされていますか?
- 活発にメンテナンス中。go-size-analyzer の最終コミットは 2026年11月4日 です。
- go-size-analyzer は何に使えますか?
- Go製サービスやCLIのバイナリサイズを増大させている依存関係を特定する。 Goツールチェーンのバージョンやコミット間で、バイナリサイズの変化を追跡する。 ビルドのサイズを示す対話型ツリーマップを、ネットワーク経由でチームメンバーと共有する。 リリース用バイナリで、デバッグセクションやシンボルがサイズの大部分を占めていないか確認する。
- go-size-analyzer のインストール方法は?
- Goでインストール: go install github.com/Zxilly/go-size-analyzer/cmd/gsa@latest コンパイル済みのGoバイナリでWebインターフェースを起動: gsa --web golang-compiled-binary
- go-size-analyzer はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/Zxilly/go-size-analyzer
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
リバースエンジニアリングやバイナリ解析に使える、ファイル構造を解析するパターン言語を備えたクロスプラットフォームのhexエディタ。
多数の形式に対応したデコーダーを備え、バイナリファイル形式を調査・クエリできる、jq風のコマンドラインツール兼クエリ言語。
ディレクトリをスキャンして容量を圧迫しているファイルを見つけ、TUIから削除できる対話型ディスク使用量アナライザー。
Macの徹底クリーニング、アプリのアンインストール、ディスク分析、メンテナンス、システム状態のリアルタイム表示に対応するオープンソースのmacOS CLI(mo)。別途ネイティブMacアプリも提供。
Linux、macOS、Windows向けに、選択した拡張機能を含む依存関係不要のPHPバイナリをビルドするCLIツール。