棚卸し (2024–09)

選択と集中

V
5 min readSep 7, 2024

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

Erlang/OTP

自社製品が Raft ベースの分散システムになった。ついに Erlang/OTP の真価が発揮されるときが来たかという気持ち。無事安定して稼働している。

最近はより使いやすい仕様を整理して実装したり、新しい事をやっている。Erlang/OTP + kTLS がうまく利用できないかを調べたりしてる。

Erlang/OTP で QUIC 実装をちまちまやってる。何度も書き直している。

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

TypeScirpt

Remix (や React) とは一旦距離を置いて、自社製品のブラウザ向け WebRTC SDK の整備をずっとやってる。

圧縮ライブラリの依存を削除したり、Rollup から Vite へ完全に移行したり、Playwirght を利用した E2E テストを書いたりと、かなり TypeScript に時間を費やしてる。E2E テストに PBT をうまく導入していきたいところ。

さらに DuckDB-Wasm を利用してブラウザ側での可視化にもチャレンジしたりしている。

MOQT (Media over QUIC Transport) でもブラウザ向けの SDK は TypeScript で書くことになると思うので、いい機会だからしっかり TypeScript を学んでいる。

Python

自社製品の E2E テストが pytest ベースということもあり、Python をよく書いている。

自社製品の Python SDK の中身は C++ ゴリゴリなのだが、サンプルやテストは Python でかく必要がある。 rye (uv) や ruff や mypy 、そして VS Code のおかげでかなり楽できてる。

何より pytest 本当に素晴らしい。

Raft

無事 Raft 化した WebRTC SFU がリリースできて、自社サービスとしても安定して動いており、スケールアウトの偉大さを実感している。

焦らず利用している 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 実装と同じなのが良い、互換性で苦労しなくて良い。

Rust

自社の C++ で書かれている OSS を Rust 化していくが、自分は一歩引いたところから見ていく。今の自分に必要なスキルは Rust ではない。

DuckDB

大量の統計情報を処理する際、コストをかなり抑えられる DuckDB を商用環境に突っ込むためがっつり調査している。特に S3 互換オブジェクトストレージにログを Fluent Bit で保存しておき、それを DuckDB で処理するという構成がかなり良い。

Linode の S3 オブジェクトストレージは 1 TB で月 20 ドル、Egress の転送量は 1 TB で月 5 ドル。安い。

ブラウザ側での DuckDB-Wasm は OPFS にまだ対応していないので、これからというところだが、対応すると色々化ける。

E2E テスト

E2E テストにリソースを投資できるくらいにはなってきたので、pytest や Playwright を使った E2E テストを増やして行っている。pytest が万能なので、うまくコマンドライン系の E2E テストも開発していきたい。

さらに PBT を E2E テストに導入していきたいと考えており、楽しみ。テストランナーはとにかく pytest がとにかく便利。

ドキュメント

Sphinx (reStructuredText) でもりもり書いてる。

まとめ

Erlang/OTP と TypeScript と Python な日々になってきている。そしてそれは嫌ではない。とくに TypeScript は Promise を完全に理解した気になっている。

また、ログ周りの可視化という長年の課題に取り組めたのは嬉しい。顧客向けは DuckDB-Wasm + S3 互換オブジェクトストレージ、社内向けは VictoriaLogs + Grafana という構成にする予定。ログの送信は全て Fluent Bit を使っていく予定。

可視化はとにかくコストが高い割にメリットが少ない分野だが、今後は積極的に取り組んでいきたい。

--

--