@@ -14,22 +14,29 @@ tags: Windows, VRChat
1414さて、今回はあんまり深い話はありません。どちらかと言うとこんなニッチなところにHaskell使ったよというネタで書きます。
1515
1616# VR空間でLTがしたい
17- とつぜんですが 、私は[ VRChat] ( https://vrchat.com/ ) (以下VRC)というソーシャルVRサービス(Second LifeのVR版みたいなものです)にハマっています。
17+ 突然ですが 、私は[ VRChat] ( https://vrchat.com/ ) (以下VRC)というソーシャルVRサービス(Second LifeのVR版みたいなものです)にハマっています。
1818友人との雑談の中でVRCの中でLT会ができればプログラミングなどの話題で盛り上がれる人が集まってワイワイ楽しくできるのではないかと話して、その場のノリでとりあえず実装してみることにしました。
1919
20+ ![ 完成したワールド] ( /img/2019/haskell-in-vrchat/vrc-lt-room.png " 完成したワールド ")
21+
2022今回作りたかったのはスライドを表示するためのスクリーンと、ページ送りに使うボタンを実装したワールドです。
23+
24+ ![ 発表者用コントロールパネル] ( /img/2019/haskell-in-vrchat/vrc-lt-control-panel.png " 発表者用コントロールパネル ")
25+
2126VRCではアバターやワールドを自由に作ることができるのですが、VRCが提供するコンポーネント以外のスクリプトは利用できません。Haskellユーザとしては得意なことを活用しづらい土壌です。
2227幸いスライドを表示する手段はゲーム内でURLから画像を取得し表示するVRC_Panoramaというコンポーネントを利用することにより確保できましたが、VRC_Panoramaが取得できる画像はワールド作成時に決め打ちで指定されたURLのリストに含まれるもののみです。
2328そのため、スライド画像へのURLのリストを直接VRC_Panoramaに渡していると、イベントを開催する際よくある飛び入り参加やスライドの用意が遅れた参加者に対応できなくなってしまいます。
2429
2530その問題を解決するために、イベント開始時からのページ数とスライドの画像URLをマップするWebAPIを用意しました。
2631具体的には、` /slides/{pageCount} ` のような形のエンドポイントを持ったAPIを用意し、そこから実際の画像へリダイレクトをかけるという方法を取りました。
2732
33+ ![ 実装イメージ図] ( /img/2019/haskell-in-vrchat/vrc-lt-image.png " 実装イメージ図 ")
34+
2835# Webフレームワーク
2936今回は自分で使うだけだしということでさらっとやってみたかったのでSpockを利用しました。もう少し誰でも使えるサービスにしたいと考えているのでServantに載せ替えてかっちり作り直そうかと思い移植しているところです。
3037
3138# はじめてのHaskellペアプロ
32- じつはLT会をやろうと思いついた友人のBOXPはClojureユーザで 、せっかくだからとAPIの開発を手伝ってくれました。
39+ じつはLT会をやろうと思いついた友人の [ BOXP ] ( https://twitter.com/b0xp2 ) はClojureユーザで 、せっかくだからとAPIの開発を手伝ってくれました。
3340あまりHaskellに馴染みはなかったものの、いわゆる関数型プログラミング的な概念はバッチリなのでスススっと書いてくれました。
3441書いてくれる上での障壁になったのは、型関連の要素(` data ` や` type ` や` newtype ` がぱっと見わからなかった、型コンストラクタ、値コンストラクタの概念)に馴染みが薄かったことでした。
3542Discordで画面共有しながら説明を行ったのですが、やはり同じ画面を見ながら説明するのはとてもやりやすいと感じました。
@@ -55,6 +62,7 @@ VRC-LTという名前で6回ほど開催しているのですが、場所の制
5562
5663VRChatはPCのみでも利用することができます。
5764VRC-LTはほぼ月イチペースで不定期開催ですので、もしよろしければ参加していただけると嬉しいです。
65+ 開催時のアーカイブ等も以下のWebサイトにて公開中です。合わせてご覧ください。
5866[ https://vrc-lt.github.io ] ( https://vrc-lt.github.io )
5967
6068# リポジトリ
0 commit comments