ビルド手順

🇺🇸 English Version / Available in English

For the English version, please refer to the Build Instructions page.

注意

このページの内容は開発者の方向けです。

本ページでは、アプリケーションのビルド手順について説明します。
本アプリケーションは PyInstaller を用いてビルドしています。

すでに spec ファイルを用意しているため、以下のコマンドを実行することでアプリケーションをビルドできます。
この処理には時間がかかる場合があります(目安:約10分)。

pyinstaller build.spec

PyInstaller の詳細な使用方法については、公式ドキュメントを参照してください。

注意事項
  • 現在、ビルドは Windows 環境のみで動作確認しています。将来的に他の OS への対応を検討しています。
  • 提供している spec ファイルはエラーのない状態ですが、リファクタリング最適化の余地があります。今後のアップデートで改善していく予定です。
  • spec ファイルの詳細については、Using Spec FIles - PyInstaller を参照してください。
古いビルド成果物の削除

PyInstaller を実行する前に、以前のビルド成果物を削除することを推奨します。

Remove-Item -Recurse -Force build, dist

ビルド後の構成

ビルドが成功すると、プロジェクトのルートディレクトリに以下のようなフォルダ構成が生成されます。

project/
├─ build/
└─ dist/
   └─ LeafShapeTool/
      ├─ LeafShapeTool.exe
      └─ _internal/
         └─ (ライブラリ群)

実行ファイルは次の場所に生成されます。

dist/LeafShapeTool/LeafShapeTool.exe

このファイルをダブルクリックするか、コマンドプロンプトから以下のように実行することでアプリを起動できます。

cd dist/LeafShapeTool/
LeafShapeTool.exe
ダブルクリック起動とコマンドプロンプト起動の違い

ダブルクリックで起動すると、ログやエラーメッセージを表示するためのコンソールウィンドウが開きます。 ただし、実行終了後に自動的に閉じてしまうため、メッセージを確認しづらい場合があります。 そのような場合は、コマンドプロンプトから実行することを推奨します。

注意

安定性を重視し、onefile モードではなく onedir モードでビルドしています。 そのため、dist/LeafShapeTool/ フォルダ全体を配布する必要があります。

LeafShapeTool.exe のみを単体で配布しても、正しく動作しません

SAM2 モジュールについて

spec ファイルからビルドした場合、Segment Anything Model 2 (SAM2) (Ravi ほか 2024) モジュールはデフォルトで含まれません。

spec ファイルからビルドをした場合、デフォルトでは Segment Anything Model 2 (SAM2) は使用できません。 SAM2 を有効化するには、次節の手順を実行してください。

SAM2 モジュールの有効化

ファイルサイズやビルド時間、依存関係の複雑さを軽減するため、SAM2 フォルダはデフォルトではビルド対象に含めていません。 ただし、Releases ページで配布している実行ファイルには、SAM2 モジュールがあらかじめ含まれています。

手動で SAM2 を有効化する場合は、以下の手順を実行してください。

1. SAM2 リポジトリのクローン

GitHub から SAM2 リポジトリをクローンします。

cd dist/LeafShapeTool/
git clone https://github.com/facebookresearch/sam2.git

2. SAM2 チェックポイントのダウンロード

SAM2 モデルを使用するためには、複数のチェックポイントファイルが必要です。
以下のリンクから手動でダウンロードし、sam2/checkpoints/ ディレクトリに配置してください。

モデルの詳細については、次の公式ドキュメントを参照してください。

macOS / Linux、または Bash を使用可能な Windows 環境では、次のコマンドにより自動でチェックポイントを取得できます。

cd checkpoints && \
./download_ckpts.sh && \
cd ..

これで、SAM2 モジュールが有効になります。

現状の課題

生成される実行ファイルのサイズが非常に大きくなります。これは、PyInstaller がすべての依存関係を含めるためです。

代替のビルドツールとして Nuitka の使用を検討していますが、Nuitka は PyQt との互換性に課題があり、現時点では正常に動作しませんでした。

ビルドやエラーに関する参考情報

参考文献

Ravi, Nikhila, Valentin Gabeur, Yuan-Ting Hu, Ronghang Hu, Chaitanya Ryali, Tengyu Ma, Haitham Khedr, ほか. 2024. 「SAM 2: Segment Anything in Images and Videos」. https://arxiv.org/abs/2408.00714.