Claude Code (Claude Opus 4) に自社 OSS のサンプルを作って貰った
Claude Max プラン (200 ドル) が Claude Opus 4 が定額と聞いたので、さっそく契約して、Claude Code で自社 OSS のサンプルを作ってみた。
libdatachannel という C++ で書かれた WebRTC と WebSocket が利用できるライブラリを nanobind を利用して Python バインディングを作成したのが、サンプルコードが欲しかったので RFC に準拠した WebRTC シグナリング仕様である WHIP のサンプルを作成した。
指示したこと
_source
にある libdatachannel のソースを読んでdocs
にある WHIP の RFC を読んでsrc
以下のソースを読んで- コマンドラインで利用できる WHIP クライアントを libdatachannel-py を利用して作って
結果、色々やりとりしつつ数時間で自社製品にダミーの音声と映像を配信する WHIP に対応したクライアントが生成できた。かかった費用は 200 ドル以下。

雑感
- とにかく無難なコードを書く
- 色々読み込ませれば大きな間違いをしない
- 変な事をしない
- とにかく大外れしないのはスゴイ
ちなみに作成中にもともとの libdatachannel の Python バインディングのセグフォするバグを見つけてくれた。自分が見ていない間に試行錯誤して pytest でセグフォしないコードを探し出していた。
見つけたバグの再現テストと修正を切り出した Pull-Request がこちら。
non-zero データだと opus encoder がセグフォする問題を修正する by voluntas · Pull Request #9 · shiguredo/libdatachannel-py
また、デコード機能を Claude Code だけで追加した実装はこの 3 つ。
- [Claude Code] Opus デコーダーの実装を追加する by voluntas · Pull Request #5 · shiguredo/libdatachannel-py
- [Claude Code] OpenH264 デコーダーを追加する by voluntas · Pull Request #6 · shiguredo/libdatachannel-py
- [Claude Code] libaom のデコーダーを追加する by voluntas · Pull Request #7 · shiguredo/libdatachannel-py
ただデコード機能はテストがお粗末だったので人にレビューしてもらい、人に修正してもらってからマージした。
ちょっとした問題もソースコードを読んで、実際にインタプリタ動かして確認してくれるのは強い。これはパッケージングの間違いを見つけて貰った時のメッセージ。
⏺ 問題の原因
調査の結果、from libdatachannel.codec でインポートエラーが発生する原因は以下の通りです:
1. setup.py でサブパッケージが含まれていない
packages=["libdatachannel"], # codecとlibyuvサブパッケージが含まれていない
現在の設定では、libdatachannel パッケージのみが含まれ、libdatachannel.codec と libdatachannel.libyuv
サブパッケージが含まれません。
後回しになりがちなちょっとした修正やサンプルコードの作成がほっといてもできるのは良いし、とにかく解説してもらえるのが良い。
とりあえず、色々後回しにしていたタスクを作業中に頼んでやっていこうと思おう。
ちなみに作って貰ったサンプルはとても参考になった。自分は動くコードをを読んで理解するのが向いてるタイプなのでとてもありがたい。
Claude Opus 4
Claude Code で /model opus を指定すると opus を使い続けるモードになる。Max プラン 200 ドルに入ってこれを選ぶのが本当にオススメ。
