kotlinx.rpc 使ってみたよ

kotlinx.rpc が楽しそうなので触ってみたのでメモ。

https://github.com/Kotlin/kotlinx-rpc/tree/main/samples/ktor-web-app ここにあるサンプルがわかりやすくてすぐ動くので、これを触って

  • transport レイヤーは取り替え可能。
    • 現在実装されてるのは ktor ベースで websocket + JSON
      • JSONRPC のような雰囲気の通信プロトコル。
      • Flow ベースで、ストリーミング処理も可能。
    • 今後、grpc ベースのものが提供予定。サーバー間通信では gRPC のほうが使いやすそう。
  • 管理画面とかだとこんなプロジェクト構造が良さそう。
    • common プロジェクトに interface を定義
    • server プロジェクトにサーバー側コードを定義。
    • frontend プロジェクトに kotlin/js でコードを生成

path とかゴチャゴチャ悩まずに kotlin の interface だけ定義すれば良いのは楽かも。 とはいえ、websocket ベースだとログとか悩まないといけないという面もあり、難しいところ。

gRPC サポートはいって安定したら、サーバー間通信に使うと良いかも。