Go Conference mini 2023 Winter IN KYOTOに参加しました

バックエンドエンジニアの阿部です。

去る12/2、Go Conference mini 2023 Winter IN KYOTOに参加してきました。今回のブログではその感想などをレポートしたいと思います。

Go Conference miniとは

Go Conference miniは、一般社団法人Gophers Japanが運営するGo Conferenceの縮小版のカンファレンスです。前回の第一回目は私も運営として携わっているSendai.goが主催となり2022年10月に仙台で開催しています。第二回目の今回はKyoto.goとGophers Japanの共催で京都にて開催されました。

kyotogo.connpass.com

前回のGo Conference mini '22 Autumn in SENDAIについては、同じくSendai.goの運営を行っている弊社エンジニアのせのうえがレポートしてくれています。

creators.videomarket.co.jp

会場は京都市役所近くのQUESTION 7F Creative Commons。近くには本能寺もあり、歴史好きの私にとっては堪らないロケーションです!会場に入る前にもちろん参拝してきました。

本能寺
会場のQUESTION

こちらはスタート前の会場の様子です。開場後続々と参加者が来場し、スタート時にはほぼ満席となっていました。来場者のGo Conference miniに寄せる期待度を感じます。

スタート前の会場の様子

こちらは来場者が自社について自由に書き込めるジョブボードです。いろいろな企業が参加されているのが分かります。

ジョブボード

ここからは、特に印象に残ったセッションをいくつか紹介させていただきます。すべてのセッションはこちらに掲載されています。

Deep dive into log/slog package

Go1.21から追加された構造化ロギングパッケージであるlog/slogについてのセッションです。

ロギングはどのような機能を実装するにしても併せて実装するものだと思っています。ロギングパッケージは、最近の開発でzapを利用したもののこれまでのほとんどをlogパッケージを利用しており、log/slogパッケージは有用性を感じてはいたものの、まだ自分で詳しく調べるまでには至ってはいませんでした。ですので、このセッションは必ず聞こうと思って参加していました。

このセッションではパッケージのアーキテクチャの説明からメモリアロケーションの効率化の話などを、実際のソースコードを紐解いて詳しく説明してくれました。ログ出力でメモリを少しでも節約しているモチベーションの実装となっていることに感動しました。今後の実装に是非利用したいと思われてくれるセッションでした。

Goにおけるcall graphを用いた大規模コードベースの影響調査

データに関する影響調査を、call graphを用いてシステマチックに解決する手法についてのセッションです。

データのマイグレーションや変更時の影響調査という作業は業務においてしばしば発生しますが、例えばレイヤードなアーキテクチャをDomain層(Entity)からPresentation層までIDEで辿って影響するエンドポイントを調査する場合など、ヒューマンエラーを招かねない作業だと思います。それをシステマチックに解決できるのがcall graphであり、事例踏まえてわかりやすく説明してくれていました。

私自身call graphというのは恥ずかしながら馴染みのない単語だったのですが、今後の業務につながるとても参考になるセッションでした。以下のパッケージを確認し、自分でも調べてみようかと思っています。

pkg.go.dev

github.com

日時処理の新スタンダード: Synchro によるタイムゾーン安全、楽々開発

日時処理に関するSynchroパッケージの紹介についてのセッションです。

文字列⇔日時の変換処理やタイムゾーンの扱いを楽にしてくれるパッケージとなっており、特にISO8601を完全サポートするために実コードの4倍のテストコードを書いていることには会場全体が拍手でしたw このパッケージは今後利用してみたい!使わない手はない!そんな気持ちにしてくれるセッションでした。

github.com

The Future of encoding/json

encoding/jsonパッケージのメンテナーによって開発中のプロトタイプである、encoding/json/v2パッケージについてのセッションです。

v1の欠陥を補い、今後encoding/json/v2パッケージに入るであろう機能についての説明でした。特に、io.Readerから直接Unmarshal出来ず中間エンコードする必要があるジレンマを、MarshalWrite、UnmarshalRead関数でio.Readerを引数にとれるようにして解決しているという話は「おぉ〜いいじゃん・・・!」となりました。 encoding/json/v2については以下のまとまっているので、こちらも確認しておきたい内容です。

github.com

続) TinyGo で作る自作キーボードの世界

TinyGoを用いた自作キーボードの作り方についてのセッションです。

セッションではライブコーディングが行われました。ライブコーディングあるある(?)のハプニングが少しありつつも、TinyGoで簡単に自作キーボードのファームウェアを作成できることを実演をしてくれました。 私自身ずっとWeb関連に携わっており組み込み系はやったことがないのですが、その簡単さに自分でも自作キーボードを作成してみたい!と思われてくれたセッションでした。Vimの扱いも素敵でした。(範囲指定の色付けプラグインがいい!) www.vim.org

まとめ

今回このカンファレンスに参加し、技術に関する新発見によってGo言語へのモチベーションがますます上がったのはもちろんですが、全国のgopherや現地の学生の方とオフラインでお会いし、カンファレンス後に開催された懇親会で交流させていただいたのが大きな財産となりました。 オフライン開催のカンファレンスへの参加意義No.1はここだと私は思っており、本当に有意義な時間を過ごすことができました。次回のminiにて、日本のどこかでまたお会いしたいと思っています。

少し話が逸れますが、京都にいた3日間はちょうど紅葉が見頃の時期であり、天候にも恵まれ、秋の色づきも十二分に楽しんできました。

最後に運営スタッフの皆様、登壇者の皆様、素晴らしいカンファレンスをありがとうございました。サイコーに楽しかったです!