VRC音楽イベントカレンダーの仕組み

■概要

その昔、餅はVRC音楽イベントカレンダーというものを作りました。

イベント登録フォーム

ワールドに置くやつ

この記事は、VRC音楽イベントカレンダーが放置しても勝手に更新される仕組みをどうやって作ったかの話です。

■なぜそんな仕組みを作ったのか

めんどくさいからです。
元々、VRCにはVRCイベントカレンダーという、あらゆるイベントに対応したカレンダーがあります。
そしてそのカレンダーをVRCのワールド内で見ることができる仕組みもあります。
しかし、VRCのワールド内で確認できるのは開始時間と終了時間とイベントタイトルだけでしたので、
・DJイベントなのかライブイベントなのかその他もろもろなのか
・どんな音楽ジャンルのイベントなのか
・誰が出演するのか
・インスタンスの種類は何か(フレオン、フレプラ、インバイトなど)
・誰にログインするのか
などの詳しい情報をワールドにいながらフルに確認することは出来ず、
ニコ動の動画タイトルにつく【歌ってみた】【RTA】などのように、イベントタイトルに仕込む事で最低限of最低限の情報は確認できるという状態でした。
これは決してイベントカレンダーの仕様の問題ではありません。音楽イベントというものは「内容を把握して行くか行かないかを決めるために必要な情報」が多すぎて、イベントカレンダーの仕様では対応しきれないのです。

なので、知らない人が音楽イベントを知り、足を運ぶ導線として音楽イベントに特化したカレンダーの需要は大きいと考えていました。
私自身、「イベント開催時点でその存在を知らず、後日のレポで存在を知り『行きたかったんだが????』とお気持ちファッキンホットになる」というケースを何度も経験していたので、自分のためにも作る価値はあると考えました。
しかし、イベントカレンダーを作ると言っても、手動登録手動更新では私がめんどくさくなってしまいます。
めんどくさいと感じた事はほぼ確実に続かないのが私の性質です。
フルトラすら「キャリブレーションとか色々めんどくさーい」となって一切やらなくなってしまいました。
そんなめんどくさがり屋な私なので、「私がめんどくさく感じない仕組みを作らない限り、私がサービスを作ってもまともな運用は出来ない」と考えました。
と言うわけで、本家イベントカレンダーが自動生成をやってるとの事なのでその辺りの技術を少し勉強して、似たような仕組みを作ることにしました。

■システム構成

今回使ったサービスは、
・Googleフォーム
・Googleドライブ
・Googleスライド
・Googleカレンダー
・Googleスプレッドシート
です。
これらをGAS(Google Apps Script)で連携させています。
後にSDK3版制作にあたって、
・GitHub Actions
を追加しています。
お金がかかるサービスはめんどくさいので、無料の範囲で済ませようとしています。

■処理の流れ

①ユーザーがGoogleフォームにイベント情報を入力して送信する
②送信内容はGoogleスプレッドシートへ書き込まれる
③スプレッドシートに書き込まれたのをトリガーとしてGASスクリプトが走り、外部から閲覧可能なGoogleカレンダーのスケジュールを更新する
④1時間に1回、Googleスライドに仕込んだGASスクリプトが走り、スプレッドシートの情報をもとに「イベント開始時刻が現在時刻以降のイベントを、近い順に6つ」並べたスライドを自動で作る。その後、そのスライドをPNG画像化してGoogleドライブの特定のファイルに上書きする。
⑤SDK2用音楽イベントカレンダーのVRC_panoramaは、そのPNG画像へのリンクを設定してあるので、自動更新されたカレンダーがワールドに表示される

ここまでがSDK2時代の処理の流れです。
GASを使うのもこういうサービスを作るのも初めてで、数日で組んだものですが、特に問題なく、もう半年以上稼働し続けてくれています。

2021年3月下旬、SDK3向け対応で以下の処理が追加されました。

⑥GitHub Actionsが1時間に一回、④で生成されたPNGを取ってくる。
⑦取ってきたPNGを、GitHub Actionsの仮想マシン内にインストールしたffmpegでmp4に変換し、そのmp4をGitHubリポジトリに置く。
⑧SDK3用音楽イベントカレンダーのvideoplayerは、このmp4を再生するようになっているので、自動更新されたカレンダーがワールドで表示される

この追加処理はSDK2版の処理の流れに影響を与えることなく行えたので、個人的に満足しています。

■感謝

というわけで生まれたVRC音楽イベントカレンダーですが、ありがたい事に沢山のイベント関係者の皆様に登録していただき、音楽イベントへの導線の一つとして活用していただけるようになっております。
サービスは使う(登録してくださる・ワールドに設置してくださる)人がある程度いて初めて効果を発揮するものなので、皆様のおかげでカレンダーはカレンダーとしての役割を全う出来ているのです。
本当にありがとうございます。
最近はちょくちょくライブ系のイベントも登録していただけるようになってきていて、嬉しい限りです。
今後も音楽イベントシーンをひっそり支えるサービスとして続いていけたらと思っています。
これからもよろしくお願い致します。

この記事が気に入ったらサポートをしてみませんか?