Skip to content

Commit 8170c21

Browse files
committed
説明用に画像を追加、友人のTwitterリンクを追加
1 parent b40e601 commit 8170c21

File tree

4 files changed

+10
-2
lines changed

4 files changed

+10
-2
lines changed
628 KB
Loading
36.8 KB
Loading
654 KB
Loading

preprocessed-site/posts/2019/haskell-in-vrchat.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
2126
VRCではアバターやワールドを自由に作ることができるのですが、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`がぱっと見わからなかった、型コンストラクタ、値コンストラクタの概念)に馴染みが薄かったことでした。
3542
Discordで画面共有しながら説明を行ったのですが、やはり同じ画面を見ながら説明するのはとてもやりやすいと感じました。
@@ -55,6 +62,7 @@ VRC-LTという名前で6回ほど開催しているのですが、場所の制
5562

5663
VRChatはPCのみでも利用することができます。
5764
VRC-LTはほぼ月イチペースで不定期開催ですので、もしよろしければ参加していただけると嬉しいです。
65+
開催時のアーカイブ等も以下のWebサイトにて公開中です。合わせてご覧ください。
5866
[https://vrc-lt.github.io](https://vrc-lt.github.io)
5967

6068
# リポジトリ

0 commit comments

Comments
 (0)