棚卸し (2025-12)
定期的にやるやつ。2018 年くらいからだらだら書いてる。前回は 2025-07 だったのであれから 5 ヶ月。

Erlang/OTP
今年は主力製品から古い機能を廃止するという年だったので、削除したコードの方が多いと思う。とにかく細かい機能を沢山追加した年だった。
来年は廃止はひと段落したので、既存機能を整理したり、DTLS 1.3 に対応したり QUIC を書いたりと、もう少しプロトコルよりを頑張りたいところ。
TypeScript
React / Zustand から Preact / Signals への切り替えを進めている。React の依存の多さに疲れてきたというのが正直なところ。自分の扱う規模であれば Preact / Signals / preact-iso で十分と判断した。
Bootstrap を Tailwind CSS に置き換えたりもしたい。また Lint を強めにするため Biome から Oxc に切り替えたりもしている。
Vitest より Playwright がメインなので、もう少し Vitest を使い込みたい。
Python
nanobind と scikit-build-core と cmake の組み合わせで沢山自分が欲しい OSS を作った。
- libdatachannel-py
- blend2d-py
- libwebm-py
- mp4-py
- webcodecs-py
- raw-player
- uvc-py
- portaudio-py
Python は遅くてスケールアップしないという課題を抱えていたため、ツール類はあまり作らなかったのだが、nanobind による (C/C++) 実装と Python 3.13 から入った no-GIL (Free Threading) を使う事でまぁまぁ早くてスケールアップできるようになったので、積極的に使うようにしている。
pytest が本当に便利で pytest-benchmark も愛用している。
来年も Python を利用した調査、解析、検証、テスト向けのツールを作り込んでいきたい。DuckDB も Python 使うと便利なので、とにかく Python (というなの を頑張りたい。
C++ から Rust へと以降はしているが、PyO3 などは採用しないことにした。もし Python から Rust ライブラリを使う時は C API 経由で nanobind で利用するというのが現在の方針。
pyroute2
IPRoute2 を時前で読んでくれる便利ライブラリ。スポンサーをしている。
GitHub Actions 上で pyroute2 と pytest を組み合わせて、実際にネットワーク帯域を不安定にするテストなどを実現している。これにより輻輳制御のテストが本当に楽になった。
今後はマルチパス QUIC のテストで特定経路を不安定にするなどでも利用していきたい。
Rust
プロトタイプ開発をメインにコツコツとやっている。こんな物が作りたいというのを設計書を書いて、テストを書いて、コードを書くという繰り返し。
プロダクションレベルのコードは無理なので沢山失敗するのを目的に頑張っている。
WebRTC
覚えることは無限にあるので、コツコツ勉強はしている。DTLS 1.3 に Chrome が対応したりして、大変だなという気持ち。
とはいえ会社としては libwebrtc への貢献もしっかりできており、libdatachannel 等へも貢献しているので、まずは貢献して色々やっていくというスタンス。
とにかく libwebrtc へ丁寧に追従していくを心がけたい。
DuckDB / DuckDB-Wasm / DuckDB-FTS
DuckDB Foundation のスポンサーをした。また自社の解析でも使っているし、ツールでも DuckDB を採用したりしている。
ドキュメントツールのオフライン日本語全文検索とかも作ってみたりした。来年はこれを本番運用まで持っていきたい。
DuckDB は本当に便利で、色々なことがこれで解決するのはありがたい。
QUIC / WebTransport / MOQT
MOQT を Python (client/relay) と Rust (client/server) と TypeScript (client) で実装している。
Python は msquic と nghttp3 を組み合わせて実装。Rust はシンプルに tokio-quiche を利用して、WebTransport 部分は時前で実装。
nghttp3 (や nghttp2) の作者にアドバイザーとして時雨堂に参加して貰い、QUIC や HTTP/3 や WebTransport については頼りっきり。詳しい人が居るの本当に助かる。
Python で作ってる理由は nanobind + Free Threading で最低限動くのであれば扱いやすい方が良いだろうと言う考えと、pytest ベースで色々テストできる環境を用意したいから。 実際 Python ベースで MOQT Client と MOQT RelayServer は対応済みで、普通にブラウザからも動作している。
性能面では特にネガティブなことは今のところは出ていない。とにかく msquic と nghttp3 が良くできすぎている。
Rust 版と TypeScript 版も作っていて相互運用をしてテストしていきたい。Erlang/OTP 版も Cowboy が WebTransport over HTTP/3 に対応しているのでやっていく予定。
時雨堂としては Python / Rust / TypeScript / Erlang/OTP の 4 種類をしっかり作り込んで、その後 iOS/Andorid へ移行する。
マルチパス QUIC
MOQT とは別に マルチパス QUIC の実現に向けて開発を進めている。マルチパス QUIC は WebRTC ではできなかった機能の一つなので、なんとか実現したい。
msquic を fork して書き換えてる。nanobind を利用して薄い Python バインディングを作成し、pytest + pyroute2 を使って GitHub Acitons でマルチパスの検証をできるようになった。
色々検証してレポートを上げていきたい。
Claude Code
Max プランで利用している。5 並列くらいで作業したりしている。コードレビューしたり資料を解説して貰って勉強したり、色々なことで利用している。
Claude Code Action
社内は Sonnet / Haiku でのレビューを徹底している。!haiku と !sonnet で利用できる用になっているので、バンバンレビューを依頼する用、メンバーにお願いしている。
組み込みは 2026 年にということで手を付けるのをやめた。来年がんばる。
テスト環境の整備を目的に 1 年くらいやってきたが、かなり良い結果が出たと思う。実際 2026 年 6 月にリリースした主力製品は 2026 年 12 月リリースまで一度もバグフィックスリリースをしなくてよかった。
Python では 1080p 120fps の生映像を再生できるライブラリや、uvc から取得した映像をポインタで他のライブラリに渡せるライブラリなど、欲しいものをとにかく作った。そして全て no-GIL (Free Threading) 対応にした。
来年は WebRTC と MOQT を色々な言語で色々な視点でやっていきたい。特にテスト。E2E テスト、PBT や Fuzzing 、そしてそれらの可視化、自動改善や自動デプロイによる自動ネットワーク障害テスト、やりたいことが沢山ありすぎるので、全部やっていきたい。