棚卸し (2024–12)
定期的にやるやつ。前書いたのが 2024–09 なので 3ヶ月でどうなったか。
Erlang/OTP
自社製品が Raft ベースの分散システムになった。ついに Erlang/OTP の真価が発揮されるときが来たかという気持ち。無事安定して稼働している。
Plumtree を利用した効率的な分散の仕組みなどもやりはじめて、本当に終わりが見えなくてとても楽しい。
Erlang/OTP で QUIC 実装をちまちまやってる。何度も書き直している。
何年やっても Erlang は飽きないし本当に、自分が作っていきたいパッケージミドルウェアソフトウェアにマッチしている。
TypeScirpt
Remix (や React) とは一旦距離を置いて、自社製品のブラウザ向け SDK やそのサンプルのメンテナンスをしている。
Vite と Playwright の組み合わせがとても良い。WebRTC はブラウザでしか動かない事もあり、試行錯誤している。E2E テストとサンプルは分けた方がいい。
MOQT (Media over QUIC Transport) でもブラウザ向けの SDK は TypeScript で書くことになると思うので、いい機会だからしっかり TypeScript を学んでいる。
Python
自社製品の E2E テストが pytest ベースということもあり、Python をよく書いている。
自社製品の Python SDK の中身は C++ ゴリゴリなのだが、サンプルやテストは Python でかく必要がある。 uv や ruff や mypy 、そして VS Code のおかげでかなり楽できてる。
何より pytest 本当に素晴らしい。
Raft/Plumtree
Raft 化したことで、スケールアウトができるようになったが、さらに負荷分散をするために Plumtree を導入して、うまくいっている。数万台でスケールする仕組みを実現していきたい。
将来的に Raft は時前ライブラリ切り替えたい。
WebRTC
8 年以上やってきてるのに、やることが全然終わらない。色々と細かいところを修正している。
WebRTC はまだまだやることがあり、終わる気配が無い。全く飽きてない。楽しい。 Twitch との仕事もとても楽しくやれている。
Media over QUIC Transport (MOQT)
正直、MOQT が今すぐ必要になるタイミングはほとんどないと考えている。ビジネス利用までの距離が遠すぎる。MOQT で騒いでる人たちはそもそも OBS と YouTube Live と Twitch が MOQT 採用していない事に皆気付くべき。
WebRTC RtpTransport が思った以上に早く来てしまったこともあり、まだまだ WebRTC 時代が続きそう。
とはいえ QUIC (HTTP/3 や WebTransport や MOQT) のサーバー自前実装はやっていく。もちろんフル Erlang/OTP で書いている。
ネイティブクライアントは Google の公開している libmoqt (C++) に乗っかっていくので、自分は手を出さない。libmoqt の何がイイって Chrome で利用される QUIC 実装と同じなのが良い、互換性で苦労しなくて良い。
DuckDB/DuckDB-Wasm
とにかく DuckDB/DuckDB-Wasm を使い倒している。ログ解析は本当に便利で、もう手放せない。
サービス用の可視化も DuckDB-Wasm をがっつり使い始めている。Code Mirror を利用してブラウザから SQL を実行できるようにしたりもし始めている。SQL 本当に便利。
E2E テスト
E2E テストにリソースを投資できるくらいにはなってきたので、pytest や Playwright を使った E2E テストを増やして行っている。pytest が万能なので、うまくコマンドライン系の E2E テストも開発していきたい。
テストランナーとしての pytest は本当に便利。
ドキュメント
Sphinx (reStructuredText) でもりもり書いてるが、そろそろ Markdown の世界に行くべきなのか悩んでいる。
まとめ
Erlang/OTP と Python と TypeScript をメインで頑張っている。Python は基本テストだけ、TypeScript はブラウザ向けだけ。ちょっと偏った使い方だが、とても便利に使っているし、知識も付いてきた。
2025 年も変わらず Erlang/OTP で主力製品を書き、Python で E2E テストを書き、TypeScript でブラウザ向け SDK を書いて行くことになりそう。