newmo 技術ブログ

技術で地域をカラフルに

Go Conference 2025 でワークショップ「†開発を加速させる黒魔術講座†」を開催しました!

先日開催された Go Conference 2025 にて、newmo のエンジニアから「†開発を加速させる黒魔術講座†」というワークショップを開催させていただきました。本記事では、現在も公開しているこのワークショップの内容について紹介します!

†開発を加速させる黒魔術講座†

このワークショップでは、日常的な開発ではなかなか触れる機会の少ない「†黒魔術†」的な Go のテクニックについて、実例を交えた解説と例題をベースとした学習の機会を提供することを目的として開催しました。

ワークショップの様子

当日はありがたいことに満員御礼で、参加者の方々もグループになってわいわい交流しながら課題に取り組んでいただけたので、よいワークショップになったかなと思います!

ワークショップでは、具体的には以下のトピックを取り扱いました:

Delve デバッガによる Go プログラムのデバッグ

バグが入っているサンプルプログラムを Delve でデバッグして、ブレークポイントでのプログラムの停止やステップ実行を駆使してバグを発見・修正しましょう!

overlay によるソースコードの上書き

overlay の基本的な使い方を学び、標準パッケージの関数をテスト用に置き換えてみましょう!

toolexec による Go ツールチェーンのフック

toolexec を使って Go のビルドプロセスを可視化・カスタマイズします。ビルドツールの実行を透過的にラップし、ビルドプロセスの観察、そして Gopher アートでビルドを楽しく演出する方法を学びます!

Go Assemblyで低レイヤに触れてみよう

Go のコードから生成されるアセンブリを読んで理解し、簡単な算術関数(Add、Sub)をアセンブリで実装します。AMD64 と ARM64 両方のアーキテクチャに対応した実装を学びます!

reflect パッケージによるメタプログラミング

reflect パッケージの基本的なメソッドを利用してメタプログラミングをしましょう!

ジェネリクスで型安全なコードを書こう

Generics を使ったコードを色々触って、どんな事ができるのか見ていきます。最終的に JSON を Unmarshal するコードを書いてみましょう!

Suggested Fix で lint エラーを修正しよう

静的解析ツールを実装して、見つけた lint エラーになるコードを自動で修正してみましょう!

unsafeパッケージの強力さと危なさを学ぼう

非公開フィールドへのアクセス、構造体サイズのコンパイル時検証、スライスの内部構造の操作を実践します。unsafe.Pointer型、unsafe.Sizeof関数、uintptr型、unsafe.Add関数などの使い方を学びながら、Goランタイムの内部実装を覗いてみましょう!

ビルドタグによる時限爆弾型の脆弱性について学ぼう

ビルドタグを使った時限爆弾攻撃の作成と検証、静的解析ツールがビルドタグ付きファイルを見逃す仕組みの確認を行います。GOTOOLCHAIN環境変数を使って異なるGoバージョンでの動作を実際に体験し、go vetコマンドによる静的解析の限界を学びます!

ワークショップの公開

このワークショップは、カンファレンスが終わったあとでも独学できるように、現在もオンラインで公開しています: https://newmo-oss.github.io/gocon25-workshop/

ワークショップは Codelabs 形式で提供しており、各トピックについてステップバイステップで進められるようになっています!

Codelabs 形式のワークショップ
Codelabs 形式のワークショップ

このワークショップが、日頃触れる機会の少ない Go のテクニックについて学習する機会になれば幸いです!ぜひ試してみてください!!