【Rails】同人音楽の24時間配信を行なった結果の報告

ちょっと前まで Doujin Music Radio ♪ 24h Livestream というタイトルで同人音楽の24時間配信を行なっていました。
通常の24時間配信と異なり、ユーザーが自分の曲をアップローダーを通してアップしたら自動でプレイリストに追加される配信形態となっていました。
ここではその配信システムの実現方法について説明します。

目的

この仕組みは同人音楽と聴覚的に出会う機会の一つのきっかけになればと思い作成しました。
リスナーは知らない曲にはなかなか出会えません。
もし出会えたらハマっていたかもしれない曲にすら出会えないこともあります。
もっといろんな音楽と出会うきっかけに少しでもなれないかなと考え、思いついたのが投稿型の24時間配信を使う方法です。

従来の24時間音楽配信との違い

簡単に言うと自分の楽曲を投稿できるかできないかの違いです。

従来の方法では、あらかじめ配信者が用意した AppleMusic や Spotify 等の各種ストリーミングサービスのプレイリストを用います。
しかし、この方法では楽曲が各種ストリーミングサービスで配信されていなければなりませんが、同人音楽は各種サービスで配信されていないことも多いです。
また自分の曲を流してほしい場合もプレイリストに反映させるのにチャンネル運営者が作業を行わなければならず、手間がかかります。

上記の課題をクリアするために、私の24時間配信では投稿型にしました。
この方法だと各種ストリーミングサービスにない曲でも対応可能です。
また私がプレイリストに曲を追加する手間を省くためにプレイリストへの自動追加も行います。

使った機材

配信サーバーとして通常の Windows10 が入ったPC を使用しました。
**理由:**OBS上でリアルタイムに曲名を表示するプラグイン『Snip』を使用する為
もう一つはスマートプレイリスト(条件を指定した楽曲を自動で追加してくれる機能のあるプレイリスト)が使用できる iTunese を使用する為

配信もほぼFPSが必要ないのでグラボもいらないと思います。

実装方法

**一番の課題点:**配信サーバーにアップロードできるアップローダーの作成

結果:直接は実装がめんどくさかったのでGoogle Drive の自動同期機能を使用しました

アップローダーの作成

Ruby on Rails を使用して、下記の記事等を参考にしてGoogle Drive上にアップできるものを作りました。

参考記事: https://qiita.com/ku_ma/items/161f483a103e955144b2

アップローダーの画面

ソースコードはトークンなどを伏字にしたものを後日公開します。

同期設定(私の場合)

iTunese側

  1. スマートプレイリストを作成
    曲数で制限すると曲の追加時に配信が止まる可能性が出るので私は再生回数で制限をかけるといいと思います。
  2. デスクトップ上に新しく Music フォルダを作成し、さらにその中に iTunesに自動的に追加 と言う名前のフォルダを作成します。(このフォルダを後にGoogle Drive の同期対象にします)
  3. iTunese側で読み込むファイルの保存場所を変更
    先ほど作成した Music フォルダを指定します。

Google Drive側

  1. 配信用PCにGoogle Driveを入れる(https://www.google.com/intl/ja_ALL/drive/download/

  2. PC用のGoogle Driveの設定を行う
    一部のフォルダを同期 と書かれた項目から、iTunese側の設定で作成した iTunesに自動的に追加 を選択します。
    こちらの記事のStep2にあたります。(https://www.imobie.jp/cloud-tips/fix-set-up-google-drive-synchronization.htm

  3. うまく同期されたらブラウザからGoogle Driveを確認し、Google Drive 側に iTunesに自動的に追加 フォルダが作成されていたら、そのフォルダのIDをURLよりコピーして、作成したアップローダーに適用します。

以上で完成だと思います(忘れてる部分とか追記がなければ…w)

あとがき

同期処理をGoogle Driveに任せることで短時間での実装が可能になりました。
同期タイミングは Google Driveの気分でしたが、概ね満足です。

アップローダーのRailsアプリを動かしていたサーバーはHerokuです。

配信設定には触れませんでしたが、Snipの設定については以下の記事が参考になりました。

参考記事: https://beehivegaming.ga/blog/2018/11/11/obsnowplaying/