
2026/09/07 5:24
Show HN:macOS の音楽プレイヤー兼ジャズボックスアプリ「Sol」が、今や無料でオープンソースです。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Sol は、アカウントやサブスクリプションを必要とせず、完全オフラインで動作する強力なオーディオ機能を備えた macOS ネイティブの無料オープンソース音楽プレイヤーです。サブスクリプションサービスがデータを制限することなく、Sol は内部ディスク、外部ドライブ、ネットワーク共有、iCloud Drive のいずれでもローカルに動作し、ファイルを実際のフォルダから直接再生しながら移動や変換は行いません。FLAC、ALAC、WAV、MP3、Opus、DSD など高品質な形式をサポートしており、cue sheet や無欠盤再生、クロスフェード、フルイコライザー、ReplayGain レベリング、ビットパーフェクト出力といったプロフェッショナル向け機能も搭載しています。アプリは非常に大規模なライブラリも瞬時のブラウジングに対応し、クラシックのペインビュー、グリッドビュー、アルバムカルーセル、常驻ミニプレイヤーによる表示を実現します。さらに楽曲、アルバム、プレイリスト、ポッドキャスト、タグ、ファイル名など広範な検索機能を提供します。ポッドキャストサポートには、サブスクリプション、トランスクリプト、チャプター、インターネットラジオ、Apple Podcastsからのインポートが含まれます。再生以外にも、1 ファイルあたり最大 30 フィールドまでの詳細なメタデータ編集、正規表現を使った検索置換、MusicBrainz ルックアップ、可搬型レーティング/ラブ、ネストされたルールのスマートプレイリスト、重複ファイル検出、再生統計、ファイル名変更のためのインポートオーガナイザーなど多様な機能を提供します。macOS との緊密な統合には、AppleScript、ショートカット 16 件のアクション、メディアキー、システム「今再生中」統合、Last.fm スクロービング、Discord Rich Presence、オプションのローカル制御 API が含まれます。MacOS 14 以降を念頭に現代 Swift 6 テクノロジーで構築された Sol は、フルスクリーンビジュアライザー、カラオケモード、行単位表示付き歌詞、Sol DJ というラジオ風無限ミックスビルダーなど高度な機能も備えています。厳格な GPL v3.0 ライセンスによりユーザーはプライバシー侵害的なクラウド追跡なしにメディアを完全制御でき、そのためプライバシー重視のオーディオフュアリスや高機能オーディオツールを求める愛好家にとって、無料ローカル環境での理想的な選択肢です。
本文
Sol:完全自由の音楽ライブラリ・プレイヤー
Sol は、音楽ライブラリを愛する方々向けに設計されたネイティブの Mac ユーザーズ音楽プレイヤーです。フォルダを指定するだけで、そのファイルが置かれたまま再生します。移動や変換、ロックアップは一切不要です。
特徴
-
完全無料かつオープンソース
- 有料プラン、サブスクリプション、試用期間、アプリ内購入、アカウントは存在しません。
- 全ての機能は、入手したどのコピーにも含まれています。
- 「Releases」から署名および検証済みのビルドをダウンロードするか、このリポジトリから自分で構築することもできます。
- ソフトウェア更新通知のみを受信し、それ以外のことは決して邪魔をかけません。
-
インストール方法
- Homebrew を使用する場合:
brew install --cask fulltimefeline/tap/sol
- Homebrew を使用する場合:
メモリ消費を最小限にしたライブラリ管理
-
パネブラウザー
- ライブラリ、ジャンル、アーティスト、アルバム別に整理表示できます。
- グリッドビューで A から Z のアルファベット順にグループ化し、アルバムのアートワークを壁面のように配置します。
- レコードケースのようにコレクションをめくるためのアルバムカルーセルを搭載しています。
- マルチパネビューと常駐ミニプレイヤーに対応しています。
-
高速検索・表示
- 真のコレクター向けに設計され、数十万曲規模でも閲覧は瞬時に動作します。
- 単一の検索バーで、あらゆるライブラリおよびサーバーにわたる楽曲、アルバム、プレイリスト、ポッドキャストエピソードを一括検索できます。
- カタログ番号やファイル名に至るまで全てのタグを検索可能です。
全て重要な形式に対応
-
対応フォーマット
- FLAC、ALAC、WAV、AIFF、MP3、AAC、Ogg Vorbis および Opusに加え、ニッチな形式である DSD、Monkey's Audio、Musepack、Wave64 も対応しています。
-
Cue シートと再生機能
- Cue シートは、サイドカーの .cue ファイルとして、またはファイル内部に埋め込むという両方に対応します。
- ギャップレス再生、クロスフェード、プリセット付きのフルイコライザー搭載。
- クリッピング保護付きの ReplayGain レベル化機能を搭載しています。
-
DAC 制御
- サンプルレートとビット深度を合わせることで、DAC を各ファイルの固有のレートと深さに切り替えます。
- デバイスが対応する場合は「ビットパーフェクト出力」で元のファイルを DAC にそのまま送り、対応しない場合は誠実にフォールバックします。
どこに置いても OK
-
フォルダ監視
- 内部ディスク、外部ドライブ、ネットワーク共有、iCloud Drive の好きな数のフォルダを監視できます。
- オフラインライブラリは瞬時に検出され、優雅にグレーアウトされ、再びアクセス可能になれば自動で再スキャンされます。
-
サーバー同期
- ローカルファイルの横で、Navidrome、Subsonic、または OpenSubsonic サーバーからストリーミング再生も可能です。
- プレイリスト、お気に入り、評価の二方向同期とオフラインリスニング用のダウンロード機能が付いています。
楽曲以外の機能
-
ポッドキャスト
- 購読管理、字幕表示、チャプター対応、小声話者向けボイスブーストが可能。
- Apple Podcasts からのワンクリックインポートが可能。
-
インターネットラジオ
- ステーションのアートワークやライブ曲名の表示に対応。
-
歌詞機能
- 行単位で追跡する歌詞機能、フルスクリーンビジュアライザー、カラオケ対応。
-
Sol DJ
- 愛着のある楽曲を重視し、見落とした発見を表面化させ、重複を避ける無限のラジオ風ミックスを構築します。
タグはあなた次第(メタデータエディター)
-
高度な編集機能
- Sol が対応する全形式において、ファイル自体に 30 フィールド分のメタデータを書き込み、アートワークを含め編集できます。
- 多数のファイルを一度に編集、正規表現を使用した置換に対応します。
- MusicBrainz でのタグ検索に対応しています。
-
永久的な評価保存
- 評価と「お気に入り」は実際のファイルタグに格納されるため、他のプレイヤーでも読み取り可能で永久に携帯可能です。
-
高度なプレイリスト管理
- 30 フィールド以上のフィールドにわたるネストされたルールグループを持つスマートプレイリスト搭載。
- 重複ファイル検出機能、再生統計、ご自身のテンプレートに従って名前付け・整理するインポートオーガナイザーを搭載しています。
Mac 専用設計
-
システム統合
- 本物の AppleScript サポートと、16 種類のショートカットアクションに対応。
- メディアキー、ドックのトランスペアレンシー制御、システム「今再生中」統合に対応。
-
連携機能
- Last.fm スクロービングと「お気に入り」楽曲の同期機能を実装。
- Discord リッチプレゼンスを無料の Sol Activity コンパニオンアプリ経由で利用可能です。
- オプションのローカルコントロール API は、コンパニオンアプリやストリームデッキ、ご自身のオートメーションにも接続可能です。
-
多言語対応
- 34 言語に翻訳済み。
- テレメトリ、アナリティクス、アカウントは一切不要です。
ビルドについて
必要なもの
-
環境要件
- macOS 14 以降
- Xcode 26 以降(macOS 17 SDK 用):Swift 6 ランゲージモードと完全な厳格並行性チェック。
-
事前準備
- XcodeGen のインストール:
brew install xcodegen - 注: プロジェクトファイルは
から生成され、これが真のソース・オブ・トゥルースです。Xcode プロジェクト自体はバージョン管理の対象とならないため、project.yml
は必須の第一ステップとなります。生成されたプロジェクトを直接編集しないでください。xcodegen generate
- XcodeGen のインストール:
認証情報(オプション)
-
Last.fm スクロービングを有効にするには、以下の手順で設定してください:
- https://last.fm/api/account/create でアプリケーションを登録します。
- シークレットを複製:
cp Secrets.example.xcconfig Secrets.xcconfig - 二つの値を
に貼り付けます。Secrets.xcconfig
-
注: 「Config.xcconfig」はオプションインクルードを通じてこれらを読み込むため、ファイルが存在する場合にのみ空のデフォルトを上書きし、存在しない場合は無視されます。「Secrets.xcconfig」は
されていますので、キーがリポジトリに到達することはありません。.gitignore
ビルドコマンド
-
プロジェクトのオープン
xcodegen generate open Sol.xcodeproj -
ターミナルからのビルド
xcodebuild -project Sol.xcodeproj -scheme Sol -configuration Debug build
依存関係
- Swift パッケージは 1 つのみで、自動的に解決されます(SFBAudioEngine は sbooth/SFBAudioEngine のトリムされたフォーク版)。
- それ以外の全ては、
に静的ライブラリとしてバンドされ、Sol/Vendor/lib
にヘッダーが配置されています(TagLib, Monkey's Audio, Musepack, Ogg, Vorbis, opencore-amr)。これらはコミットされているため、取得やビルドの必要はありません。Sol/Vendor/include
プロジェクト構造
: 真のプロジェクト定義project.yml
: モデル、再生、ライブラリ、タグ付け、統合処理Sol/App/
: SwiftUI と AppKit ビューSol/Views/
: バンドされた静的ライブラリとヘッダーSol/Vendor/
: 文字列カタログ(34 言語)Sol/Resources/
: この README に使用されているスクリーンショットdocs/
設計上の注意事項
- Sol/App は SolApp.swift の組み合わせルートを除き、Sol/Views への参照を保持しておらず、サービスもモデルに直接アクセスするのではなく、インジェクションされたクロージャーとして依存関係を渡すように設計されています。この方針は守ってください。
- デバッグビルドでは SOLDEBUG が定義され、ローカルコントロールサーバーの
および/debug/probe
エンドポイントを有効にします。リリースビルドでは決して定義されません。/debug/snapshot - 厳格な並行性は完全にオンです。各
および@unchecked Sendable
には、その不変性(インバリアント)を安全にする根拠として明らかな説明が記されています。nonisolated(unsafe)
テストについて
- まだテストターゲットは存在しません。LibraryStore.slots, TagWriter, CueParser, FeedParser, ReplayGain, TagReader は純粋で決定論的であり、ここから始めるのが最適です。
Sol Activity
Discord の IPC ソケットを App Sandbox 内部からは到達できないため、Discord リッチプレゼンスには小さなコンパニオンアプリが必要です。これは無料(GPL-3.0)のもので、独立したリポジトリにあります。こちらからダウンロードしてください。
リンク
ライセンス
Sol は GNU General Public License v3.0 以降に基づくフリーソフトウェアです。使用、研究、修改、再配布が可能です。頒布するフォーク版についても、同様の条件付きでソースコードを含める必要があります。バンドルされたサードパーティ製コンポーネントはそれぞれのライセンスを保持しており、全てが GPL-3.0 と互換性があります。