配信中に画像を送信・表示させたい REALITY Advent Calendar #22
はじめに
おはようございます。REALITY Advent Calendar 2021 22日目担当、Unityエンジニアのようてんです。解散後に観光で歩き回る気マンマンでいたのですが、みんな早々に脱落していったので一人でちょっとだけ散歩してきました。主にはその話をしたいと思います。
合宿中に開発したライブプレゼン機能の話(余談)
配信中に画像を送信・表示させる「ライブプレゼン」機能というものを作りました。
開発目的
ようてんは、およそ月に1回の頻度で、「最近のREALITYの話」と題して、REALITYの最近のアップデートに関する内容を喋る配信をしています。
その中で、いわゆるプレゼン・説明会のように、何かを画面に映しながら配信をしたいと思うわけです。がんばって動画をつくれば「YouTube再生」機能で似た見た目を実現できるのですが、いかんせん手間ですし、自分が使いたい機能を作ってみることにしました。
【機能1】ローカル画像送信機能
まず、「アバターカメラ」機能で開発した、スマホに保存されている写真を選択するファイルピッカーインターフェースがすでにありましたので、それを利用し、「ローカル画像送信」機能を作りました。
配信中の音声やモーション情報を投げる経路であるHabaneroプロトコルに(残念ながらバイト列は直接扱えないため)Base64文字列に変換した画像データを詰めて送信し、受信側で表示させるようにしました。(本Advent Calendarでも何度か登場している、Habaneroプロトコルについての詳細はこちらを参照ください。)
ただし、ちょっと触ってみたところファイルサイズの観点であまりギガには優しくないこと、リサイズをがんばって実装しても配信枠への途中入室者が画像を受け取れないため、これはあまり実用的でなさそうということで、別機能を作ることにしました。
【機能2】画像URL送信機能
画像のバイナリの代わりに画像のURLを送るように変更し、インターフェースはコマンド経由にしました。URL文字列であれば通信量も極小のため、定期的に再送してやることで途中入室者も画像が表示されます。最初っからこっちだけ作っていればよかったと途中で思いましたが、開発ってそういうところありますよね。
リリースに向けて
この合宿で開発する機能は「実用的なものを、リリースまで持っていけるようにしたい」と考えていました。そのため、既存の実装を邪魔しないように、リリースしても問題ないように、少しまわりを固めていきます。
そんなわけでリリースした際には上記の画像のような飯テロやアバターアイテムの紹介などに使っていこうと考えています。
【注】本機能のリリース時期は未定です。(全ユーザ解放には色々あると思われるのですぐにお出しできるものではないと考えています、悪しからずご了承を。)
湯河原などを観光した話(本題)
チェックアウトしたのち、観光する気があった一部のメンバで、まずは近場から、と万葉公園に散歩にでかけました。
ちょうど奥の湯河原惣湯がオープンしたばかりだったのですが、公園と融合した観光・商業施設であり、内部はモダンな感じで整備されており、少々(期待外れの)不思議な空間でした。
さて、その後にどうしようかとなったところで、みんなはやっぱり合宿の疲れが厳しかったらしく、ここで解散となりました。
そうなると、きちんと歩ける靴と少なめの荷物に調整してきた、観光する気マンマンだった僕の情熱の行き場が迷子なわけです。さてどうしたものか。
そうだ、山に登ろう。
天照山ハイキングコース
観光案内サイトを眺めていると、ちょうどいい(?)ハイキングコースが紹介されているのを発見しました。
めちゃくちゃシャレオツなデザインのサイトなのですが、しれっと山道150分と書いてあり、これは観光用のおしゃれな靴などでは危ないやつです。赤字で注意書きが記載されていますが、コロナ禍以前は運用されていたバス路線でまず山の頂上付近まであがり、そこから降りながら天照山神社・白雲の滝をまわるのがもともとのコースだったのではないでしょうか。
実際のところ山中では、きちんとトレッキングシューズを履いて、それなりの格好をした人しか居ませんでした。正直、完全に罠だと思います。
湯河原パークウェイもコロナ禍で閉鎖されていました。がっつりとした登山道を、まずは神社に向けて登っていきます。紅葉はまだちょっと早かったようで、まだまだ緑色がメインであり、ほどほどでした。残念。
登っていると、山の中に突然神社が現れます。山の上まで椿ラインという道路が走っており、裏から来る分にはアクセスも良いせいか、キレイなものでした。もう少しうらぶれた雰囲気を期待してしまっていたのですが。
そのまま神社を抜けて、白雲の滝へ。こちらはかなり迫力があり、良かったです。
で、神社と滝はいいのですが、その先、頂上らしい頂上は見つからず、いきなり椿ラインの道路に出くわします。
確かに眺めはいいのですが。
こういう車道が走っている山の中腹なのです。
確かにバス停って書いてあります。天照山の頂上はどこに行ってしまったのか。
そういえば箱根観光をするつもりだったんです
ここで唐突ですが、REALITY Advent Calendar初日の合宿紹介エントリを振り返ってみましょう。
合宿が近づくまで、結構みんな湯河原と箱根の位置関係を理解しておらず湯河原の帰りに箱根観光をするつもりだったり、そもそも箱根に行く気だったりしてたんです。
そんなわけで計画途中は結構みんなで箱根の話をしていたのですが、いまや観光する気が残ったのは僕ひとりなわけです。
そうだ、箱根に行こう
山奥でかなり厳しい電波事情の中、必死に調べ物をしたところ、2時間半ほど歩けば芦ノ湖に着きそうなことがわかりました。天気もいいしなんとかなるだろう、と箱根に向かって歩き始めることにしました。
車道をひたすらテクテクと歩きます。途中、アネスト岩田スカイラウンジでお昼をいただきます。
ここで突然ですが豆知識です。みなさんご存知ですかね?Googleマップって、みんなが実際に移動した情報から時間を算出しているので、徒歩でその道を通った人が少ないと、徒歩の検索結果が出ないんです。
これはGoogleマップさんが「徒歩では抜けられるけど、車では到底通れない」ような道を検索結果に出すことが昔は多かったのですが、そういう問題に対するカウンターとしての実装ではないかな、と僕は推測しています。(そしておそらく、同様の話として、自転車乗りの情報が十分に集まったので「自転車ルート検索」ができるようになったのだろう、とか。)
なお、さらに豆知識として、健脚の人しか歩いていないであろうコースの検索時間は短めに出る傾向があります。機械学習を感じますね。
箱根観光
そんなわけで芦ノ湖を眼下にひたすら車道をテクテクと歩き、箱根町港に到着です。日が暮れる前に着けてよかった。
海賊船の最終便がちょうど出港する直前だったのですが、勢いで切符を買って乗り込みます。30年ぶりぐらいに乗りました。
やったー、箱根神社だー!
フラグ回収成功です。たいへん満足しました。
秋の箱根、日が暮れたらめちゃくちゃ寒かったです。あと、周りに家族連れかカップルしかいなくて余計に寒く感じました。次は誰かと来たいですね。
おわりに
「箱根-湯河原は山の自然を楽しみつつ、ほどほどの時間で歩いていける」ということがわかりました!
明日のAdvent Calendarは、最近Meetyでカジュアル面談をがんばっているションローによる「MacでMachPortを用いたプロセス間通信をしてみる」です。お楽しみに!
楽しかったけど観光案内にあのハイキングコースはあかんと思うんです。