【要約】Windowsアプリを個人開発したら、ライセンス地雷と謎のフリーズに悩まされた [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、クローズドソースでのアプリ配布を目指した際に、2つの技術的課題に直面した。
- ・ライセンス: PyMuPDF (AGPL-3.0) と PyQt5 (GPL) の使用による、ソースコード公開義務のリスク。
- ・フリーズ: pywebviewの属性走査が、WinFormsのプロパティを再帰的に辿り続け、CPUを占有する問題。
// Approach
開発者は、ライセンス要件の充足と、実行時のフリーズ解消のために、構成の変更とコード修正を行った。
- ・ライブラリ刷新: PyMuPDFをpypdfium2へ、PyQt5をpywebview (WebView2) へ変更。
- ・フリーズ回避:
self.windowをself._windowに変更し、属性走査の対象外とした。 - ・品質検証: 96件の攻撃パターンと1000件のファジングを実施し、堅牢性を確認。
// Result
開発者は、適切なライブラリ選定と修正により、安全かつ安定した変換ツールを完成させた。
- ・ライセンス: Apache/BSD系ライブラリへの移行により、クローズドソースでの配布を実現。
- ・安定性: 属性名の修正により、起動時の「応答なし」状態を完全に解消。
- ・信頼性: ファジングにより、画像サイズ上限の不備などの脆弱性を事前に修正。
Senior Engineer Insight
> ライセンス選定は、開発終盤での致命的な手戻りを防ぐために不可欠である。また、ライブラリが内部で行う属性走査が、意図しない再帰呼び出しを招くリスクは、実戦でも無視できない。特に、外部オブジェクトを公開APIに含める際は、そのプロパティがどこまで探索されるかを厳格に管理すべきだ。