世界を動かす技術を、日本語で。

Spotifyをやめて、自分の音楽スタックを構築しました

概要

  • Spotifyから自分専用の音楽ストリーミング環境への移行理由
  • Navidromeを中心とした自宅サーバー構築の概要
  • 音楽管理や歌詞同期、音楽発見のための各種ツール活用
  • アーティストへの直接的なサポート方法
  • 今後の改善計画と自分のスタイルに合わせた運用の柔軟性

Spotifyをやめて自作音楽スタックを構築した理由

  • Spotify利用歴 は長く、利便性や発見機能に満足していた
  • 問題点 :アーティストへの低報酬、偽アーティストやAI楽曲、年齢認証、所有権の欠如
  • 音楽体験の主導権 を取り戻すため、自分専用のストリーミング環境構築を決意

システム全体像と主な構成要素

  • Navidrome :オープンソースの音楽サーバー、個人コレクションのストリーミング管理

    • CloudFlare Tunnel 経由で外部アクセス、安全な公開
    • クライアントアプリ
      • Web :Navidrome内蔵プレイヤー
      • iOS :Play:Sub
      • Android :Symfonium
      • デスクトップ :Feishin(歌詞同期対応)
  • Scrobbling :Last.fmへの自動記録で、再生履歴の可視化と発見性向上

音楽コレクション管理

  • Lidarr :アーティストやアルバムの管理・新譜自動取得
    • sabnzbd と連携し、購入済み音源のダウンロード自動化
    • Dockerコンテナ 上で運用、外部公開せず安全性確保
  • 正規入手の重要性
    • Bandcamp, iTunes, Amazon 等での正規購入
    • 所有CDのリッピング、公式の無料配布、Creative Commons音源の利用

歌詞同期機能

  • lrcget-kasm :LRC形式の歌詞ファイルを一括取得
    • Kasm経由でGUI操作、ブラウザからアクセス
    • 新曲追加時や歌詞更新時のみ起動、省リソース運用
    • CLI版の要望提出済み、将来的な自動化期待

音楽発見機能

  • Lidify :LidarrとLast.fmを連携し、レコメンド生成
  • ListenBrainz :Last.fmのScrobbleを連携し、将来はSpotifyのような発見プレイリストも期待

Spotifyとの比較

  • 音質: Spotify最大320kbps、自作環境は FLAC等ロスレス対応
  • 月額費用: Spotify月額制、自作は 初期投資のみ
  • アーティスト支援: Spotifyはストリームごく僅かな報酬、自作は 直接購入で高還元
  • 所有権: Spotifyはレンタルのみ、自作は 完全所有
  • オフライン再生: Spotifyは制限付き、自作は 全曲自由
  • プライバシー: Spotifyはデータ収集、自作は 完全プライベート
  • コンテンツの恒久性: Spotifyは消える可能性、自作は 自分次第で永続

アーティスト支援方法

  • Bandcamp 等での直接購入(売上の82-90%がアーティストへ)
  • 公式ショップでのフィジカル購入
  • Patreon等のサブスク支援
  • ライブ参加やグッズ購入
  • 例:Bandcampで$10のアルバム購入→アーティストに$8.20-$9.00還元、Spotifyで同等額稼ぐには1,600~3,000再生必要

今後の展望

  • 歌詞取得プロセスの自動化
  • 発見系ツールのさらなる導入・検討
  • 自分のニーズに合わせて柔軟に進化できる のが自作環境の魅力

まとめ

  • 音楽所有・体験の主導権 を取り戻したい人、技術的な知識がある人にとっては 自作ストリーミング環境は現実的かつ満足度が高い選択肢
  • アーティスト支援と音楽の自由な楽しみ方 を両立できる構成

Hackerたちの意見

これやりたいんだけど、趣味ってやっぱり時間がかかるよね。YouTube Musicユーザーとして一番イライラするのは、アプリがネット接続が悪い時にダウンロードに戻るのに時間がかかること。オープンソースのアプリとか自分のアプリを使ってたら、このバグを直せるのに、コントロールできないから困ってる。 :(

もし独立したいだけなら、MP3やCDを集め始めればいいよ。俺は90年代半ばから物理的な音楽を集めてて、MP3コレクションはまだ128GB以下だから、今はどこにでもコピーできる。ほんとに努力しない限り、ストレージはコレクションより早く増えると思うよ。それに、全部か無かの考え方をしなくてもいいし、一ヶ月で終わらせる必要もない。まずは始めてみて。たまに少しずつやっていけば、5年後にはストリーミングサービスに自分の意見を言えるくらいの独立性が得られるよ。

俺もこれやりたいなって思ってるんだけど、実際はそんなに難しくない気がする。15年前、俺の音楽は全部/Musicフォルダにあって、そこにあるものはすぐに再生できた。あのフォルダをネットワークドライブに移して、スマホやデバイスにMP3プレイヤーアプリを入れて、そのフォルダを指すだけで簡単にできるはず。アプリがファイルをダウンロードできるなら、なお良し。それ以外にも、スマホやMP3プレイヤーを繋いで手動で曲をアップロードするのは、当時でも特に難しくなかったと思う。確か、俺のプレイリストはWindows Media PlayerやiTunesで使うテキストファイルだったから、その機能をサポートするのも簡単なはず。

どのプラットフォームでYouTube Musicを使ってるか分からないけど、オフライン機能がもっと良いオープンソースのサードパーティアプリがいくつかあるよ(俺は使ったことないけど、ストリーミング音楽のオプションを探してる時に見つけた)。InnerTune: https://github.com/z-huang/InnerTune Musify: https://github.com/gokadzev/Musify

しばらく使ってなかったけど、以前使ってたiOSのSubsonicクライアント(たぶんiSubだった)って、Apple MusicやSpotifyよりもローカルファースト/オフラインの動作が良かった気がする。

NavidromeはDockerコンテナで設定するのがすごく簡単だよ。自宅ホスティングのシステムがあればだけど。もしなければ、始めるいい機会だね!

この記事ではアーティストがストリームごとにどれだけお金を稼いでるかについて話してるけど、実際に彼らはどれくらい稼ぐべきなの? 曲を書くことに対する公正な報酬って何だろう? 昔はアーティストがレーベルに入ってアルバムを出してた。アーティストは売上の約10%を得てた(もちろん変動はあるけど、平均的には)。だから、15ドルのCDだとアーティストは1.50ドルもらえる。この記事では「ストリームあたりの価格」が約0.005ドルって書いてあるから、CDを売った時と同じ額を得るには約300回ストリームされる必要がある。これって、アーティストが以前に曲を聴かれた時よりも少ないお金だとは思えない。俺が持ってるアルバムの中には、30回以上聴いたものもあるし、10曲のアルバムが300回ストリームされるにはそれだけ聴かないといけない。これって公正な報酬なの? どうしてそう思うの? アーティストが音楽を作ることでお金を稼げるべきだと思うけど、市場が設定する価格だけで彼らがどれだけの価値があるかをどう決めるのかは分からない。

この会計についてはちょっと疑問があるな。成功した曲を持ってるアーティストを知ってるけど、彼らは何百万回もストリームされても大したお金を稼いでない。ストリーミングプラットフォームが0.005ドルを支払い、それがバンド全体で分けられ、その後レーベルが制作やマーケティングのためにカットを取るってことはないのかな? 以前はレーベルが単に10%を渡してたのに。

記事には、彼らがBandcampで購入していて、20%未満の手数料を取られ、Patreonで支援しているって書いてある。

音楽業界がアーティストに適正な報酬を支払っているかどうかは分からないけど、映画業界は配信技術の進化を利用して、利益を制作側から配信業者にシフトさせているのは確かだね。

アーティストがストリーミングごとにどれだけ少ないお金を得ているか… 曲を書くことに対する公正な報酬って何だろう? これは全く別の話だよね。レコーディングアーティストとソングライターは必ずしも同じじゃないし、じゃあソングライターはどれくらいもらうべきなの? レコーディングスタジオやオーディオエンジニア、録音された曲を作るために関わった他の人たちは? 曲ができたら、どうやってその曲が存在することを知ってもらって、聴いてもらうか、さらには購入してもらうか? 報酬が決まらない理由は、答えるのがすごく複雑だからなんだ。最もシンプルな答えは「アーティストが自分で価格を決める」ってことだけど、全てを自分でやるとなると、かなりの労力が必要で、時間を確保するためには既に収入源が必要だし、プロに頼まない場合は音楽以外のスキルも必要になる。もし地元のカフェで演奏するだけとか、都市間をバスで移動してガソリン代とビール代を稼ぐのがやっとなら、プロとして曲を制作したり、大規模にマーケティングしたり配信したりする方法が必要だよね。ほとんどのミュージシャンがこれを自分でやるのは現実的じゃないから、音楽業界が存在しているわけで… それが彼らに全てのカードを与えて、価格や契約条件を決めさせることになる。これが不公平なことが多い理由だよ。業界が人を搾取する力を持つと、そうなるんだ。

具体的な数字は言わないけど、以下の状況は本質的に不公平だと思う。Spotifyに20ドル払ってるんだけど、彼らが手数料を取って(例えば、50%)、アーティストには10ドル残る。だけど、私はその月に一人の小さなアーティストしか聴いてない。アーティストには10ドルどころか、もっと少ない金額しか入らないのに、Spotifyは私がどのアーティストを聴いたか正確に知ってるのにね。

昔と今の大きな違いの一つは、ベッドルームプロデューサーがトラックを作ってリリースするのがすごく簡単になったから、毎日何倍も多くのミュージシャンが音楽をリリースしていることだね。週末に自分のラップトップで10曲作って、20ドルくらいで主要なストリーミングサービスに送れる。これが市場に多くの独立したミュージシャンをあふれさせて、みんなに聴いてもらおうと必死になってる。今、聴いてもらうためには、キュレーションされたSpotifyのプレイリストに入ること、フォロワーを増やすこと、そしてどこかのレコード会社の誰かが自分の音楽を聴いて興味を持ってくれることを願うしかない。Spotifyは一般の人が音楽を消費するためのツールであるだけでなく、ミュージシャンが自分をプロモーションするための主要な手段でもある。ミュージシャンとして(この仕事を夢見て諦めた人間として)、本当に辛いよ。今は競争が無限に多くて、AIのクソみたいなものがSpotifyに入ってくることを考えると、さらに悪化してる。

記事では「ストリームあたりの価格」が約0.005ドルとされています。完璧とは言えないけど、Qobuzはそれの約3.5倍を支払っています。Spotifyの代替として試してみていて、今のところ結構満足していますが、Spotifyの「ラジオ」機能は新しいトラックを見つけるのに優れています。とはいえ、本当に楽しんでいるものはBandcampでアルバムを購入しています。

ストリームごとじゃなくて、聴いた時間の割合に基づくのが好きだった。毎月15€使って、税金やSpotifyの運営費を引くと、残りは10€くらいかな。- 今月はXを90%聴いたから、9€。- Yは10%聴いたから、1€。これが公平だと思う。毎月だいたい同じ時間聴いてるし、固定のスケジュールの人も多分そうだと思う。

月に10ユーロ払ってるんだけど、そのお金はその月に聴いたアーティストの曲で均等に分けられるんだ。もし一曲だけ、つまり一人のアーティストだけ聴いたら、そのアーティストが全部のお金をもらう(サービス運営の手数料を引いた後ね)。でも、100曲聴いて100人のアーティストに分けたら、各アーティストには10セントしか入らない(手数料とか引いた後で)。これが本来のあり方だと思う。

なんでCD時代を比較の基準に選ぶの?カセットテープとかLPの時代じゃダメなの?業界はすごく変わったし、別の基準を選ぶことで「公正な」報酬についての議論が明るくなるよね。変わらないのは、大きな市場シェアを持つ縦の統合型の流通とプロモーションが、すべてのレバレッジ、情報、法的影響力を持っているってこと。そういう状況が存在する時代では、メディアが違っても同じ結果が出るんだ。つまり、交渉力、自由市場経済、政治的影響力の観点から見ると、アーティストは単に強く不利な立場にあるだけじゃなくて、人工的にそうなってる。これはダビデとゴリアテの話じゃなくて、もっと言うとダビデとデス・スターみたいなもんだね。ロジャー・フィッシャー、アダム・スミス、ジャック・エイブラムオフがみんな一方に追加のサポートが必要だって同意するなら、「公正」がスケールの反対側にあるってことは、精度や「公正さ」の哲学について心配しなくても大きな改善ができるってことだよ。

自分のホストしたオーディオの旅はLyrion Music Serverで終わったよ。前はLogitech Music Serverだったけど、今はオープンソースでコミュニティによって運営されてる。Qobuz、Tidal、Spotify、ローカルラジオ、歌詞などのプラグインもあるし、DLNA、Airplay、Squeezeliteを使ったマルチルームオーディオの同期も素晴らしい。最近、トランスコードされたストリーミングを設定したから、Apple Carplayでライブラリをリダクションビットレートで聴けるようになった。完璧ではないけど、試した中では他のオープンや商業プラットフォームよりもずっと良いよ! おすすめできる! [0]https://lyrion.org

自宅のネットワークにあるプライベートJellyfinサーバーに、昔の音楽コレクションを追加したよ。音楽のUIはNavidromeやFunkWhaleみたいな専用の代替品ほど洗練されてはいないけど、十分に使える感じ。アプリの数が少なくて済むし、ホームラボで動かしているサービスも少なくて済むのがいいね。高校時代から集めてきた音楽コレクションを見返すのは楽しかったし、ハードドライブからハードドライブへ移動させるのも面白かった。ほとんどは図書館から借りたCDをリッピングしたものか、中古書店で買ったもの、後にはiTunesやAmazon、BandCampでDRMフリーのダウンロードが主流になった時に購入したものだね。アルバムアートを更新したり、コレクションを再キュレーションするのは懐かしい思い出の散歩だった。昔はほとんどを200x200で埋め込んで、ちっちゃいSonyのMP3プレーヤーやiPodに合わせてたから、スペースを無駄にしないようにしてたんだ。音楽ライブラリは、古いDVDやそのリッピングよりもずっと良い状態を保っているよ。480pの映像が大きなディスプレイで見ると粗いのと違って、ロスのあるMP3でもそこまで悪くは聞こえないしね。自分の音楽コレクションのメタデータを更新したいなら、以下をおすすめするよ: * https://covers.musichoarders.xyz/ アルバムアートを探すのに。 * https://picard.musicbrainz.org/ 音楽のメタデータをファイル内で編集するのに。 スマホからJellyfin、Funkwhale、Navidromeを使ってSpotifyや他の音楽サブスクリプションサービスを置き換えたいなら、TailscaleやNetbirdを使ってみたけど、どちらもネットワークの知識が必要だよ。

最近、Plexが自宅サーバーへのリモートアクセスに料金を取るようになったので、Jellyfinに切り替えたよ。考えている人には、TailscaleとJellyfinの組み合わせがすごく良いって言いたい。やり方のドキュメントはあまり良くないけど、少し試行錯誤すれば、ローカルIPレンジとTailscaleのIPレンジをJellyfinの許可された範囲に追加するだけでOK。これで、テイルネット上のどのデバイスでもアクセスできるようになるよ。さらに進んで、認証のあるパブリックウェブアドレスを持つクラウドVMを設定して、VMにTailscaleをインストールして、ポート443をJellyfinのテイルスケールIP:ポートにリバースプロキシするように設定したんだ。これで、テイルネットに接続していないデバイスでも、どのウェブブラウザやJellyfinアプリからでもアクセスできるようになった。結果にはすごく満足していて、Plexとは違って、この設定は将来的に強制的な変更を受けることがないのがいいね。

著者も使っているFeishinはJellyfinをサポートしているよ。モバイルについては、SymphoniumがJellyfinをサポートしているけど、複数の音楽ライブラリを分けて維持できるFinampの方が好きだな。

Spotifyのモデルから離れて、アーティストを直接サポートするオプションに移行する人を見ると、いつも嬉しいよ。この記事から何かを奪うつもりは全くないけど、システム図を見ると、システム思考の人たちが自分のルーブ・ゴールドバーグ的なシステムを作り出して「体験を最適化」しようとするのはすごいなと思う。13の異なるコンポーネントを数えたよ。著者にとってそれがうまくいくなら、もっと力を入れてほしいけど、個人的にはこういうことに関してはテクノロジーをいじる時間を減らして、新しい音楽を聴く時間を増やしたいんだ。BandcampやAppleから買って、ローカルで同期させて終わり。今のところBandcampのiOSアプリはApple Musicよりも良いと思う(まぁ、そんなに高いハードルではないけど)。新しい音楽はリスナー支援のストリーミング公共ラジオから自然に見つけているよ。分析や推薦については触れていないけど、正直なところ、典型的なアルゴリズムや推薦メカニズムを通して本当に好きなものを見つけることはめったにないし、公共ラジオをバックグラウンドで流しているだけで新しいものに出会うのは、今でも魔法のようで、自然で、音楽の幅を広げるにはすごく良い方法だと思う。それでも、似たようなセットアップを求める人には良い出発点だね。

公共ラジオをバックグラウンドで流しているだけで新しいものに出会うのは、今でも魔法のようで、自然で、音楽の幅を広げるにはすごく良い方法だと思う。 アルゴリズムによる推薦はほとんど諦めて、人間のキュレーションに戻ったよ。音楽や映画、文化のすべてについて書いている人たちがいるからね。自分が信頼できる味の人たちを見つけて、RSSでフォローして、好きそうなことを読むようにしている。中にはアルゴリズムを使っている批評家もいるだろうけど、彼らにはその沼に飛び込んでもらって、宝石を掘り出してもらえばいい。私は岸に留まって、見守って待つよ。

これだね。別の技術スタックを維持する必要はない。音楽はディスクに保存して、VLCで再生。移動中は、スマホに音楽のコピーがあるから。KISSだね。

理解できない。記事の冒頭で著者はこれがSpotifyの良さだと言っている。「何年も、私は他の数百万の人たちと同じようにSpotifyに頼っていた。どこでもストリーミングできる便利さは否定できないし、アルゴリズムを通じて新しい音楽を発見したり、友達とプレイリストを共有したりできた。」この自己ホスト型のスタックで、どうやってアルゴリズムを通じて新しい音楽を発見したり、友達とプレイリストを共有したりできるの? 彼はSpotifyが提供していたものに加えて、全てを自分で構築したと言っているけど、どうやってそれが実現できるのか分からない。これが私がSpotifyを使う主な理由だから。80%の時間は、自分の音楽の好みに基づいた自動プレイリストを聴いていて、新しい曲や古い曲(でも自分にとっては新しい)を常に聞いている。もし気に入らなければ、好きなだけ次の曲にスキップできる。新しいアルバムを全部買ってコレクションに加えなきゃならないのに、どうやってそれを実現するの?

最近、Apple Musicをやめたんだ。UXの観点からクライアントがひどくなって、使うのがイライラするようになった。特にデスクトップではね。ライブラリ全体をディスクにキャッシュする簡単な方法もないし。他のサービスやクライアントはElectronで作られてるのが多くて、できれば避けたい。ちょっと手間と苦労があったけど、今は自分でホストするしっかりしたシステムができたよ。 0. epouponのLightweight Music Server (LMS)は、Cで書かれたシンプルなSubsonicクライアントで、すごく良いしもっと知られるべきだと思う。 1. wrtagは、Goで書かれたタグ付け用の機能が少ないbeetsだよ。 2. amperfyは、iOSで動く素晴らしいSubsonicクライアント。LMS上のすべてを自動でキャッシュするように設定されてる。 3. Syncthingは音楽ファイルを同期するツール。説明不要、超安定してる。 4. SwinsianはmacOS用の音楽プレーヤーで、昔のiTunesを思い出させるけど、ずっと良い。Apple Musicを使った後だと情報密度がすごく新鮮に感じるよ。 5. すべてがTailscaleでシームレスに連携してる。ボランティアが維持しているオープンソースのスタックが、音楽分野ではAppleのUXを簡単に超えてるんだ。

ひどいApple MusicのUIについて言うと、ほんとに不自然で混乱する。特に、アプリ内でスリープタイマーを設定できないのが信じられない。ググってみたけど、見つけた唯一の方法は、時計アプリでタイマーを設定して、その着信音を「すべての再生音声を停止する」アクションに変更することだった。なんで???

安いCDを買ってリッピングし始めたんだ。月額サブスクリプションと同じ金額で、合法的にどれだけ音楽をストックできるかって、すごいよね。俺のスタックは君のとかなり似てるし、Tailscaleを使えばどこでも自分のストリーミングプラットフォームがあってめっちゃ便利。しかも、ストリーミングには存在しないアルバムもたくさん持ってる。デメリットは、ストリーミング専用のアルバムもあって、主にディズニーのサウンドトラックなんだ。それはQobuzからダウンロードできるから、FLACでゲットしてるよ。

LMSはCじゃなくてC++だよ。

80年代から2000年代までのCDとSACDが400枚以上あるよ。それをRoonサーバーにリッピングして、Qnap NASに接続して、今は30TB以上のストレージがある。ファイル形式はFlacかDSF。年数が経って劣化してリッピングできないCDについては、有名なロシアの音楽アーカイブサイト用にスクレイピングエージェントを書いて、MariaDBインスタンスに100万以上のマグネットリンクを保存してる。バックアップ用に、購入したアルバムやトラックだけをPut.IO経由でダウンロードしてる。私のマランツアンプはRoon Readyで、Roonアプリ(デスクトップ版とiPhone版両方とも)もかなり良いし、音質も素晴らしい。アプリがファイルをビットパーフェクトでストリーミングしてくれるから、ダウンミキシングなしで、イーサネット経由で聴ける。残念ながら、RoonはDVD-AやDTSフォーマットを正しく扱えない。そういうのはPlexサーバーとApple TV上のInfuseを使ってるけど、ちゃんと動いてるよ。(そう、.dtsファイルをffmpegでマルチチャンネルFLACに変換できるのは知ってるけど、ファイルが多すぎて、自動変換のワークフローを作る時間がなかったんだ。)

本当に気になるんだけど… SACDを本当の高解像度でリッピングしたの?もしそうなら、どうやって?

OPと同じことをやったけど、iOSではAmperfy、AndroidではTempoを使ってる。Navidromeは設定がめっちゃ簡単で、新しい音楽もすぐ見つかる。全然壊れないし。インターネットには直接接続してないけど、Cloudflareトンネル(OPと同じ)と、俺だけが使ってるマイナーなURLを通してる。あと、SpotifyのプレイリストをYouTubeのURLリストに変換するためのちょっとしたPythonスクリプトも書いた。Shazamを使えば、Spotifyのプレイリストに曲を追加できるから、新しい音楽を発見する手段にもなるよ。

そんなこと言いたくないけど、隠れてるからって安全とは限らないよ。

マイナーなURLは、IPv4アドレスにいるならあまり関係ないかも。数が限られてるからね。人々はURLをスキャンするのを飛ばして、IPを直接イテレートするから。

Spotifyを使ってる唯一の理由である、膨大な音楽カタログがすぐに利用できるって機能が欠けてる。foobar2000から来たから、Spotifyの他の機能はほとんど面倒くさいか、必要ないと思ってる。