Go勉強会 golang.tokyo #39 LT感想レポート

ANDPADでGoを利用して諸々のプロダクトを作っているtomtwinkleです。

2025年6月18日(水)、「golang.tokyo #39」が、弊社アンドパッドのオフィスで開催されました! アンドパッドにとってGo関連イベントの会場提供は初めての試み。運営メンバーとして「皆さんに楽しんでいただけるだろうか…」 とドキドキしていましたが、当日は多くの方にお集まりいただき、大盛況のうちに幕を閉じることができました。 ご参加いただいた皆様、本当にありがとうございます!

後で伺った話では、なんとgolang.tokyoのオフライン参加者数としては過去最大級の55名もの方々にご参加いただけたとのこと!

というわけで、参加した今回のイベントの各発表者のLT内容を振り返りつつ所感をつらつら書いてみます。

では、早速内容を振り返っていきましょう!

開催概要

  • イベント名: golang.tokyo #39
  • 開催日時: 2025年6月18日(水) 19:00 〜 21:30
  • 会場: 株式会社アンドパッド(東京都千代田区神田練塀町300 住友不動産秋葉原駅前ビル 9階)
  • Xハッシュタグ: #golangtokyo

LT感想

LT 1: 株式会社ラクス 竹田氏 - SQLガードレールを作った話

トップバッターは竹田氏による、SQLの予期せぬ実行などを防ぐための「SQLガードレール」を自作したという、非常に興味深いお話でした。発表スライドはこちらです。

pg_query_go を使ってホワイトリスト(もしくはブラックリスト)形式で実行可能なSQLを判別できるSQLガードレール使ったよ!というお話。

SQLはそれ自体が強力な言語であるため、単純な文字列マッチングや正規表現で脆弱性を防ぐのは非常に困難です。 そこで、PostgreSQLのパーサーをGoから使えるpg_query_go を活用し、安全なSQLクエリを判定する仕組みを構築されたとのこと。 堅牢なシステムを作る上で、こうしたライブラリ選定の重要性を改めて感じました。

このライブラリ、内部ではC言語で書かれたパーサーを呼び出しており、スキーマ定義にはProtocol Buffersが使われているんですね。 github.com

スキーマ情報がProtocol Buffersで定義されているなら、protocプラグインでコードを自動生成するなど、応用の幅も広がりそうですね!

また、個人的にはCGOを使わずにWASMで動作するgo-pgqueryも気になるところです。 distrolessのような軽量コンテナイメージで動かす際に、非常に有力な選択肢になりそうです。 発表で使われたコードも公開されていますので、ぜひご覧ください。

LT 2: 株式会社ドクターズプライム 早瀬氏 - CI での golangci-lint の実行を約 90% 削減した話

続いては早瀬氏による、CIの高速化事例。なんと、golangci-lintの実行時間を約90%も削減したというから驚きです!

CIの実行速度は、多くの開発者が抱える共通の悩みではないでしょうか。 最初は良くても、いつの間にか遅くなってしまう…というのは「あるある」ですよね。 会場からも共感の声が聞こえてきました。

golangci-lint-actionsをそのまま使うのではなく、module cachebuild cachegolangci-lint cacheを それぞれ個別にキャッシュするようにGHAのワークフローを修正したとのこと。 この丁寧なチューニングが、劇的な速度改善に繋がったのですね。非常に参考になるお話でした。

早いことは良いことだ! "この世の理はすなわち速さだと思いませんか!"(by ストレイト・クーガー)

LT 3: GO株式会社 pyama86氏 - 新しい職場の CI が 20 分かかっていたらあなたならどうする?

pyama86(P山)氏のLTは「どうする〜? GOする!」という、CMでお馴染みのキャッチーなフレーズでスタート!会場も一気に引き込まれました。

ところで、goplsの読み方が「Go Please」の略だという豆知識も飛び出し、Xのタイムラインも盛り上がっていましたね。ご存知でしたか? pkg.go.dev

当初は機能通りの名称"LSP"だったという経緯もあるようです。

本題は「巨大な単一パッケージ」と「go test -p 1」の組み合わせによるテストの実行速度低下問題。 このキーワードに「あ〜…」と頷いていた方も多かったのではないでしょうか。

この課題に対し、テストを高速化するためのリファクタリング手順が非常に分かりやすく解説されていました。 パッケージを小さく保つことは、保守性だけでなくテストの実行速度の観点からも重要だと再認識しました。

この大規模なパッケージ分割を支援するために自作されたCLIツールpachangerも紹介されていました。これは便利そう! pyama.fun

普段何気なく恩恵を受けているgoplsですが、その機能を直接使ったリファクタリング手法は新鮮で、gopls renameなど、すぐにでも試してみたいテクニックが満載でした。

運営企業 LT: 株式会社アンドパッド 小島 - アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介

ここで、弊社アンドパッドの小島から、社内Go勉強会「gopher会」について紹介させていただきました。

この会は、弊社のGo技術顧問であるtenntenn氏のお力をお借りする機会を定期的につくろう、という目的で始まったと聞いています。 私も途中から参加した身ですが、気づけば開催回数はなんと150回以上!継続は力なり、ですね。

Goの話題が中心ですが、時にはk8sのヘルスチェックなど、業務で直面した悩みを気軽に相談できる貴重な場となっています。

もちろん、全ての問いに明確な答えが出るわけではありません。「CACHEPROGの真価とは…?」のように、議論が続く奥深いテーマもあります。

なるほど……

connectのTypedNil実装は nil checkしているのに何故か nil referenceしてしまってpanicするという挙動を深掘りしていく中で見つけたものです。

issueは投げて結局修正はされなかったのですが、error check最初にするべきだよねという言い分は分かりつつも error の場合、値はTypedNilではなくnilで返るべきじゃね?と思っていたりします。

最近では、Goのproposalを定期的にウォッチする文化も根付いてきており、Go Conferenceへのプロポーザル提出に繋がるケースも増えてきたように感じます。 github.com

私が先日執筆したgo:linknameの記事も、このgopher会での雑談がきっかけでした。 tech.andpad.co.jp

発表後、「gopher会、良さそう!」というお声を多くいただけて、とても嬉しかったです。

gopher会は別の記事でも触れていますので、こちらもご覧ください。

www.wantedly.com

LT 4: kuro氏 - Go1.25 からの GOMAXPROCS

kuro氏からは、Go 1.25で導入が検討されているGOMAXPROCSの自動調整機能についてのお話。パフォーマンスに直接影響する重要な変更点であり、注目しているテーマです。

現状ではautomaxprocsのようなライブラリを使うのが一般的ですが、これがGo本体に取り込まれる可能性があります。 このテーマは弊社のgopher会でも話題に上がっており、特にKubernetesのcgroup環境下でCPUコア数がどう解釈されるのかは、実際に計測してみないと分からない部分も多く、今後の動向から目が離せません。

ところで、発表中にあった「GOMAXPROCSの最小値が2になるかもしれない」という話、なぜなのでしょうか? 素朴な疑問ですが、Goを動かすなら最低でも2コアを用意するのが推奨される、ということ?

LT 5: ディップ株式会社 村松氏 - Go で SFTP コンテナからファイルをダウンロードする

村松氏の発表テーマは「SFTP」。令和のこの時代に、まさかSFTPというキーワードを聞くことになるとは!懐かしさを感じた方も多かったのではないでしょうか。

speakerdeck.com

モダンな環境でSFTPを扱う際、Goでどのように実装したのかが丁寧に解説されており、素晴らしい発表でした。 Xでも温故知新を感じる多くの方々の反響がありました。

LT 6: 株式会社ベースマキナ syumai氏 - ジェネリクスによるスライス操作との付き合い方

syumai氏からはiterとジェネリクスを使ったスライス操作の実装例についてのお話でした。

iterのrange ovre funcの概念自体はシンプルですが実装を見るとやっぱちょっと認知負荷高いよねという気持ちよくわかります。 xiterの話も無くなっちゃいましたからね。 github.com

samber/lo便利だけど機能多すぎて使う時の認知負荷が高いので みんなちょい改造した似たようなライブラリ作ってる説はあります。 私のチームでも実のところslicesパッケージを拡張したライブラリを自作しています。

あと、go-functionalのマスコットキャラはかわいい!

github.com

LT 7: yushin氏 - gopls で知る言語サーバー

最後のLTはyushin氏による、goplsを題材にした言語サーバープロトコル(LSP)の解説。奇しくもpyama86氏の発表に続き、goplsネタで会場が和む一幕も。

新卒のエンジニアの方と伺いましたが、LSPの基本からgoplsの内部実装までを非常に分かりやすく解説されており、その技術力の高さに圧倒されました! 普段、エディタの裏側で動いているgoplsがどのような仕組みでコード補完や定義ジャンプを実現しているのか、そのインターフェースを垣間見ることができ、大変勉強になりました。


まとめ

golang.tokyo #39、どの発表も非常に興味深く、最高のイベントでした! Go ConferenceのProposal提出期限がイベント当日までということもあり、2次会では「プロポーザル出せるまで帰れま10」を実施していたみたいですね。

LTでご登壇された皆様、そして会場やオンラインで参加し、イベントを盛り上げてくださった全ての皆様に、改めて感謝申し上げます。ありがとうございました!

これからも、皆さんと一緒にgolang.tokyoを盛り上げていけたら嬉しいです!


アンドパッドでは gopher会 に参加してみたいGoエンジニアを絶賛募集中です!

hrmos.co