Slide4VRアップデート 2021/07/06

Vキャスでのプレゼン支援サービスのSlide4VRをアップデートしました. slide4vr.nklab.dev

というか、アップデート自体はちょこちょこずっとやってきてたのですが、今回バックエンド側を結構弄ったのと過去の改修も含めてまとめて書いておこうかと。

アップデート

VCJE対応

亞希乃さんと一緒にVCJEへの対応をしました。これによりSlide4VRのサイトにアクセスしたり、config.jsonをエディタで貼り付ける作業が要りません。超絶便利!! 亞希乃さん、ありがとうございます。

booth.pm

合わせてトークン対応したり外部のアプリから連携できるように改修しています。もし自分のアプリから連携させたいという方がいらっしゃいましたらTwitterなどでお声がけください。

個別スライドのOGP対応 (実験)

まだ実験段階ですが個別スライドのOGP対応を行いました。これで下記のようにブログに埋め込んだりツイートした時にもスライドが表示されます。ただし、変換まではスライドが表示されるようになってから数十秒程度かかるのでアップロードして画像に変換した直後のスライドはOGP対応されてないので注意。

slide4vr.nklab.dev

SSG対応が必要だったので副産物として個別ページが静的ファイルになっています。ピュアなVue.jsからNuxt.jsに切り替えたりと想定よりだいぶ難産な改修だった。。。

サービスメッシュ/Workflow周りの改修及びパフォーマンスの改善

これは完全にバックエンド側の話で利用側からは見えない部分ですが、Slide4VRは内部的にはマイクロサービスになっています。このサービス間の接続およびワークフローエンジンとしてkuda-proxyという独自のサービスメッシュを使っていたのですが、GCPが正式にCloud Runへのワークフローに対応したのでそちらの機能を利用するように作り直しました。合わせてデバッグしやすいようにシステム構成もいくつか変更しています。VCJE対応の時にデバッグがしづらい部分が浮き彫りになったので、その辺に対応できるようにサービス間の通信のログを出力できるようにしたり、テスト用のAPIに切り替えやすくしたりですね。

また、元々Javaで実装していてCloud Runの謎の制約により各サービスの起動が10秒程度かかりトータルで3数十秒かかるという状態だったので、VCJE対応のタイミングでGraalVMのnative-imageに変更しました。これで1秒以下の時間で起動するので快適になったのですが、反面ビルドが10分近くかかるように。。。 という分けで、kuda-proxyをGoでGCPのワークフロー対応と合わせて書き直しています。ビルドも実行も速くなって快適。また、APIの認証周りを強化したので一応セキュリティが上がっています。特にパブリックから操作されてまずいものは元からないのだけど。

今後の対応予定

スライドの公開機能など基本機能の拡充

現状ではスライドはリンクを知らないと見れない、という状態なのでSlideShareドクセルみたいに公開設定にしたスライドが普通に見えるようにはしたいと思います。あと、地味に編集機能が今ないのでそれも作らないとなぁ。。。

UIも色々バグっぽい動きしてるところがあるので、その辺の改善もですね。

VCIジェネレータ対応 & 強化

Roomとかにも対応できるようにプレゼン用VCIをPDFから直接生成する機能を下記に作ってるのですが、こちらをSlide4VR側に取り込みたいですね。 また、生成するスライドVCI自体もリモコンに対応したりといくつか改修を入れていけたらと思います。TSOへの自動アップロードはAPI待ち! vci-slide-generator-dnb6froqha-uc.a.run.app

個別スライドのOGP対応

パフォーマンスの劇的な改善はちょっと難しいのですが、アップデートされたことが分かりやすくなるようにとかUI的な改善は入れたいかと思います。

まとめ

ここのところずっと裏側の仕組みのところをずっと弄ってました。UIはほぼ変わってないのですが裏側は結構変わってたりはします。これでだいぶ色んな改修がしやすくなったので、もうちょっと使いやすいようにUIも改善していきたいですねー。 今後は改修したらもうちょっと頻繁にアップデート情報を書いていきたいですね。

それではHappy Hacking