年末年始の休みが終わってしまった。
28日から休みだったんだが、28日は何してたっけかな……あ、プラモ作ってた。 29日は夕方から飲み会だったので、その前に本買いに行ったくらい。 30日は軽く(ほんと軽く)掃除して午後の新幹線で帰省した。これが去年。
帰省先でだらだらしてて、4日の夜中に帰ってきた。 5日はプラモと工具が欲しかったのでうろうろしてた。 秋葉原とか混んでそうで嫌だなあと思ったんだが、むしろ空いてるくらいだった。 もちろん人は多いがいつもよりだいぶ少なめだ。 帰りに電車乗ったら架線に凧がひっかかってるのでしばらく運転停止してますとかなってて正月を感じた。
で、今日は仕事始めです。まだだらけてるので普段の生活に早く戻らんとなあ。
PeerCastStationの本体とUIを切り離したいなあとずっと思ってて、RPCなんとかできねえかなと調べたりしてた。
ASP.NET Coreでは今後gRPCを猛プッシュみたいな話だったので調べてみたんだけど、HTTP2が前提になっているようなのでPeerCastStationでのホストはむずかしそうだ。
Apache Thriftは.NET Standardベースの実装が追加されてた。まあ悪くないけど、NuGetで入れると使わない依存関係までいろいろひろってくるな。
今HTML UIからの操作はJSON-RPCてのを使ってるが、これはほんとシンプルな取り決めしかないものなので、今時はOpenAPIとかSwaggerとか使った方がいいんだろうか? てかJSON-RPCでSwaggerみたいなのあればそれでいいんじゃねえかな……。
と、調べてたところOpenRPCというそのものズバリなものが見つかった。ふーん、じゃあこれ試してみるか。
で帰省中になんとかOpenRPCのスキーマというかインターフェース定義的なものを生成できるようにしてみた。 最初はインターフェース定義からサーバー側(C#)のコードを生成しようと考えたが、OpenRPCのツールはC#のコード生成には今のところ対応してないしここから自分で作るのはめんどいなー。 しかし、よく考えたら今はC#のクラスからリフレクションでJSON-RPCしてるので、それと同じ方法で逆にサーバーの実装からインターフェース定義を生成すりゃいいのであった。やった。できた。
あとドキュメントとJavaScriptのクライアントくらい生成できればいいけど、そこまで生成するには情報が足りないな。 戻り値とかが手動でJSON組みたててやってるんだが、これもクラスにしてシリアライズ/デシリアライズするようにした方がドキュメントにもう少し詳しくできそう。
結構大規模に変わっちゃうけどやった方がいいかな……。