フューチャー技術ブログ

Go1.22リリースパーティに「ServeMuxの競合検知と性能」というタイトルで登壇しました

はじめに

こんにちは。TIGの武田です。

2024/3/18に開催されたGo1.22のリリースパーティに登壇しました。少し時間が空いてしまいましたが、登壇レポートです。

イベント概要

このイベントはGo1.22のリリースをお祝いすると共に、Go1.22のアップデート内容を中心にワイワイするイベントです。今回は完全オンライン形式で開催されました。

https://gocon.connpass.com/event/310606/

Goのリリースサイクルは半年ごとに設定(2月と8月)されており、リリースパーティの開催はGo1.6のリリースを初回として、今回で16回目となるそうです。

登壇のきっかけ

tenntennさんから「フューチャーさんからどなたか登壇しませんか?」というお誘いを澁川さん経由で頂戴しました。Go1.22のリリース連載記事を書いていたこともあり、手を上げさせていただきました。リリースパーティにはこれまで何度も参加していたので、登壇の機会をいただけたことを大変嬉しく思います。この場を借りて、改めてお礼申し上げます。

登壇資料と動画

登壇資料と動画は下記にて公開されています。

登壇内容

今回のリリースで比較的大きなアップデートが行われたServeMuxについて取り上げました。

ServeMuxのアップデートの背後には「リクエストマッチング」と「競合検知」という2つの性能論点があります。前者については、リリース連載ブログにてベンチマークを行う形で触れていたので、今回は後者の「競合検知」をテーマにしました。

ServeMux-Conflict-Detection-Go-1-22-Release-Party.png

資料の構成として、前半部では「そもそも競合とは何か?」という基本的な問いから始め、なぜ競合検知が性能面で重要な論点となるのかを説明しています。

ServeMux-Conflict-Detection-Go-1-22-Release-Party.png

そして後半部ではServeMuxが性能懸念に対してどのように対応しているのかを実装レベルで詳細に解説しています。

ServeMux-Conflict-Detection-Go-1-22-Release-Party.png

登壇資料を作る流れ

あえて章立てして書くほどの内容でもないですが、最近真野さんがGoリリースノートから技術ブログを書く流れ基礎という記事を公開していたので、流れにのってログとして残しておきます。

資料を作成するにあたって、まずは関連するプロポーサルやディスカッションを読み、次にServeMuxのソースコード自体を読む形で色々とネタや気付きを集めました。

ネタを集めたらその後ストーリーを作り、ストーリーができたら個々のマテリアルを作っていく流れになります。
今回は「競合をわかりやすく伝えるためのパターン文字列の例をどうするか」「インデックスの構造をどう視覚的に表現するか」などは簡潔明瞭になるよう気を遣って作成を行いました。

資料自体はhttps://ja.sli.dev/を使用して作成しています。
私は普段PowerPointでゴリゴリに資料を作りこむタイプですが、テキストベースのシンプルな資料やコードを引用することが多い資料の作成には相性が良いと感じました。