TIGの伊藤真彦です
先日Go Conference 2021 Autumnに登壇させていただきました、リモート登壇です。
発表資料はこちらです。
contextを発表資料に選定した意義
contextはGoでアプリケーションを実装する上でお世話にならない方が少ないくらいのパッケージだと思います。
一方使いやすいインタフェースであるため、仕組みをよく分かっていなくてもとりあえず使っておけば機能は実装できます。そういったものを自分自身良く知りたい、学べるコンテンツを作りたい、というモチベーションがありました。
またcontextはgoのパッケージの中では極めてシンプルかつ少ない行数で完結したパッケージです。そしてGoをスマートに実装するテクニック、並行処理の実装方法が少ないコードに詰め込まれています。そのためコードリーディングのコンテンツに適しており、40分の枠内で全てのコードを紹介する事が出来ました。
contextの基礎的な利用方法も発表の前半に組み込むつもりでしたが、zennの無料書籍が登場したため、発表はコードの読み取りとそこから得られる知見にフォーカスしました。
contextのコードリーディングから得られる知見
600行以下のcontextを読むだけで、以下の内容が学べます。
- Interface
- struct(structにstructを埋め込むなど高度なテクニック)
- 型アサーション
- errorを拡張した独自のエラー型
- 並行処理(goroutine, channel, sync.Mutex, sync/atomic)
- internal/reflectlite(発表では流しました)
- 名前付き戻り値
これらにな馴染みが無い方は是非contextの実装を読み込んでみていただければと思います。
感想
勉強になる、contextを教材として採用したい、といった反響を頂けました、目的が達成できたという手ごたえを感じることができました。
今回のGo Conferenceはremoを使ったバーチャル会場が賑わっており、参加者同士のコミュニケーションも楽しむことができました。
また次回も参加できるよう精進します。