概要
Petrichor はmacOS向けの オフライン音楽プレーヤー で、多彩なファイル形式と大規模ライブラリに対応。 プレイリスト作成 や フォルダ管理 など、直感的な操作性を重視。 macOSネイティブ統合 や高速検索など、現代的な機能を多数搭載。 今後の機能追加 や簡単なインストール方法も用意。 オープンソース で開発が進行中、貢献やフィードバックも歓迎。
Petrichor: macOS用オフライン音楽プレーヤー
- MP3、M4A、WAV、AAC、AIFF、FLAC など主要音楽ファイル形式対応
- 音楽フォルダのマッピング と、整理されたライブラリビューを実現
- プレイリスト作成 と 再生キューのインタラクティブ管理
- 必要に応じて フォルダビュー でのブラウズ
- サイドバーへのピン留め 機能で、お気に入りへ素早くアクセス
- 右クリックでトラック情報(アルバム、アーティスト、年)へ即移動
- macOSネイティブ統合 (メニューバー・Dock再生コントロール、ダークモード対応)
- 数千曲規模の大規模ライブラリ も高速検索
- メタデータの品質 が機能性に大きく影響
今後追加予定の主な機能
- スマートプレイリスト (条件フィルタ設定可能)
- イコライザー
- Opus・OGG等の追加ファイル形式対応
- AirPlay 2キャスト対応
- ミニプレイヤー・フルスクリーンモード
- 自動アプリ内アップデート
- オンラインアルバム・アーティスト情報取得
動作要件
- macOS 14以降
インストール方法
- Homebrew(推奨)
- tap追加:
brew tap kushalpandya/tap - Petrichorインストール:
brew install --cask petrichor - 安定版リリース後は公式Homebrewリポジトリでも公開予定
- tap追加:
- 手動インストール
- Releasesページで最新の.dmgをダウンロード
- .dmgを開き、アプリアイコンをApplicationsフォルダへドラッグ
- Applications内でPetrichorを右クリック→「開く」
トラブルシューティング
- Gatekeeper回避
- notarization未済のため、右クリック→「開く」で一度だけGatekeeperをバイパス
- dmgが開けない場合
- ターミナルで
xattr -cr ~/path/to/Petrichor-<version>-Universal.dmg
- ターミナルで
- アプリ起動不可の場合
- ターミナルで
xattr -dr com.apple.quarantine /Applications/Petrichor.app
- ターミナルで
開発の動機
- 長年集めた音楽コレクション の管理・再生に適したオフライン音楽プレーヤーがmacOSに不足
- Swinsian 愛用者だったが、近年アップデートがなく機能不足を感じたため自作を決意
- SwiftとmacOSアプリ開発の学習 を兼ねたオープンソースプロジェクト
技術概要
- Swift・SwiftUI によるフルネイティブ実装
- フォルダ追加時に自動スキャン・SQLiteデータベース(GRDB)へ登録
- 音楽ファイルは非改変、指定ディレクトリを読み取りのみ
- 検索はSQLite FTS5+インメモリ検索のフォールバック
- 再生エンジンはAVFoundation
データベーススキーマ(主な構成)
- folders :音楽フォルダ管理
- artists :アーティスト情報・外部サービスID管理
- albums :アルバム情報・ジャケット・レビュー
- tracks :トラック情報・メタデータ・再生履歴
- playlists / playlist_tracks :プレイリスト・トラック紐付け
- genres / track_genres :ジャンル管理
- pinned_items :サイドバーのピン留め情報
- tracks_fts :全文検索用仮想テーブル
ビルド・セットアップ手順
- macOS 14以上 を用意
- Xcodeインストール
- ビルド用スクリプト(build-installer.sh)実行には以下が必要
- xcpretty
- create-dmg
ライセンス・クレジット
- MITライセンス
- Paul Hudson (Swiftチュートリアル提供者)、 Sindre Sorhus (create-dmg作者)、 Claude by Anthropic (共同プログラミング支援)
開発者からのメッセージ
- ストリーミング主流時代におけるオフライン音楽プレーヤー不足 を解決するためのプロジェクト
- 3ヶ月かけて開発、v1リリースに向けてα版をテスト・改善中
- GitHubでのフィードバック・貢献を歓迎
- 今後も機能追加・品質向上を継続予定