Repolode
Zxilly

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. 1

    Goでインストール

    go install github.com/Zxilly/go-size-analyzer/cmd/gsa@latest
  2. 2

    コンパイル済みのGoバイナリでWebインターフェースを起動

    gsa --web golang-compiled-binary

使う前に知っておきたいこと

  • AGPL-3.0ライセンス(コピーレフト)のもとで提供されており、ネットワーク経由で提供する場合、変更したソースコードの共有が求められます。
  • ソースからビルドするにはGo 1.27以降が必要です。
  • シンボル情報が削除されたバイナリの解析は不正確な場合があります。
  • ブラウザー上のWebAssembly版はネイティブ版より大幅に低速です。

収録されている特集

トピック

#go#binary-analysis#bundle-size#visualization#cli#treemap#dependency-analysis#analyzer#binary#dependency

よくある質問

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 の数値は毎日更新されます。

関連プロジェクト

多数の形式に対応したデコーダーを備え、バイナリファイル形式を調査・クエリできる、jq風のコマンドラインツール兼クエリ言語。

開発ツール#binary#cli#jq
1.1万+7 今週258GoOther更新 14 時間前

Macの徹底クリーニング、アプリのアンインストール、ディスク分析、メンテナンス、システム状態のリアルタイム表示に対応するオープンソースのmacOS CLI(mo)。別途ネイティブMacアプリも提供。

開発ツール#macos#cli#disk-cleaner
7.4万+744 今週2654ShellGPL-3.0更新 13 時間前