棚卸し (2024–06)

選択と集中

V
4 min read5 days ago

定期的にやるやつ。前書いたのが 2024–04 なので 2 ヶ月でどうなったか。

Erlang/OTP

OTP-27.0 がでた。maybe 文法が正式に採用されて maybe を積極的に使って行っている。また ~”abc” といった ~ を使って bitstring を表現できるようになった、これはまだテストコードでのみ採用している。

RabbitMQ の Raft ライブラリ Ra 採用して自社製品を分散システム化したこともあり、Erlang/OTP で分散をがっつりやっていっている。

何年やっても Erlang は飽きないし本当に、自分が作っていきたいパッケージミドルウェアソフトウェアにマッチしている。

TypeScirpt (Remix)

Cloudflare から離脱を決めたので、今後は Node.js (or Bun) を利用していくつもりでいる。焦らず移行していく。BFF (backend for frontend) としての Remix だったが、バックエンドも Remix で行けるか検討していく。

NGINX + PM2 Plus + Node.js (or Bun) + TypeScript + sqlc + Remix という構成をとれればと思っている。NGINX UNIT と PM2 Plus で悩んだが一旦 PM2 で行くつもり。

TypeScript はどうせブラウザ周りで使っていく必要があるので、最低限書けるのを維持はしておきたい。

Raft

今後数年はWebRTC と MOQT をやりつつ Raft をしっかりとやっていく事になると考えてる。分散ミドルウェアは本当に面白い。

リアルタイムコミュニケーションを実現するミドルウェアと Raft による分散システムは本当に相性がいい。ステートフルかつパッケージ製品というのを顧客が気軽にスケールアウトできるようにするには、分散システムを採用するしかない。

とにかく簡単に利用できる分散メディアサーバーを作っていきたい。

WebRTC

8 年以上やってきてるのに、やることが全然終わらない。マルチコーデックサイマルキャストという複数画質を複数コーデックでというわけわからない仕組みを追加したりしている。

それ以外にも細かい WebRTC はまだまだやることがあり、終わる気配が無い。全く飽きてない。楽しい。 Twitch との仕事もとても楽しい。

Media over QUIC Transport (MOQT)

正直、MOQT が今すぐ必要になるタイミングはほとんどないと考えている。WebRTC RtpTransport が思った以上に早く来てしまったこともあり、まだまだ WebRTC 時代が続きそう。

とはいえ QUIC (HTTP/3 や WebTransport 含む) のサーバー自前実装はやっていく。もちろんフル Erlang で書く。

Rust

自社の C++ で書かれている OSS を Rust 化していくが、自分は読めれば充分程度で行くつもりでいる。

SQL

ClickHouse や DuckDB を調査の調査をしているが、ほぼ書いていない。

sqlc の Rust 版で DuckDB と ClickHouse に対応したツールを作りたいなと思っているが、良いビジネスモデルが思いつかない。

E2E テスト

E2E テストにリソースを投資できるくらいにはなってきたので、pytest や Playwright を使った E2E テストを増やして行っている。

さらに Property Based Testing を E2E に導入していきたいと考えており、楽しみ。テストランナーはとにかく pytest があまりにも優秀でスゴイ。

ドキュメント

Sphinx + Meilisearch で一旦落ち着いている。Markdown がうらやましいなと思うときはあるが reStructuredText に慣れている自分としては Markdown はツライ。ただ、脱 Sphinx は当面先になりそう。

ドキュメント 5 割、Erlang での開発が 3 割、テスト 1 割、その他雑務 1 割という感じ。とにかくドキュメントを頑張っている。

そしてこつこつ Raft に絞って分散合意システムを学んでいる。さらにライブラリに関しては Ra に絞っている。独自で何かというのは考えていない。

まだまだやることが山盛りだし、技術も複雑になってきて本当に楽しい。

--

--