すべてのオープンソースパッケージ
ツールSwift

sizeledger

iOS アプリの各メガバイトがどこから来ているかを、カテゴリ、フレームワーク、アセットカタログ、言語、アーキテクチャ別に示します。

1スター数最新リリース: v0.1.10 · 更新日: 2026年10月21日
対応プラットフォーム:macOS 13+Linux (x86_64, arm64)

ライセンス: MIT

テスト: 159計測日:

計測方法

swift test in a fresh clone at tag v0.1.10 on a Mac (Apple silicon, Apple M5 Max, macOS 27.0.1), Swift 6.4: 159 tests (134 SizeLedgerKit, 25 CLI), 158 passed and 1 skipped because it needs a non-UTF-8 file name and runs on Linux only

要約

  • sizeledger は .ipa、.app、.xcarchive を読み取り、カテゴリ、フレームワーク、言語、CPU アーキテクチャ別にバイトを示します。
  • ファイルを読み取るだけで、アプリをビルド・実行・アップロード・変更することはなく、macOS と Linux で同じレポートを返します。
  • 3つのサイズを区別します: ファイルの合計、4 KiB ブロック単位のインストール推定値、.ipa 内の圧縮後サイズです。
  • ZIP リーダー、DEFLATE デコーダー、Mach-O パーサーは Swift で書かれており、SizeLedgerKit ライブラリに依存関係はありません。
  • App Store のダウンロードサイズは示さず、diff と budget コマンドは0.1.10時点では計画中で未リリースです。

sizeledger に .ipa、.app、または .xcarchive を指定すると、アプリのバイトがどこにあるかを示します — カテゴリ別、フレームワークとリソース別、言語別、CPU アーキテクチャ別です。3つのサイズを区別して保持します(ファイルの合計、4 KiB ブロック単位でのインストールサイズの推定値、.ipa の場合は圧縮後のサイズ)。App Store のダウンロードサイズを知っているとは主張しません。独自の ZIP、DEFLATE、Mach-O リーダーでファイルを読み取るだけなので、ビルドも実行もアップロードも変更も行わず、macOS と Linux で同じように動作します。SizeLedgerKit は Swift のプログラムに同じレポートを提供します。

機能

  • アプリ全体をひとつの表にまとめます: メイン実行ファイル、フレームワークと dylib、app extension、App Clip、watch アプリ、ローカリゼーション、アセットカタログ、コード署名、その他すべて。カテゴリの合計は常に総計と一致します
  • すべてのフレームワークと extension を1行ずつ表示し、すべての .lproj 言語をアプリとそのフレームワーク全体で合計します
  • すべてのバイナリのアーキテクチャスライス: どのバイナリが universal か、各スライスがどれだけの容量を占めるか。JSON にはセグメントサイズと Swift のメタデータも含まれます
  • 3つのサイズを区別して保持します: ファイルの合計、4 KiB ブロック単位でのインストールサイズの推定値、.ipa の場合は圧縮後のサイズ
  • ターミナルの表、pull request やジョブサマリー用の Markdown、キーの順序が安定した JSON レポート
  • 入力を信頼できないものとして扱います: ファイル数、深さ、宣言されたバイト数、圧縮率に上限を設け、出力ではターミナルエスケープ、双方向オーバーライド、不可視文字を置き換えます
  • SizeLedgerKit は DocC ドキュメント付きで依存関係のない Swift ライブラリです: ZIP リーダー、DEFLATE デコーダー、Mach-O パーサーはその一部です

クイックスタート

sh
1sizeledger analyze path/to/MyApp.ipa

インストール

Homebrew (macOS, Linux)

sh
1brew install muhittincamdali/tap/sizeledger

From source

sh
1git clone https://github.com/muhittincamdali/sizeledger.git && cd sizeledger && swift build -c release

Swift package (product SizeLedgerKit)

swift
1.package(url: "https://github.com/muhittincamdali/sizeledger", from: "0.1.10")

スクリーンショット

SampleShop 2.0 に対する sizeledger analyze: 21ファイルで8.75 MB、インストール推定8.80 MB、圧縮後2.72 MB。catalog.json がアプリの70.8%、Assets.car が18.1%。7言語、3つの universal バイナリ
テストが計測するフィクスチャアプリ SampleShop 2.0 が iOS 27 Simulator で動作している様子

タイムライン

  1. リポジトリが公開され、0.1.0 がリリースされました: sizeledger analyze と、独自の ZIP、DEFLATE、Mach-O リーダーを持つ SizeLedgerKit ライブラリです

  2. 0.1.1 から 0.1.5: 9言語の README、範囲を限定した Mach-O ヘッダー読み取り、.xcarchive 内のシンボリックリンクの拒否、細工された入力に対する上限(--max-files、--max-bytes、--max-ratio、--max-depth)

  3. 0.1.6 から 0.1.8: Sanitize.text が public になり、出力でより多くの不可視文字が置き換えられ、パスはバイト単位で分割・比較されるようになりました

  4. 0.1.9 と 0.1.10: 重複する .ipa エントリは破損として拒否され、--out はファイルへのリンクを経由して書き込まなくなり、新しい --force フラグが追加されました

リンク

関連記事

記事を読む