見出し画像

Go Conference 2024参加レポート

参加レポート

今回Go Conferenceに初参戦させていただきました。
オフラインイベントへの参加自体初めてだったので少し緊張しましたが、とても学びになる内容が多く、楽しめる内容だったので参加して良かったというのが率直の感想です。
今回の会場はサイバーエージェントのAbema Towersでした。弊社のオフィスということもあり参加しやすかったのが良かったですね。
ただ僕はいつもスクランブルスクエアの方にいるので、久しぶりにABTに入りました笑

受付後

11Fで受け付けた後、自分のネームカードを受け取りました。こういうの用意してくださると嬉しくなりますね。

受付の隣には企業ブースがありました。個人的にはOPTiMのGoModuleGuessrが一番印象的でしたね。
1つ不正解だったのが悔やまれますが、非常に楽しかったです。また挑戦したいです笑

オープニング

いよいよGo Conference 2024の開始です。
オープニングでは各スポンサーの紹介があり、スポンサーの数を見ると大きなイベントだということを実感することができました。このようなイベントに無料で参加できるのは光栄ですね。

各セッション

どれも面白いセッションばかりでしたが、個人的に面白かったセッションをピックアップして感想をゆるーく紹介します。

イテレータによってGoはどう変わるのか

tenntennさんによるGo 1.23でリリース予定のiterパッケージの説明です。
そもそもイテレータとはなんなのかというところから始まり、range over funcはいわゆるイテレータだよと言った話からrange over funcの使い方を優しく解説してくださいました。
また、iterの未来予測であったり、iterがなぜinterfaceとして提供されなかったのかなど、面白い話も聞けたのが良かったです。

Dive into gomock

gomockのライブラリを深掘っていく内容でした。
僕も業務でgomock(を少し改良したもの)を使っているのですが、ライブラリの内部まで追えておらず、感覚で使っていた部分があったので、自分が理解せずに使えていなかったというのを実感しました。
ControllerやMatcherなど、それぞれがどのような役割で、どう実装されているのかなど細かいところまで調べており、非常に勉強になるセッションでした。
自分もライブラリを深掘る癖をつけて理解してライブラリを使うように意識していこうと思います。

Custom logging with slog: Making Logging Fun Again!

まず、スピーカーの方が日本人の方だったので日本語のセッションかと思いきやガッツリ英語だったのでビックリでした笑
slogの説明から、slogを用いたカスタムロギングハンドラの実装方法をライブコーディングっぽく説明してくださったので、非常に分かりやすかったです。
僕のチームではzapを使っており、slogに関しては全く知見がないため、zapとslogの比較とかしてみたいなーと思いました。

Unified Diff 形式の差分から Go AST を構築して feature flag を自動計装する

会社の先輩の発表でした。
トランクベース開発やfeature flagの基礎を話した後、feature flagの数が多いと手動で追加するの大変だから自動的に実装したいよねということで、そこの実装処理をgit diffとuber-go/gopatchという初めて聞くライブラリを用いていい感じに実装してました。
僕のチームでも「トランクベース開発したいよね」「feature flag使いたいよね」という話をしていましたが、QAフローを整えたり自動計装する仕組みを導入したりなど、なかなか道のりは長そうだなと思いました。ただやりがいはありそうなので個人的には導入したい気持ちが強いです。

詳解 "Fixing For Loops in Go 1.22" / 自作linterをgolangci-lintへコントリビュートした話

こちらも会社の先輩の発表です。
Go 1.22からfor loopの挙動が変わりましたが、ループ変数のメモリ割り当てが変わる場合と変わらない場合のケースを4つ紹介し、fmt.Println()とbuiltinのprintln()で挙動が変わってくるという説明をコンパイラレベルで説明していました。かなり高度な内容だったので、明らかに20分じゃもの足りない内容でした笑(社内のLT会で1時間発表してほしい笑)
結論ヒープにエスケープされる時は再割り当てが行われ、スタックの時は同じアドレスが使われるとのことです。fmt.Print系の関数は引数を無条件にエスケープするようです。
かなり細かいところまで調べてられていたので尊敬です。個人的には全セッションで一番良い発表でした。

Making Sense of How Rangefunc Works: Just 1 Tip in 5 Minutes

以降はLT枠です。
range over funcをマーベルの世界観に則って説明するという癖のある発表でした笑
僕もマーベル好きなので正直めちゃくちゃわかりやすかったです笑
ちなみに僕はスパイダーマンが好きです。

go get で考慮しているファイルシステムの挙動について

go get の流れをコードベースで紹介していました。
go getの仕組みを知らずに使っていたので、こういった当たり前のように使っていたコマンドの裏側を知るというのもやってみると面白そうだなと思いました。

deadcode超解剖

会社の同期の発表でした。
「deadcodeとcodeと超解剖の剖で韻を踏んでます」という謎の出だしから始まったので心配しました笑
deadcodeの仕組みやunusedとdeadcodeの違い、golangci-lintでdeadcodeが使われていない理由である偽陽性という観点は本当なのかというを調査していました。
この辺の知見は自分には全くなかったので、聞いていて面白い内容でした。

総じて

初めて参加したオフラインイベントでしたが、参加して良かったというこの一言に尽きます。
企業ブースでは他の企業がどのようなライブラリを使っているのかを知ることができたり、おすすめのデバッグ方法を教わったりセッション以外にも学びがあって良かったです。
最高のイベントでした。運営の方々本当にありがとうございました。また来年も参加したいです。

ランチ

一応ランチの写真も載せておきます。
ABTのすぐ側にある博多ラーメン屋です。
めちゃくちゃ美味しかったです。ただ午後眠気がすごかったので次からは気をつけます笑


この記事が気に入ったらサポートをしてみませんか?