
大型自動二輪免許を取得したうえに、全然そのつもりはなかったけどバイクを購入したので、せっかくなら函館にもバイクで向かおうと考えてはいました。ただ、4月の函館、というよりはフェリーを利用した場合の苫小牧から函館までの経路において雪の可能性を捨てきれないという助言を頂き、リスク回避のため飛行機で向かうことにしました。結果としては桜の開花も早まるくらいには暖かく、雪の心配はなかったわけなのでちょっと悔しい思いはしています。

今年もNOC memberの一員として関わらせていただきました。また、昨年からサブスクリーンやサイネージのオペレーションも一部担当しています。朝に “good morning!” とか言ってるのはサブスクリーンのテストだったりして。ちなみにこの運用経験はKaigi on Railsに輸入されており、大変ありがたく思っています。
さて、「カンファレンスの本質は廊下にある」12というように、今年のRubyKaigiでも懇親会やWhite Seedなどの概念廊下で色々な方と話し、相談させていただきました。特にkazuhoさん、まつもとさん(Matz)、成瀬さん、しおいさん、おしょうゆさんらとの会話ないし議論において、自分が今後やるべきことについての方向性が見えてきた気がしています。できれば例年開催されるfollow-up eventで何か話せるといいんですが。
北海道に来るのは初めてではないですが、函館は初めてだった3ので、会期後、撤収作業までの間に色々なところを見て回りました。以下はその写真達です。





うなすけ、荷物をクロスピックされグランドスタッフに終電を聞かれる #rubykaigiNOC pic.twitter.com/0LtM9K7LCB
— そらは (@sora_h) April 28, 2026
旅というのは最後まで何が起こるかわからないものですね。空港の手荷物受取所で自分の荷物全然が出てこないなと待ちぼうけてたらついに荷物のコンベアが終了し、そこには誰にも引き取取られていないスーツケースがぽつんと……
係員さん曰く荷物の航空機からの積み下ろしは完了しており、どうやら取り違えということで残った荷物の持ち主の方に連絡してもらうことになり、僕はそれを待つということに……という状況になり空港でしばらく待機していたのですが、連絡がつかないということで一旦お家に帰るということになりました。
一晩経ち、これを書いている時点では航空会社側での僕のスーツケースの確保が完了し、自宅に発送する手続が完了しているので僕はあとは待つだけの状態となっています。
このような事態を防ぐために、スーツケースにはステッカーをたくさん貼っておく、AirTagなどのトラッカーを忍ばせておく4などの対策を取ることをおすすめします。僕はどちらもしていませんでした!

しれっと3月の月報を飛ばしていますが、これはまとまった進捗がなかったためです。というよりは3月はQUICの実装はそこそこにして、draft-chamberの実装に勤しんでいました。
というわけで3月から4月にかけてやっていたことについてですが、世には良い言葉があり、「完璧を目指すよりまず終わらせろ」というものです。過去の進捗報告記事でも0からAIに書いてみてもらっていると述べたように、昨今の開発においてはAI empowered codingの波から逃れることはできません。というわけで、自分の変な意地は捨てて、これまでの実装の続きをClaude Codeに書いてもらっています。一応auto acceptにしてはおらず、全ての変更点を見て適用するかそうでないかを決めてはいます。が、rbsファイルだったり大規模な修正については完全にレビューできているかどうかは正直怪しいところです。
ただし野放図に開発を進めてられて期待と違ったものをつくられても困るので、RFC 8999からの4本のQUICに関する一連のRFCはリポジトリ内に置いてそれを適宜参照することと、既知の実装に対する interop testを作成してそれがpassするかどうかを確認するようにしています。
その結果、まだpushできていない生活としては origin/main から221個のcommitsが積まれており、quic-go、quicheとのinterop testも通過しはじめている、という状況ではあります。
さて、実装とは別に、定期的に行われるゲームリアルタイム通信プロトコル コミュニティの一員としての顔も(大したことはできていませんが)あり、技術書典20の新刊である「ゲームリアルタイム通信プロトコル コミュニティ 会合誌 Vol.1」に「IETF Meetingでどんな議論がされていたかを追いかける方法」という章を書いています。僕の章以外にも興味深い内容の章がたくさんある同人誌となっているので、ぜひお求めください。
『ゲームリアルタイム通信プロトコル コミュニティ 会合誌 Vol.1』の頒布を開始しました!
— 竹原涼 (@takehara3586) April 19, 2026
ゲームにおけるリアルタイム通信に関連した技術について、実際の開発現場に携わってきたメンバーが、知見を持ち寄りまとめた合同誌です
Booth → https://t.co/lfb7n4vxMzhttps://t.co/zjkUqkTVqg
……というのを、技術書典20の期間中に宣伝できれば良かったのですが、RubyKaigi 2026関連の作業が始まってしまい、ロクに告知することが出来ずじまいでした。とはいっても頒布数はそこそこの数出ており、感謝の気持ちでいっぱいです。手に取っていただいた皆さま、竹原さんをはじめとする関係者各位には頭が上がりません。

https://datatracker.ietf.org/meeting/125/proceedings
IETF 125は2026年3月16日〜20日に中国・深圳で開催されました。例によって以下は個人的な感想を無責任に書き散らかしたものです。内容の誤りなどについては責任を取りませんし、なんなら今回はAIによって生成したものです。
以下AIによるまとめです。
かなり詰め込んだアジェンダだった。ICCRGが今回開催されなかったこともあり、一部ICCRGっぽい発表も含まれていた。ICCRG はIETF 126で開催される見込み。
WGLCの最中およびその後にいくつかの非自明な変更があったため、最新版を確認してほしいというcall to action。スライドなし。
引き続き順調に進展中。ペーシングテキストの改善、SACが利用できない場合の動作規定、drainに3RTT以上留まった場合のexit条件追加などのロジック更新が入った。TCP固有の記述の除去もほぼ完了。テストケースのPRはIanが作成中。BBRv3とCubicの共存性に関する論文("Promises and Potential of BBRv3")が話題に上がり、共存性がv2より若干悪化するケースがあることを著者側も認識しているとのこと。Mozillaからは「実装はまだ開始していないが、ドキュメントの品質が実装可能なレベルに近づいてきている」とのコメントがあった。
メディア向け輻輳制御アルゴリズム。-07版に更新された。ネットワーク輻輳制御とメディアレート制御の両方を扱う必要があるという著者の立場は変わらず。新たにqueue delay deviation normという指標を導入し、輻輳状態での参照ウィンドウオーバーヘッドを適応的に制御する仕組みが入った。Chrome CanaryにWebRTC実装が入っており、コマンドラインで有効化して試せる。EricssonはSCReAMを5G製品で利用しており、ドイツの自動運転レンタカー企業WAYでも採用されている。GoogleからもWebRTCの標準輻輳制御としてL4Sとの組み合わせで検討中との発言があった。WGアイテムとしての採用についてshow of handsが行われ、興味ありの方向。
kazuhoさんの発表。CDNにおけるスロースタートの3つの問題(半RTTのアイドル期間、2x成長の遅さ、輻輳終了時のバンピーな挙動)に対して、full RTT pacing、3x成長、そしてスムーズな輻輳ウィンドウ収束の3つを組み合わせた手法。輻輳検知時のウィンドウ削減ではsilence factor、ack factor、loss factorの3つのパラメータを使って、3xオーバーシュート時でも正しい送信レートにスムーズに着地するようにしている。本番データで全体14.7%のTTLB削減、地域別では10.8%〜21.5%の改善が報告された。パケットロス率はP50で若干増加するがP99ではslow startとの差が縮まる。BBRとの関係やTCPへの適用可能性(Neilは「Linuxのtcpは必要なデータポイントを持っている」と回答)についても議論があり、Mozillaのlarsがプラガブルなスロースタートフレームワークでの実装とA/Bテストを計画中とのこと。
Christian Huitemaによる動画向け輻輳制御アルゴリズムの詳細な発表。ECN、遅延、パケットロスレート、データレートの4つの輻輳シグナルを使い、initial → recovery → cruising → pushingの4フェーズで動作する。MIMD(Multiplicative Increase Multiplicative Decrease)の公平性問題に対して、データレートに応じたsensitivity curveを導入し、低帯域の接続は輻輳時にあまり後退せず、高帯域の接続はより大きく後退することで公平性へ収束させる仕組み。C4同士では良好な公平性を示すがCubicに対してはCubicが1/3程度しか帯域を取れないケースも。Lars(Mozilla)から「学術的なピアレビューを先に受けるべき」というコメントがあった。CiscoのSuhasがMoQスタック内でC4を実装中で、Wi-Fiのロス・ジッター環境での改善が見られるとのこと。
清華大学からの発表。LEO衛星の軌道移動に伴う15秒間隔のリコンバージェンスがパス特性を急変させ、既存の輻輳制御が非輻輳性のロスやRTT変動を輻輳と誤認する問題を分析。パスをpath-phase boundary(PPB)で区切られた一連のボトルネックレジームとして捉えるモデルを提案した。時間切れで議論は限定的だったが、トランスポート層でのパス変化シグナリングの必要性を提起。
3つのドキュメントすべてについてWorking Group Last Call(WGLC)が進行中。
Working Draftの最新版が2026年2月に公開され、Candidate Recommendationマイルストーンは100%完了。Fetch APIとの統合、接続統計情報の追加、CSP改善など多くの技術的変更が入った。WebTransportがInterop 2026のフォーカスエリアとして採択されたのは好材料だが、SafariのWebTransport対応はまだ0.0%。
overview-12はエディトリアルな変更のみでオープンissueゼロ。webtrans-http3-15ではWTMAXSESSIONSがWTENABLEDに置き換わり、新エラーコード(WTALPNERROR、WTREQUIREMENTSNOTMET)が追加された。webtrans-http2-14ではSETTINGSWTINITIALMAXSTREAMDATABIDIがQUIC方式に合わせてLOCALとREMOTEに分離された。
リソースは存在するがWebTransportをサポートしない場合に返すHTTPステータスコードについて活発な議論。404、405、406、426、400、新規コードなど候補が挙がったがどれも完全にはフィットせず、HTTP Directorateとの協議を経て決定する方針に。Ben Schwartzが提案した「problem type」アプローチのスケッチを作成予定。
QUICのInterop Runnerを拡張したWebTransport用のInteropテストツール。Chrome、Firefox、webtransport-go、flupke-webtransportの4実装が参加し、12時間ごとにCIで自動実行されている。
今回も2回構成。ECH関連のRFC 9847〜9853が正式公開された。
FIPS 204で定義された3つのML-DSAサイズをTLS 1.3のコードポイントとして登録するシンプルなドラフト。TLS 1.2での使用は禁止。WGLCの前にTLS 1.2との技術的境界に関するテキストの解決が必要。
パスワード認証鍵交換のTLS 1.3拡張仕様。CPACEの使用仕様が追加された新バージョン01が公開済み。WGLCの前にProVerif等の形式解析の結果が必要となる可能性が高い。
ポスト量子暗号ML-KEMを単独(ハイブリッドなし)の鍵合意として利用する仕様。2回目のWGLC後も鍵再利用テキスト、ハイブリッド選好理由、モチベーションセクションの3点が未解決で、これらの変更後にターゲットコンセンサスコールを実施予定。ハイブリッドから純粋ML-KEMへの移行が「セキュリティの劣化」かどうかで意見が割れている。
PQCへの移行期間におけるダウングレード攻撃からの保護のためのTOFU型の仕組み。HSTSのTLSレイヤー版に相当するが、実装に興味ある人がまだおらず時期尚早という雰囲気。
金曜セッションで最も長い時間が割かれたトピック。Tom DowlingによるFATの分析結果報告が約30分。transcript hashの問題は修正済みだが、セッションチケットの問題やPost-Compromise Securityの証明など課題が残る。rustlsとmbedTLSの2つのプロトタイプ実装が存在し、相互運用も確認されている。
一部のPQ KEMの公開鍵がkey_shareに収まらない可能性に対する3つの提案の比較。Eric Rescorlaが「実際の動機(巨大PQアルゴリズム)がまだ存在しない。WGの時間を使うべきではない」と明確に反対し、作業を支持する参加者はいなかった。
Tranco上位10,000ドメインでのテストで、HTTPSリソースレコードは60%のケースでHappy Eyeballs V2ベースラインと同等以上の速度。ECH GREASEではコネクティビティの破壊は確認されなかった。米国.govドメインの一部がHTTPSリソースレコードに応答しない問題が報告されている。
署名用公開鍵のハッシュをDNSレコードに格納し、リトライ時にサーバーが署名した新ECH configで認証する提案。外部SNIにランダム文字列を使用可能になり、CaddyなどがECHをデフォルト有効化できるようになる。raw public keysベースのアプローチに絞る方向で簡素化予定。
OAuthなどの認証プロトコルでURLクエリ文字列を通じて機密パラメータが漏洩する問題に対して、Redirect-Query、Redirect-Origin、Redirect-Pathの3つの新ヘッダを提案。しかしMartin Thompsonが「ビットを別の場所に動かしているだけ」と批判し、採用の議論には至らず。
HTTP Message Signatures(RFC 9421)の鍵配布方法として新しいSignature-Keyヘッダを提案。hwk、jwks_uri、jwt、x509の4スキームに加え、ハードウェアセキュアエンクレーブ向けのjkt-jwtも定義。Martin Thompsonは「複雑すぎる」と評価し、これも採用の議論には至らず。
プリフェッチリクエストをサーバーが拒否する場合に503を使うと運用担当者がパニックになる問題への対処として、新しい4xxステータスコードを提案。全面的に肯定的な反応で、反対意見なし。Chairsから採用コールを開始するとのこと。
CONNECTのようにトレーラーを使わないストリームでDATAフレームのオーバーヘッドを削除する提案。前回は汎用的だったがCONNECTのみに限定して再提出された。Ben Schwartzも「問題ないと思う」と立場を変え、WGから肯定的な反応。
IETF 123以降の実質的な変更は1点のみ。Proxy Statusトレーラーの送信に関するRFC 9114との矛盾が発見されたが、「今はドラフトからトレーラーテキストを削除して終了、将来必要になればcapsuleで対応」でコンセンサス。
クライアントリトライ動作のガイダンス、早期レスポンス、失われたレスポンスの回復の3つの課題が議論された。AppleプラットフォームはすでにResumable Uploadsバージョン6をサポート中で、夏までの完了が目標。
進捗が停滞していたが、Yaroslav Rosomakohoが実装とエディトリアル作業を引き受ける意思を表明。WebTransportには概念的に同じcapsuleの実装がすでに存在することも判明。ウィーン(IETF 126)までに実装を完了しWGLCを進める方向。
Alan Frindell(Meta)がMoQ Transport上の圧縮技術を発表。Martin Thompsonは「QPACKから再利用すべき核心は、動的に進化するストリーム間で状態を安全に参照する方法」と助言し、QPACKを文字通りではなく精神的に再利用すべきとした。Huffmanエンコーディングは削除が妥当との結論。
-03ではTLSハンドシェイク待機のSHOULD強化、SVCB/HTTPSレコード対応、MTU考慮事項などが更新された。Jen LinkovaによるIPv6-onlyネットワーク対応セクションの書き換え(PvD概念の導入)やBen Schwartzによるドキュメント構造の再編も議論された。HEv2が広く実装されなかった理由としてレイヤー化アーキテクチャの問題が挙げられ、HEv3はDNSとTLSの統合が必要で実装のハードルが高い。
Firefox NightlyでHEv3が利用可能になり、about:configで有効化できる。Rustで実装された独立ライブラリ(mozilla/happy-eyeballs)がGitHubで公開されている。数週間以内にFirefox Nightlyでデフォルト有効化予定で、IETF 126でテレメトリを共有予定。
HEのクライアントのパス選択結果がサーバー側から見えない問題に対し、ICMPの新メッセージタイプで非選択パスにシグナルを送る提案。ネットワーク診断としての発見可能性に利点があるが、コンシューマOSのユーザースペースからICMP送信が困難という実現可能性の問題が最大の課題。
チェアのLucas PardudeとMatt Jorasは両名リモート参加。時差の関係で通常より短い1時間セッション。
draft-ietf-quic-multipathはIESGバロットに進んでおり、差し戻しなしの見通し。ack-frequencyとreliable-stream-resetはShepherd writeupが必要な段階で、IETF 126までに進展させる予定。qlogはIETF 126前にバーチャルinterimを開催して残課題を処理する計画。receive-tsの-02が公開済みで今が実装・実験の好機。
新規WGドキュメントとなったQMuxに大部分のセッション時間が費やされた。レコードレイヤーの導入(PR #26)、フロー制御のデッドロックリスク対処(PR #27)、ALPNの扱い(PR #33)、Transport ParametersのTLSハンドシェイク組み込み(PR #28)、暗黙的ACKとPing(PR #23)、MPTCP対応(PR #29)など13件のオープンイシューが議論された。QUICとの差異を最小に保つ方針で、STREAMフレームからoffsetフィールドは削除しない。
MoQTをQMux上で動作させる際のALPN設計について3つのオプションが議論された。CullenとSuhasがオフラインで詳細を詰めてMoQ WGにフィードバックする方向。
ACK頻度を下げるとminimum RTT推定にバイアスが生じる問題を、受信側でのone-way delay計算で対処する提案。Christian Huitemaが自身のタイムスタンプドラフトへの統合を提案し、WG採用済みのquic-receive-timestampsドラフトとの統合が推奨された。
RFC 9506の明示的測定ビットをQUICにマッピングする提案。SCONEモデルに倣いlong headerパケットを使う方式。Ted Hardyが採用検討の前にフルBOFが必要と強調。
チェアのDennis JacksonとMarten Seemannはともにリモート参加。
connect-ethernetとconnect-udp-listenはADに転送しIESGへ。quic-proxyはExperimentalからStandards Trackに変更し2回目のWGLCを実施予定。connect-udp-ecn-dscpとconnect-ip-optimizationsについてメーリングリストでアダプションコール予定。リチャーター後にdraft-schinazi-masque-proxyのアダプションが可能に。
テンプレートによる静的セグメント除去、Derived Fields(導出フィールド)、TCP/UDPチェックサムオフロードの3つのスタック可能なメカニズムを提案。チェックサムで約5%のCPU節約、性能が11→12 Gbit/sに向上というデータも。David Schinazi含め採択を支持する声が多い。
MASQUEの歴史、アーキテクチャ原則、プライバシー特性をまとめた文書。ドラフト名を「Proxy」から「Architecture」に変更予定。「MASQUEを使え」と言われても現在のRFC群との関連がわからない問題を解決するもの。リチャーター後にアダプション。
ドラフトを完全に書き直し、単一の統合拡張に再設計。Context IDにECNとDSCPの値をバインドすることでパケットあたりのオーバーヘッドをゼロにする方式。メーリングリストでアダプションコール予定。
全3枠で非常に盛りだくさん。MoQに関しては相変わらず情報量が多い。
draft-15からdraft-17でAlan Frindell自身が「ほぼ完全に新しいプロトコルのよう」と表現するほどの大改訂。単一の制御ストリームを廃止しリクエストごとに独自のbidiストリームを使用する形に変更、独自varint(VI64)の導入、Track/Object Propertiesの整理、Greaseの全面導入など。イシューは現在98件で、IETF 126後にイシューゼロを目指す。
moqt://はALPNでトランスポートを決定する仕組み。+q/+wtサフィックスはほぼすべてのケースで不要であることが実証され、強いコンセンサスにより削除が決定。
エンドツーエンド暗号化を提供するWGドラフト。鍵をtrack namespaceではなくtrack nameにバインドすべきという変更が合意された。Track Propertiesの保護については複数の選択肢が議論されたが結論は出ず。
サーバーサイド/リレーサイドABRの設計。クライアントがトラックをセットに登録し、リレーがスループット推定に基づきグループ境界で切り替え判断する仕組み。コアMOQTに入れるべきという意見が出つつ、ドラフト開発を継続して準備ができたら決定する方向。
AlibabaがMOQを音声検索、クラウドレンダリング、AIアシスタントなどに実デプロイしている報告。WebSocket比で接続レイテンシ75%減、WebRTC比で初フレームレイテンシ50%以上削減などの性能データが共有された。マルチモーダルフィードバックドラフトも提案。
UDP/QUICがブロックされる環境向けのTCPフォールバック。bidiストリーム、ユニストリーム、フロー制御パラメータが直接対応し、アプリケーションコード変更不要。ALPNの扱いはQUIC WGとの共同議論に。
Varint最小エンコーディングの要件はSHOUL維持(MUSTではない)。可変長整数型の名称はVI64に決定。ロンドンinterimでのインターロップターゲットはDraft 18。
WGLCを通過済みで、実装の過程で見つかった小さな問題に対応中。同一UDPデータグラム内の複数SCONEパケット処理に関するPR144が追加された。MozillaではFirefoxでSCONEパケットの受信・処理を可能にする作業を開始予定。ウィーン(IETF 126)までにクローズしてshipする方向で強いコンセンサス。
L4Sとの関係、ユースケース、測定方法論、エンフォースメントなどの追加が期待されている。3GPP Release 20へのSCONE取り込みが17社の支持を得て合意されており、IETFでの進行速度が3GPPのスケジュールに影響する。4月末〜5月初旬にinterim会議を開催予定。
Sri Gundavelli(Cisco)がIEEE 802.11アクセスネットワークへのSCONE適用に関する個人ドラフトを紹介。WBAでレビュー済みだが、IETFで行うべきかIEEEで行うべきかの議論がある。
MASQUEプロキシは既存SCONEアーキテクチャ上ネットワークエレメントとして機能しうるため、まず既存シグナリングで検証する方向。SCONEに着想を得たQUICの明示的測定技術も発表されたが、関心があればBoF開催を検討すべきとの位置づけ。
用語追加(ラグランジュポイント等)、エネルギー制約・位置情報の記述追加、セキュリティ考慮事項の拡充が行われた。PQCに関してはEric Rescorlaがハイブリッド鍵確立は実施すべきだがPQ認証は帯域幅特性の問題がありより難しいと詳細な見解を述べた。グループ鍵、前方秘匿性、非同期鍵更新の3つのセキュリティ関連PRはまだコンセンサスに至っていない。
WG adoption投票が実施され、Yes 14、No 2、No Opinion 7でラフコンセンサスが得られた。-03版ではQUICを暗黙のデフォルトから一例に変更し、要件・制約フォーカスの記述に改善。Eric Rescorlaはゲートウェイでのコンテンツキャッシュについて「TLSは従来のHTTPキャッシングを破壊する」と根本的な設計問題を警告した。
南京大学から、固定輻輳制御ウィンドウ+積極的FECでRTTに依存しない回復を実現するQUICSpace拡張と、明示的認可分割によるNon-Transparent Secure Proxyの提案。AD Eric Vynckeがトランスポートプロトコルの修正はTIPTOPのチャーター外と指摘し、SPACE RGを紹介。
Tony Liが宇宙用IPアドレス空間についてRIRとの交渉状況を報告。IANAに大きなIPv6ブロックを確保する方法が提案されたが、NRO NCとの多者間交渉が必要で難航中。アーキテクチャ文書とは別文書として扱う方向。
AIによるまとめがここまで。
というわけで、AIによってまとめを生成してもらったわけですが、そもそもAI agentはdatatracker上のリソースに直接アクセスすることはできません。
![]()
これまでも、Agendaやスライドは手元にダウンロードしてClaudeのプロジェクトファイルとして内容を要約してもらっていたのですが、それを行う手間を削減するため、またAI agentが直接datatracker上のリソースを取得できるようにするため、MCPサーバーを実装しました。

Internet-Draft(など)を取得するので、Draft chamber(和製英語)です。実際は上のまとめは簡略化してもらったもので、フルで出力させると以下のようなMarkdownを生成することができます。
https://claude.ai/public/artifacts/12dc22ba-57de-44ce-b39f-e45c98242687
技術スタックとしては、Rails、Kamal、AWS Lightsail、Amazon S3、SQLite、Solid Queue、Solid Cache、MCPなどなどを使用しています。特にMCPは、koicさんがメンテナのひとりをつとめている https://github.com/modelcontextprotocol/ruby-sdk を使ってみたかったということもあってMCPサーバーとして作ろうと思った、という動機もあったりします。
Lightsailの二番目に安いプランで動かしているのでたくさんの人に使用されると厳しいかもしれませんが(そのためにGitHub認証を付けています)、気になる方は使ってみて感想やpull requestを送ってもらえればと思います。

書けることがない!
確かに自前のQUIC実装には手をつけられていませんでしたが、他にやっていたことがない、という訳ではありません。しかしそれについてはちょっとまだ公開できない事情があるので、来月の月報をお待ちいただければ、と。
見える成果を出せてないのにエラそうなことを言っててすみません、という気持ちです。

他にもやったことはあるのですが、それは1月の月報に回そうと思います。
という訳で他にやっていたことというのは、nghttp3のRuby binding gemを作っていたのでした。
https://github.com/unasuke/nghttp3-ruby
Co-Authored-Byこそ付いていませんが、ほとんどをClaude Codeに実装してもらいました。一応変更には全て目を通していますが、C拡張ライブラリに習熟していないこと、ドキュメントは読んでいるもののnghttp3自体に詳しいかと言われると全然そんなことはないので使うのはおすすめしません。
おすすめしませんというか、nghttp3はQUICレイヤーを提供しないためにこのgem単体で使うことはできません。というのでQUIC自体はOpenSSLにやってもらう(もしくはngtcp2のbinding gemを実装する?などしてQUICレイヤーをどこかから持ってくる)必要があります。というので先月はOpenSSL自体のQUIC APIについて色々調べていたのでした。ちょこちょこAPIをruby binding側に足していったりしていますが、なかなかうまくはいっていません。
そして自分の実装については何もできていません。現状のコードをClaude Codeに分析させてどういう順で実装を進めていけばいいかのアドバイスを出力するくらいはさせていますが……
![]()
これまで主として使っていたのは、高専1年生の時に撮影してもらった写真で、その頃から使っているアイコンでした。2010年入学なのでだいたい15年使っていたことになりますね。
高専を卒業し社会人となり、当時と比較すると立場も変わり、関わる人も増え、このアイコンだとどうもちょっと、と思ってしまうことが増えてきました。
そんな折、知人に描いていただいた似顔絵があまりにも良かったこともあって、いい機会だし新年を期に主として使うアイコンを変えてしまおうと思い立ちました。
別にアイコンなんて軽々しく変えてしまっていいとは思いますが、さすがにここまで長い間使っているものを突然変えると混乱を招きかねないので、変えたという記録を残しておき、かつしばらくの間固定投稿にするなどして周知に努めようと考え、これを書いています。
15年も使っていると色々な箇所で使っていることもあり、旧アイコンを使い続ける場面も残るでしょうが、これからは新アイコンをよろしくお願いします。

12月やったことの前に11月の月報を書いていない件についてですが、IETF 124のまとめを書いていたら11月が終わっていたので、仕方ない1ですね。
そして12月にやっていたことですが、自分のQUIC実装についてはまたしても全く何も手をつけていません。
では何をしていたかというと、OpenSSL自体のQUIC APIについて色々調べていました。具体的には demos/guide/ 以下と demos/http3 以下のファイル群であったり、https://docs.openssl.org/master/man7/openssl-quic/ だったりを読んでいました。
Claude Codeにサンプルコードの解説を頼んだりしてもいて、それによって生成されたコードをgistに置いておきました。
https://gist.github.com/unasuke/cadc6e9af0b2f5e2860fcdf3318bb517
他にもやったことはあるのですが、それは1月の月報に回そうと思います。
省力化しようと企んでいることはあるのですが、次のIETFまでに形にできるかな…… ↩

6年目か……。上にもリンクは貼っていますが、yearly-wrap-upというタグも付けています。
例年同様、冒頭の画像はWakaTimeによる2025年のプログラミング言語使用率なんですが、今回は前回のまとめを書いた2024年12月28日から2025年12月25日までのプログラミング言語使用率です。微々たる差ですが、昨年のまとめ記事を書いた時点からの計測ということになります。なお業務で触れたコードは含まれていません。Rubyは例年通り不動の1位。次がERBになったのが昨年との差ですね。昨年はYAMLが2位だったんですが、今年は3位になりました。ERBの順位が上がったのはKaigi on Rails 2025の公式サイトで使ったり、conference-appのだったりかな?と思っています。他にはTypeScriptがランキングから外れました。
ちなみに、WakaTimeは “真の” 2025年まとめを生成してくれるのですが、これは本当に2025年が終わるまでの瞬間まで集計対象となるのでまだ生成されていません。2026年になったら共有リンクを追記しようと思います。そして2024年のまとめは生成されているので、去年の記事に追記しておきました。
Code stats for all users in 2025 - WakaTime
WakaTimeによる “真の” 2025年のまとめが生成されていました。OSがLinuxとmacOSだけになっていますが、"Linux" という判定のほぼ全てが手元のWindows機からのSSHになっていると思います。
フリーランスで、主にRailsやAWSを使用しているサービスの運用、開発に関わっています。いくつもの会社を見てきた訳ではなく、数社に深く関わっている都合上、視野が狭いかもしれません。
今年仕事で書いた記事はこの2本です。
もう1本くらい書きたい気持ちはあったものの、2025年は2本という結果になりました。
プライベートだと、QUICの実装だったり、Kaigi on Rails 2025関連でいろいろやったりしました。
仕事で触れたものは覚えている範囲で書いています
昨年からのDiffとして、Go、Lambda、Bedrock、SSE、Cursorを追加、IntelliJ Idea系を削除しました。
Goについては仕事で触れる機会があったので追加したのと、SSEはKaigi on Rails 2025の字幕システムで触りました。Bedrockは仕事でもKaigi on Rails 2025でも活用しました。Cursorはこんなに使ってる印象がないんですがランクインしましたね。もっぱらVS Codeでコードを書いています。それもありIntelliJ Idea系エディタはとんと触らなくなってしまいました。Lambdaは仕事で書いた記事にもあるように触る機会が増えたので追加しました。
今年もIETF Meetingのまとめを都度書いていました。が、リアルタイムで聞けたセッションはほぼなかったのと、そもそもIETF 124はチケットの入手すらしていないというありさま。まあタイムゾーンや別イベントとの兼ね合いがあってしょうがないといえばしょうがないのですが。
あと、今年からはQUIC実装の進捗を月報として書くようになり、少し手が動くようになった……ような気がしています。そうはいっても9月と11月のぶんがありませんが。12月のまとめはこの後に書きます。来年も続けるつもりです。
Kaigi on Rails 2025ではRailsをがっつり、というよりはFalconを試行錯誤しながら、という感じでの手の動かしかたをしていました。詳しいことは北陸Ruby会議01の発表資料を見ていただければと思います。
引き続きRuby on Railsでお仕事を請けていく予定です。今のところは自分が提供できるリソースと市場の需要が一番マッチしているのがこの分野なので。
北陸Ruby会議01の発表でも触れましたし、仕事でもそうなんですが、今年は特にAIによるコーディング支援にお世話になることが多かったです。そもそもClaude Codeのリリースが今年2月ですし。
Claude 3.7 Sonnet and Claude Code \ Anthropic
普段使いはClaude Codeばかりで、CodexやGeminiと比較してどうか、みたいなことはしていません。BedrockはKaigi on Railsでもこれから活用していくシーンがありそうなので引き続きゆるりとキャッチアップしていきたいです。
月報を書くようになり、それが締め切り的なプレッシャーになってくれて少し手が動くようになったのですが、それでもまだまだですね。2026年はAIも活用しつつ実装をより進めていけたらと思っています。思っているんです。
ふつうの運営業務以外のところだと、Shirataki(字幕システム)をより堅牢にしていきたいと考えています。
今年も日本の外には出ませんでした。そもそも海外カンファレンスにプロポーザルも出してないし。ただ、いっこネタは思いついたので実装できればプロポーザルを出そうとは思います。でもそのくらいかな。それが通らなければ2026年も国外に行くことはないんじゃないかと思っています。

IETF 124はRubyWorld Conference 2025と被ったのでリアルタイムで参加してませんでした。なんなら今回はチケットも買ってないです。
それでは例によって以下は個人的な感想を無責任に書き散らかしたものです。内容の誤りなどについては責任を取りません。ちなみになんですが、WG及びBoFは https://datatracker.ietf.org/meeting/124/agenda で開催された順に記載しています。多分。
途中でアラーム?火災報知器?が鳴っていた。
RFC 8290のFQ-CoDelとdraft-tahiliani-tsvwg-fq-pieとの比較などについての報告。また、Congestion Control Evaluation Suiteについての設計を準備中なのでfeedback求むとのこと。テストの再現性や"マルチパス"という言葉が指す意味について明確にすべきだという話があったようで。
03から04での変更はTCP特有の記述をやめたこと、ProbeRTTの頻度についてのexperimental considerationsの追加、あとこまかな編集。open issueとしてまだnon-TCP transportに対しての一般化が残っているのとか、テストケースについてどうするとかの話があった。Googleの他に、Cloudflareが実装を持っていて、picoquicでも実装したという話があった。そこからのデータを求む、状態なのかな。
そもそもMBONED WGにおいて5年前からwg draftになっているdraft-ietf-mboned-cbaccというものがあり、マルチキャストネットワークの環境において不適切な振る舞いをする受信者によってネットワークを過負荷に陥らせる状況を解決するための提案?RFC 8084に記載されている “Circuit Breaker” を実装するものとしているが、RFC 8084の定義とどこまで挙動を揃えるかについてが議題のひとつのよう(RFC 8084の記載に従うべきだという会場での意見があった)。
そろそろwg draftになるのかもしれない。これも01から05にかけてtransport protocol agnosticな変更(など)が入った。やっぱQUICの影響なのかなー?CCWGがメディアの輻輳制御に向けて取り組むべきかどうか?という投票が行われ、続けてSCReAMがスタート地点として適切か?という投票が行われた。SCReAMが適切かどうかについて反対票が1票あり、反対の内容としては動画適応用のレイヤーと制御用のレイヤーが必要だというもの。ちなみにChrome Canaryに実装が入っており、WebRTCでのlogがスライドに載っている。メディアの輻輳制御が今アツい(のか?)。
Netflixからだ。クラウドゲーミングにおけるRate Adaptationが背景にある。帯域というよりは即時性に主眼を置いた輻輳制御アルゴリズムなのかな。
SEARCHは122ぶり?06から07での変更は日付のみ。Hystart++とSEARCHの違いについて、両者は似ているので、何が違う点なのかを説明しないといけないという会話があった。
QUIC wgでもよく見かける方の提案。動画コンテンツの配信に対して設計されている輻輳制御アルゴリズム。今回は紹介だけで終わった?実装とフィードバックを求む、状態。
chairが交代して1人から2人へ。WGLCが数週間後にされるかも?
W3Cのロゴ、変わったね。資料にMDNのBrowser compatibilityの画像が貼られてたけど、modern browsersのなかではSafariだけがまだ未対応(設定から手動で有効にしないといけない)。 とりあえず自分の端末では有効にしてみたけど、手っとりばやく試せるページってどこかにあるんだろうか。
https://developer.mozilla.org/en-US/docs/Web/API/WebTransport#browser_compatibility
CONNECT requestに対してヘッダーを追加できるようにするか?というのが会場で出た議論で、それはW3C/WHATWGで決めようということになった?Authenticationに関しては許可してほしいという要望も。
SafariとFirefoxでのinteropの結果が報告されている。SafariではCloudflareのMoQ serverに対してセッションの確立、データ通信は行えるもののvideo streamingに関して問題あり。FirefoxではCloudflareのMoQ serverに対してvideo streamが機能した、と。Firefoxは今draft 14の実装が進んでいる。
最新のdraftと現在openなissueについて、draft-ietf-webtrans-overview、draft-ietf-webtrans-http3とdraft-ietf-webtrans-http2のそれぞれ。overview-11では “export keying material” というoperationの新規追加に関してなど。webtrans-http3についてはDoSについての話、WTMAXSESSIONSの話などがあった。
12月にinterim meetingが行われそう。last callもまだまだ見えてこない感じかな。とりあえずWHEPが今どんな状況なのかを見ているだけではあるので、議論の様子とかはまとめないことにしました。
今回は2回構成。
draftのrepositoryがGitHubのtlswg orgに移動した。すべてのopen issueとコメントを解決したので、新しいバージョンを出してWGLCに進む予定。
現在はさらなる実装とレビューを求めている状態。FATTによるレビューも進行中。
すべてのopen issueに対応済みで、実装作業中。WGLCに進むかどうかについて、WGLCになってから実装がでてくるのを待つのはどうか?という話があった。
open issueがあったが解決?して “Decide to close the PR and go to WGLC” ということになった。
wg draftとしてapproveされた。いくつかのopen issueはあるが、ほぼ全てに対応するpull reqが作成されている。パスワード認証を試行できる回数に制限があるべきというのは確かに。
minutesやAgendaには “DE Reports” とあるけど、TLS Registries Updateのこと?色々なupdateについての共有。fun factとされているgit repositoryはどこのことなんだろうか。追加されたCipher Suiteの名前に登場するAsconについてはあとで見ておきたい。
リプレイ検出についてのopen issueに対する議論が盛り上がってた?nvidiaがunencryptedなsequence numberを許可する拡張についての提案をしているっぽい。なんでだろう?反対する意見はなかった。既存のerrataをおさらいする流れ。
複数の鍵を扱いたい場合にどうするか、秘密鍵なしの設定ファイルは可能か、などの議論。
Cloudfrareはこれに取り組んでいる(?)とのことだが、GoogleがECHのconfigを配布する際に直面した問題はこれでは解決できないという指摘。
Expiredなdraft。この提案はTLSでやるべきことではないのでは?という指摘(application layerでやるべき?)。メーリスで議論しようという話になった。
editorialな変更のみ。もうすぐWGLC状態?
変更なし。実装求む!状態。
まだWGLCには進めない。いくつかのopen issueがあり、それについて作業が残っている状態。
HTTPDIRのレビュー待ち状態。RateLimit-Policyヘッダーの値として指定するポリシー名をStringとして記載するべきなのかTokenとして記載すべきなのかのopen issueについての議論が行われていた。String優勢?
新しいdraft。Uses the QUERY method to request notifications とあるようにQUERY methodの活用。そもそも標準とすべき内容なのかについてより明確化しようという感じになった。
このまま誰も取り組む人がいなければそのまま破棄される流れに……
MoQに関しては、もう何もわから~ん状態ではあるのであまり深追いしないことにしました。業界の動向としてはyuki_uchidaさんのZenn scrapが更新され続けていてとてもありがたいので皆さん読みましょう。
個人的に気になる動向としては https://openmoq.org/ なるものができたこと。Roadmapでは現在Legal structure & governance in progressのためのCompany setupを進めているところらしい。
いろいろと白熱して、WGとするには早かったかもしれない、別のBoFをやるべきだったかも、とchairが最後にまとめている。これからどうなるんだろう。
既にいくつかの実装がある。なんならRubyもある。
ただ、Architecture文章なのにtest vectorがあるのはなぜか、なぜ署名が必要なのか、mTLSでいいのではないかなどの質問や意見があり、そもそも解決しようとしている課題は何なのかについて明確にすべきだという声が大きかった。
そんな感じだったのでchairが予定を変更し、問題の背景についておさらいする流れになった。
という流れがあり、前回(123)のスライドを再度見直すことに。改めて、インターネットはユーザーのためのものであり、匿名によるブラウジングを殺したくはない、Botの識別ではなく、高トラフィックをもたらすBotからの保護という観点で考えるべきだという意見があった。メールとスパムの問題に酷似しているので、そこから学べることがあるのでは?という指摘も。
政治活動、Eコマース、旅行、不動産などの分野でWebスクレイピングは重要だが、Web Bot Authによって競合となる相手をblockすることが可能になるのでは(WalmartがAmazonをblockする、XがCCDH、デジタルヘイト対策センターをblockする、など)ないか、データ提供における差別を標準化することになるのではないかという懸念についての発表。人間がアクセスできる限りはBotも何かしらの方法を見つけて回避する、といういたちごっこになる。アクセス制御ではなく、認定する制度を設けるべきではという提案。
そもそもsconeについてあまり知らなかったのだけど、Fastly Yamagoya Nightに参加してkazuhoさんの発表を聞き、そんなのがあるんだ~と興味が出たので見ています。
おいしそう。複数の実装間でInterop testが行われた結果の報告があった。ブラウザ上のdemo?ではSCONEを有効にした場合の動画視聴ではバッファリングが発生していない様子のデモがあったり、そのうちAndroid Facebook appのReelsで使われている様子の録画があった。SCONEが使われるとReelsでバッファリングしていない様子が紹介されている。その辺のやりとりがQUICの開発者が集まってるSlackに #scone-interop channelが作られていてやりとりされている。(デモの録画もSlackに上がってそうな見た目だったけど探しても見付からなかったな……)
before SCONE/after SCONEの条件は揃っているのか?という指摘もあったり。その辺厳密に揃えるのはむずかしそう。
“network element” とは何か、というpull reqについての議論。現在のdraftにおいて定義されている機能は全て必須なのかどうか。最小限のnetwork elementが満たす機能としては何かというslideでの説明などなど。
他にも用語の統一などのpull reqのmergeなど。ライブでmergeされていく様子が見れた。
3GPP固有の内容が多いという意見があった。投票の結果、汎用的な部分(Section 3)までをWG draftとして採用する方向になった?
https://httpworkshop.org/ なんてものがあるんですねえ。2026年はスイスで開催とのこと。
CONNECTはHTTP/2やHTTP/3ではRFCに記載されているが、HTTP/1.1では規定がないのでどうする問題がある、と。
https://datatracker.ietf.org/meeting/124/materials/slides-124-httpbis-resumable-uploads-00
WGLCになっていて、フィードバックを受けている。28のopen issues、6のopen pull reqがある状態。アップロードが完了したが、そのレスポンスを受け取れなかった場合に回復できない問題についてや、HEADリクエストについての規定があるがGETリクエストの場合がない、その場合にどうするか、などのopen issuesについて議論が行われた。
WGLCに進むことになった。
“Support sending Exported Authenticators in multiple frames over HTTP/2” のissueに関して、複雑さを増すだけということになりcloseで合意となった。editorialな変更を済ませてWGLCに進むことに。
draft-ietf-httpbis-layered-cookiesのメカニズムを更新して “Origin-Bound Cookies” としている。Cookieの識別にPort番号も含めるようにするPort Boundと、httpとhttpsを明確に区別するScheme Boundの2つの概念の導入(HTTPの文脈におけるOriginで識別する)。
すごく好意的な反応で、この提案をdraft-ietf-httpbis-layered-cookiesに取り込もうという流れに。
PAC/PvDによるプロキシ設定は全てpull型で、クライアントが定期的にフェッチするしかない問題を解決するもの。クライアントが Proxy-Config ヘッダーで設定のURLといつfetchしたかを送信すると、Proxyが Proxy-Config-Stale ヘッダーにbool値を入れて返してくれるというもの。絶対に欲しい!という声があった。adoption callがされる雰囲気。
UNBOUND_DATA frameの送信後は全て DATA として扱うようにする提案?WebTransportでよくない?という意見があった。ちょっとこのままではなんとも、という感じだったのか、議論を続けましょうという感じに。
HTTP/1.1の実装間における差異を利用したRequest Smugglingが問題なっている。これについての防御が必要だと。Bound-Request ヘッダーと Bound-Response ヘッダーを利用して、番号の欠落、順序の不正をOrigin server側で検知したら中断するという提案?継続して議論を行うということに。
時間切れでCoAP in SpaceとDNS over MoQについては議論できず。……DNS over MoQ?!?!
deepspaceにおけるセキュリティの問題について。handshakeに時間がかかったり欠損することでsecureな通信路を確立できなかったり、そもそもパケロス、遅延がセキュリティに対して影響を及ぼす。MLSが解決策のひとつとして挙げられている。
RTTに1~9秒、通信断がなし、または2~5秒、パケロス率が0~5%などの過酷な環境におけるQUICの性能評価。Quicheでは通信断が発生した場合にcrypto failが10%の確率で発生した、などの結果の報告。
地球から月(2秒の遅延)、地球から火星(4分の遅延)への通信をシミュレーションした結果の報告。月環境(2秒のRTT)においてはDiscord、Apple Messages、Slackなどは動作した。QUICも動いた、YouTubeも問題なし、IMAPSはfetchできず、SSHはまあ動いたという感じ。実際の環境では通信断が発生した場合にはもっと長い時間通信できなくなるのではという指摘があった。
自分が理解できた範囲では、IPv6のみとするべきでは?という意見が挙がっていたことくらいか……
ラブブ?"Generalize connection establishment" の結果として、TCP、QUICなどのトランスポートのhandshakeに限らず、TLS handshake(証明書の検証)まで含められるようになった。open issue/pull reqについての議論がめっちゃある。QUICの接続が遅かった場合でも接続に成功するのであればQUICのconnectionを保持しておいてそっちに切り替えるべきでは?いやそれはmultipathになってしまい、そしてhappy eyeballsはmultipathではないという指摘とか、色々な……
draftで示されているHEv3の設定値についてどのように決めるべきなのかについて。その値がそうなった理由の明記や、その値が何によって(物理的な要因、政治的な要因、既存の慣習)決められているかを区別すべきだなどの意見があった。
これはツールの紹介という感じか。ブラウザ上で試せるHappy Eyeballsのテスター。
recahrterが完了し、"The fourth area of work" としてQUIC stream multiplexingが追加された。
未だにQLOGなのかQlogなのかqlogなのかの表記揺れが……(draftでは文頭にあるのに “qlog” なので全小文字が正しいのか?)。IETF 123以降では1回のinterim、draftの新しいversionのpublishがあった。WGLCに進むためには2つのissueがblockerになっている。qlog関連のツールとして、qlog-dancerというのが新規に実装されたのと、qvisのupdateが進行中。他にもqlogの定義がtsvwgやmoqのdraftでも使われはじめている。
qlogの適用範囲を拡大するissue, pull reqが現在openだが、それらの作業はやめて公開作業に進むべきだという議論。拡張性に関しては別draftにしてもいいのでは?という意見も。
wg draftになった。openなpull reqはない。timestamp情報をどう付与するかで意見が対立していそう。
quickyのPoCはh2oとのintegrateまで含めて1日、quic-goとのinteropもhackathonで動いたという報告。"Is this draft a suitable starting point for adoption to satisfy the WG’s new chartered work item.“ という投票に関してはYesが多数だった。Noの場合でも現在のdraftに編集を加えればよいという立場。
サーバー側が新しいIPアドレスにmigrateする方法を提供するもの。例えばp2pの状況ではclientとserverは区別できないから必要。p2p通信おいて有用であるため、作業を進めるべきだという意見があった。
TikTokではもう稼動している?異なる実装の間で微調整が入っている輻輳制御において、データを共有して有用なのかが疑問との指摘。
minutesがない……3つのdraftがIESGへの提出準備完了、1つのdraftがWGLCに近付いている。Rechartering、ひいてはWGのsunsetについても取り上げられた。
前回は "DNS Configuration for Proxying IP in HTTP” という名前だったけど、PREF64が追加されて今の名前に。今は実装を進めていて、interopに興味ある人を募集中という段階だと。
MTUの制限、checksum計算の負荷を軽減するために同じflowで何度も出てくる情報をstatic segmentとして定義、送信側はdynamicな情報を送信し、受信側ではstatic+dynamicで再構築。圧縮アルゴリズムではだめなのかという質問に関しては、channelが分かれている場合に適用できないのでだめだったと。
ECN値をContext IDにエンコードするのか、DCSPとECNを合わせて1 byteにしてpayloadの前に付けるか。また、Request/Response headerにつけるかCapsuleとして送信するか。組み合わせ爆発の心配や、MTUを削ることに対する懸念などが挙げられた。メーリスで議論を続けるということに。
興味のあるwgがいくつもあってまとめるのが大変になってきたので、何かしら対策したいところ……

9月はそもそもKaigi on Rails 2025だったので何もできませんでしたが、今月もQUICのことは何もできていません。今月はKaigi on Rails 2025の後始末、各種事後イベントへの参加、11月1日から始まるIETF 124の予習で潰れちゃいました。
ところで8月の月報で行き詰まっているという話をしました。この件はthekuwayamaさんにご指摘をいただき、ServerName拡張の取り扱いがおかしかったことが原因ということが判明しました。
https://github.com/unasuke/raiha/commit/cbe054e9c03f44214a554603b906b07b08200b28
冒頭の画像はそのdiffです。このあたり、明かに非効率なことをやっているのでなんとかしたいと思ってはいます。