【要約】pyappdist: ストレージを少しだけ贅沢に使うPythonアプリインストーラー [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
Python開発者が、アプリケーションを配布可能な形式に変換する際、依存関係の特定という課題に直面する。従来のツールはファイルサイズ削減を優先するが、それが逆に開発コストを増大させている。
- ・PyInstaller等は、ファイルサイズ最小化のために必要なファイルのみを抽出する。
- ・Pythonの動的な性質により、DLLやプラグインの完全な自動抽出は困難である。
- ・特にGUIアプリでは、依存関係の調整に多大な工数がかかる。
// Approach
pyappdistは、ファイルサイズの最小化を諦め、実行環境を丸ごとパッケージ化する手法を採用している。開発者が依存関係のパズルに時間を費やす必要をなくしている。
- ・
python-build-standaloneからPythonランタイムを取得する。 - ・
pipを用いて、アプリと依存パッケージを特定のディレクトリに一括インストールする。 - ・構築した環境をそのままMSIやDMG等の標準的なインストーラー形式に格納する。
// Result
開発者は、複雑な依存関係を持つアプリケーションでも、特別な調整なしに配布が可能となる。配布の容易性と、標準的な管理機能の両立を実現している。
- ・PySide6やPandas等の重厚なライブラリも、特別な調整なしで動作する。
- ・MSI/MSIX等の標準形式により、アンインストールや署名、ショートカット作成が可能となる。
- ・単一実行ファイル形式で見られる、起動時の展開による遅延を回避できる。
Senior Engineer Insight
> ストレージ容量の増加よりも、開発工数の削減を優先する設計思想は極めて実戦的である。百数十MBの容量増は、現代のシステム環境では無視できるコストだ。依存関係の解決に費やすエンジニアの時間を、本来の機能開発へ転換できる。ビルドの不確実性を排除できるため、配布プロセスの信頼性が向上する。特にGUIアプリの配布において、非常に強力な選択肢となるだろう。