1. 概要
本手順書は、macOS環境においてRust言語および eframe (egui) ツールキットを使用したGUIアプリケーション(Pitch Perfect Player)の開発環境構築から、Mac標準の .app バンドル作成、独自アイコンの設定までの全工程を記載したものです。
2. 前提条件・環境
-
OS: macOS
-
ツール: ターミナル (Terminal)
3. Rust開発環境のセットアップ
3.1 RustコンパイラおよびCargoのインストール
ターミナルを開き、公式インストーラーを実行します。
Bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
画面の指示に従い、1(デフォルト設定)を選択して進めます。
3.2 環境変数の反映と動作確認
現在のシェルに設定を反映させるか、ターミナルを再起動します。
Bash
source "$HOME/.cargo/env"
正常にインストールされたかバージョンを確認します。
Bash
rustc --version
cargo --version
4. プロジェクトの作成と構成
4.1 新規プロジェクトの作成
作業用ディレクトリで以下のコマンドを実行し、新規プロジェクトを生成します。
Bash
cargo new pitch_perfect_player
cd pitch_perfect_player
4.2 ディレクトリ構成
最終的なディレクトリ構成は以下のようになります。
Plaintext
pitch_perfect_player/
├─ Cargo.toml
├─ player_config.json (実行時に自動生成される設定ファイル)
├─ assets/
│ └─ icon.icns (独自アイコンファイル)
├─ src/
│ └─ main.rs (メインソースコード)
└─ target/ (コンパイル生成物)
5. 依存ライブラリ(Cargo.toml)の設定
Cargo.toml を開き、必要なパッケージおよびMacアプリ化用の設定を記述します。
Cargo.toml 全文
Ini, TOML
[package]
name = "pitch_perfect_player"
version = "0.1.0"
edition = "2021"
[dependencies]
rodio = { version = "0.19", features = ["mp3"] }
soundtouch = "0.5.4"
eframe = "0.29.1"
rfd = "0.15"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
[package.metadata.bundle]
name = "Pitch Perfect Player"
identifier = "com.tsm_tester.pitchperfect"
version = "1.0.0"
icon = ["assets/icon.icns"]
※ macOSの仕様変更に伴うパニックエラーを避けるため、eframe は 0.29.1 以上を指定します。
6. アプリケーションの実装
src/main.rs を編集し、プログラム本体を実装します。
主な機能仕様:
-
SoundTouchを用いた音程変更のない速度変更(タイムストレッチ) -
rodioを用いた音声再生とオンメモリデコードによる遅延なしシーク -
eframe(egui) によるGUI構築 -
rfdによるファイル選択ダイアログ -
serdeによる前回開いたファイル・フォルダ・設定の自動保存
7. 動作確認とビルド手順
7.1 デバッグ実行(開発時)
依存パッケージを取得し、テスト実行します。
Bash
cargo update
cargo run
7.2 リリースビルド(最適化実行ファイルの作成)
処理速度を最適化した単体の実行ファイルを生成します。
Bash
cargo build --release
-
生成物:
target/release/pitch_perfect_player
8. Mac用 .app バンドル化(ターミナル非表示化)
Finderから実行した際にターミナルが同時に起動するのを防ぐため、Mac標準の .app 形式に変換します。
8.1 バンドルツールのインストール(初回のみ)
Bash
cargo install cargo-bundle
8.2 アイコンファイル(.icns)の準備
-
正方形の画像(1024×1024推奨、透過PNG)を用意します。
-
画像変換サービス等を利用して、
.icns形式に変換し、ファイル名をicon.icnsにします。 -
プロジェクト直下に
assetsフォルダを作成し、配置します。Bash
mkdir -p assets # assets/icon.icns としてファイルを配置
8.3 バンドルビルドの実行
Bash
cargo bundle --release
-
最終生成物:
target/release/bundle/osx/Pitch Perfect Player.app
9. 運用・配備
-
target/release/bundle/osx/に生成されたPitch Perfect Player.appを、「アプリケーション」フォルダやデスクトップなど任意の場所に移動します。 -
ダブルクリックで起動し、ターミナルが開かずに単体アプリとして動作することを確認します。
※ アイコンが反映されない場合の対応(macOSのキャッシュ対策)
ビルド後にFinder上でアイコンが更新されない場合は、.app ファイルを別のフォルダ(例: ディレクトリ間を移動させる)へ動かすと、OSのアイコンキャッシュが更新されて即座に反映されます。
10. トラブルシューティング
| 症状 | 原因 | 対策 |
invalid message send ... NSScreen countByEnumeratingWithState でパニック終了する |
macOSアップデートによる内部型情報(objc2/winit)の不一致 |
Cargo.toml の eframe バージョンを 0.29.1 以上に上げて cargo update を実行する |
warning: use of deprecated method ... の警告が出る |
APIの名称変更(例: drag_released から drag_stopped への変更) |
警告の指示に従いコード内のメソッド名を更新するか、cargo fix --bin "pitch_perfect_player" --allow-dirty を実行する |

コメント