Block Rockin’ Codes

back with another one of those block rockin' codes

HTTP2 のカンファレンスを開催します。 #http2conf

11/3 に HTTP2 のカンファレンスを開催します。

f:id:Jxck:20141014045834p:plain

HTTP2Conference

HTTP2Conference

2012年8月に、 SPDY/3 の仕様をベースとしてスタートした HTTP2.0 は、その正式名称を HTTP2 と変えながら議論を重ね、 執筆時点で Draft-14 まで仕様の策定が進みました。

現在は、この Draft をベースに Chrome, FireFox, IE といった主要ブラウザベンダや、 Google, Facebook, Twitter といったパイパージャイアントと呼ばれる大規模サービス、 そして、その他仕様に関心のある世界中のエンジニア達によって実装され、検証され、フィードバックされています。

HTTP2 を策定するワーキンググループである IETF の HTTPbis では、 ML を介して今も活発な議論が行われ、その議論の結果は RFC に向けた次なるステップである WGLC(ワーキンググループ・ラストコール) という形にまとめようというフェーズにあります。

要するに HTTP2 の仕様の大枠は見えており、世界中の Web で実用可能な仕様まで詳細を詰めながら形にしていくという、最も重要な時期であるといえます。

このタイミングで、ここまでの http2 を振り返り今後を考える一つの機会として、把握している限りでは世界初の HTTP2 をテーマとしたカンファレンスを開催することになりました。

HTTP2Conference

スケジュールは以下です。

11:00-12:00受付(受付票を提示下さい)
12:00-12:25オープニング by @jxck
12:30-13:30基調講演 by @igrigorik (英語/通訳無し)
13:30-13:45休憩
13:45-14:45HTTP2 最速実装*1 by @summerwind
14:45-15:00休憩
15:00-15:30h2o by @kazuho
15:30-16:00nghttp2 by @tatsuhiro_t
16:00-16:30QUIC by @jovi0608
16:30-16:45休憩
16:45-17:45トークセッション*2(英語/通訳無し)
by @igrigorik, @kazuho, @tatsuhiro_t, @jovi0608
17:45-18:00クロージング*3

セッションのキーノートでは、 Google の Web Performance エンジニアかつ Developer Advocate であり、High Performance Browser Networking の著者でもある Ilya Grigorik を招待してトークをお願いします。

次に 「HTTP2 最速実装」ですが、これは新しく HTTP2 に興味をもった人が、手を動かすとっかかりとなる題材として http2study のメンバーで持ち回りで行っているハンズオンです。一言で言えば以下のような内容です。

複雑な HTTP2 の仕様の中で、
一番簡単に Hello World レベルまでを実装するための、
最小限の仕様とそれを用いた実装方法の解説

もともと wiki から始まったものですが、これまで 3 回(v1, v2, v3) 実施してきました。

今回は、 HTTP2 仕様の日本語訳 を行っている @ さんが担当として、最新のドラフトでの最速実装をライブコーディングを混ぜながらやっていただく予定です。 HTTP2 をこれから始める方も、仕様の理解を深めるとっかかりとなるコンテンツです。

他には、 - ISUCON 周辺でも話題になった @ さんによる h2o のトーク - 世界を代表する HTTP2 の実装である @ さんによる nghttp2 のトーク - そしてどこよりも早い @ さんによる QUIC のトーク などをお願いしています。

また、トークセッションでは、 Ilya 含めた登壇者達による HTTP2 の現在と今後についてのトークを実施予定です。かなりガチな内容となるでしょう。

HTTP2 (ないしは SPDY や QUIC) に興味がある方々、これから始める方も、すでに HPBN などで知識を得ている方、または実装に着手している方、様々な方々が得るもののあるカンファレンスとなると思うので、是非参加してみてください。

また、これを期に開催の母体となっている #http2study のこれまでの活動を簡単にまとめてみたいと思います。

http2study の活動

日本では元々 SPDY に関心があったメンバーを中心として、2013年8月に最初の勉強会 #http2study を開催しました。

HTTP2 の実装は、ブラウザベンダ以外にも多くの開発者によって行われており、自己申告ではありますが以下の Wiki にまとめられています。 (開発途中も含みますが)

http2 implementation

現時点で 26 の実装が掲載されていますが、 この中には世界的に有名な、事実上のリファレンス実装となっている nghttp2 を含め 5 つの実装が日本から出ています。(ここにないものも 2,3 は確認しています)

そのほとんどの日本人開発者が参加する #http2study では以下のような活動をしてきました。

  • IETF 報告会
  • HTTP2 最速実装ハンズオン
  • hpack-test-case
  • 仕様翻訳(ほぼ @ さんによるもの)
  • 仕様に関する議論/実装で得られた知見の共有

IETF 報告会

IETF で定期的に行われる会議は HTTP2 の仕様がまさしく改訂されて行く現場ですが、海外で実施されるため簡単には行けません。 そこで、参加者に結果を報告会として共有してもらって、みんなで進捗を把握します。

実際には IETF とは別途行われる httpbis の interim というミーティングの内容や、 interop という相互接続テストの結果なども参加者に共有してもらってきました。

(ちなみに、次回 11/9~14 で行われる IETF の報告会は、 11/27 に予定しています。)

HTTP2 最速実装

高度な議論になりがちな勉強会ですが、新しく HTTP2 に興味をもった人たちにとっては敷居が高すぎるため、 http2study では「HTTP2 最速実装」というハンズオンを定期的に行っています。

最速実装とは簡単にいうとこうです。

「複雑な HTTP2 の仕様の中で、一番簡単に Hello World レベルまでを実装するための、最小限の仕様とそれを用いた実装方法の解説」

最初は自分が書いた wiki で始まったのですが、そこから担当を替え、 @ さん、 @ さん、 @ さんが、その時の最新実装でアップデートしながら続けてきました。

これを見ると、ドラフトのどことどこを見れば、一番簡単な実装が完成するのかを把握し、手を動かすための第一歩となるでしょう。

hpack-test-case

HPACK という仕様の実装のために、テストケースがあったらはかどるだろうと始まったのが、 hpack-test-case です。

hpack-test-case

ここでは、各自の実装でエンコードしたデータを登録し、それを他の実装がデコードすることで、 interop (相互接続テスト) を行うためのテストケース群です。 仕様書にあるサンプルだけではカバーしきれないケースもあぶり出し、なにより自分の実装が一定水準を満たしていることが確認できるため非常に有用です。

現在、 HTTP2 のフレームを対象にしたテスケースも同様に作成するために、メンバーで作業中です。また、相互テストの自動化を検討しているメンバーもいます。

仕様翻訳

HTTP2 のドラフトと HTTP2 のリポジトリにある FAQ については @ さんによる日本語訳が公開されています。

素晴らしいことに Draft については Draft-04 から改訂ごとにアップデートされており、最新のものに追従されています。

また、初見で理解するのはなかなか難しい仕様の理解を深めるために、議論も活発に行われています。 実装するなかで得られた知見は、そのまま HTTP2 の仕様に反映されたものもあります。

仕様に関する議論/実装で得られた知見の共有

仕様について深く理解するためのディスカッションもよくおこります。HTTP2 の Github リポジトリ にある issue や ML であがっているトピックを議論するための issue-thon を開催したこともありました。

特に仕様に熟知した @ さんや、標準化に深く関わる @ さんがいるため、仕様についての質問をすることができるのも非常に恵まれた環境です。 @ さんが共有してくれた、実装を用いたベンチマークは、実際に仕様の変更につながる結果となりました。

前に立つ人だけが発信する一方向なイベントスタイルにとどまらず、個々がどんどん発言する結果、結構ガチな議論が行われる、そんなスタイルで #http2study は活動してきました。 拙作ですが、 @tatsuhiro_t さんと @jovi0608 さんには、 #mozaicfm の http2 の回 にも出ていただきました。

ここまでを振り返って

なかなかガチというか、実際自分でも着いて行けてないことが多い、ハイレベルはコミュニティだと思います。 (一方でこの密度の勉強会を維持できたのは結構凄いと思ってます)

このコミュニティの活動はそれなりの結果が出ていると思うし、自分はその一部を今年の 3月に IETF89 で発表 させてもらったりもしました。

その http2study の活動と HTTP2 という仕様自体の、一つのチェックポイントとして、このカンファレンスを通じて HTTP2 への関心と正しい理解が広がればと思います。

Jxck