これまでのあらすじ
これまでのあらすじと今後の開発についてお知らせ。
さて、ちょっとこれまでのまとめと今後についてお知らせしたいと思います。
まず、ココ最近はRATHでVerethragna(ウルスラグナ)の開発にいそしんでおりましたが、Verethragnaも今のところ安定しておりまして、一段落というところになっております。もちろん今後も開発は継続するのですが、RATHとNHKさんとでVerethragnaを共同開発になったりそもそもRATHからの提供とゆーこともありVerethragnaがかなりビジネスユースに傾いておりますので、チャレンジングな実装をした場合において、不具合の発生や不安定になる可能性が高く、ご利用中のユーザーの方々やRATHにもご迷惑がかかってしまいますので、そういったチャレンジングな実装については現状では消極的な状態でございます。もちろん不具合や脆弱性などがあれば対応しますのでご安心ください。
ちなみにそのチャレンジングな実装は最近ですと「ブラウザ接続機能」です。
このブラウザ接続機能については何度か記事にも登場しているのですが、途中までは順調と言う風にお伝えしていたのですが、最後の最後に強敵が控えておりました。
マウスやキーボードの操作系命令をブラウザからサーバーに送信するのですが、これがまるで安定しません。前回の記事の時も発生してはいたのですが何とかなるかと思いきやWi-Fi環境になるとかなりの頻度でエラーを吐き出してリクエストが届かず。素のGETやPOSTはもちろんのこと、同期や非同期、Fetch APIやXMLHttpRequestなどを色々と試しましたがまるで安定しません。1秒間に何十回も送る必要があるリクエストはサーバー側(Verethragna)は問題ないと思うのですが、ブラウザ側の処理がおかしなご様子。しかもインターネットを介すと致命的に動きません。まあ暗号化もしていないので利用シーンは少ないかもしれませんがもしかすると閉域網やVPNとかご利用されることもあるかもしれないと試してみましたがヤバイくらい動きません。たぶんもっと良い実装方法があるのかもしれませんがココずっと悩んでました。いっそのことブラウザ側から送信するストリーミングにしようかと思ってみましたが、現在においてほとんどがWebSocketやWebRTCですのでサーバー側の実装がなかなか難しいやつです。もちろんそれらも実装できなくもないのですがVerethragnaにかなり手を入れることになり通常接続にも多大な影響がありますので選択することができませんでした。Fetch Upload Streamingが使えれば良かったのですがまだ対応ブラウザも少なくMacOSでは動きません。いずれ動くのでしょうけど。これ前回も書いた予感。
とゆーわけでブラウザ接続機能も操作系で行き詰っている状況でございました。
ブラウザ接続機能の開発をもっと進めるにはコア部分にも手を入れる必要があり、そうなるとVerethragnaに悪い影響を与える可能性もでてきましたので進めることができなくなっていました。
ですのでなにかこーVerethragnaではないなにかこーもっと大胆に実験できる場が必要かなと。思えば、BrynhildrとGungnirも同じような経緯で、Brynhildrがビジネスユースになり、GungnirがR&Dのような感じになりました。そうだ、VerethragnaのR&D的な感じのを作れば良いんじゃなかろうか。
とゆーことではじまりました新企画「新しくR&D的なものを作ってブラウザ接続機能をゼロから実装しよう」
根本から考え方を変えます。Verethragnaにあった簡易HTTP機能ではダメで、はじめから双方向でストリーミングができる前提で考えます。となるとWebSocketが最有力候補です。以前の記事にもある通りWebSocketがあればWebAssemblyも見えてきます。いやまだ見たくないですけど。あと前回の記事で書いたプロキシ対応。あれは忘れてください。幻です。
で、つまりはWebSocketサーバーを実装する必要があるのですが、Verethragnaは既になかなかのボリュームになってますし、前述の通りの事情でVerethragnaに実装は難しいのと、別ブランチにして二重実装も手間なんで新たな触媒を探していました。まあ実験的な感じなんで何でも良いんですけどできるだけ軽量なやつ。
で、見つけたのがBrynhildrのベースとなった「Vritra」です。こいつの良いところはBrynhildrとしての機能を実装する前のシンプル極まりない感じのバージョンが倉庫(?)にありまして。VerethragnaのベースのVajraも良いかなと思ったのですがコア部分から作り直してたこともありずっと手探りで開発されており丁度良いバージョンが見当たらずいつのまにかVerethragnaになっており。ちなみにこの倉庫には世に出ていないリモートデスクトップの名前付きのプロトタイプがいくつか存在しており。そのお話はまたいずれ。
Vritraの後にGungnirが登場してますので世代的には古いんですけど、どーせ通信部分から作り直すのでフレーム部分があればまーええかなと。追加実装しやすくシンプルなのが大事で。まあ最新型のコア部分もある程度はパッケージ化できてるんで搭載するにも楽なんですが。通常接続もどこまで実装するか次第なんですけどまあブラウザ接続だけでも質素すぎるので通常接続もついでに実装しようかと。まあ実験なんでね。
てことでブラウザ接続機能をひっさげてあの「Vritra」が約11年ぶりに帰って来ます!乞うご期待!