【要約】PyInstallerでexe化に成功したのに、配布をやめた話 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、Python環境を持たないユーザーへ音声入力アプリを配布するため、PyInstallerによるexe化を試みた。しかし、以下の2つの問題に直面した。
- ・実行時に0xC0000005(アクセス違反)が発生し、アプリが強制終了する。
- ・ウイルス対策ソフトが、署名のないexeファイルを「不審なファイル」としてブロックする。
- ・セキュリティソフトの除外設定が、レピュテーション判定に対して機能しない。
// Approach
開発者は、発生した問題を技術的要因と運用的要因に切り分け、それぞれに対して検証を行った。
- ・Windowsイベントログを解析し、クラッシュの原因がPyQt5同梱の古いCRTであることを特定した。
- ・PyInstallerのspecファイルを編集し、古いCRTをバンドルから除外する処理を実装した。
- ・ウイルス対策ソフトに対し、除外設定や再起動を用いた対照実験を行い、原因が署名の欠如であることを突き止めた。
// Result
開発者は、技術的な問題の解決と、配布継続の是非について最終的な判断を下した。
- ・specファイルの修正により、起動10.2秒、メモリ425MBでの安定動作を実現した。
- ・コード署名(EV証明書等)に年間数万円のコストがかかることを確認した。
- ・コスト対効果を考慮し、exe配布を断念してソース配布へ回帰した。
Senior Engineer Insight
> 依存関係の多いPythonアプリの配布は、単なるビルド作業ではない。DLLのバージョン競合や、セキュリティソフトの挙動といった環境依存の壁が極めて高い。特に、署名なしバイナリの配布は、ユーザー体験を著しく損なう。技術的解決と、署名費用というビジネス的コストのバランス判断が、実戦では重要となる。