9月27日(土)、9月28日(日)に東京で開催されるGo Conference 2025に登壇します。

一昨年、去年と続き3年連続の登壇をさせていただくこととなりました。Go言語に関する日本最大のカンファレンスで、これって実はすごいことなのでは。業務でがっつりGoだけを書くことは無くなったのですが、Goは大好きな言語なので、また登壇機会をいただき嬉しいです。
「panicと向き合うGo開発 - nilawayで探る見逃されるnil参照とその対策」というタイトルで発表します。当日は私が所属している株式会社カンムもシルバースポンサーとしてブースを出展する予定です。私もいる予定なので、よければぜひお越しください。
発表内容(descriptionを貼っただけ)
Goにおけるpanicは、ポインタがnilの状態でその先の値にアクセスしようとした際に発生するランタイムエラーです。発生条件はシンプルですが、どれだけ注意していても実行時に発生する可能性があります。これは大規模システムでも例外ではなく、時にはサービス停止といった深刻な障害を引き起こすこともあります。
実行前に潜在的なpanicとなる箇所を検出したいところですが、構文レベルの静的解析ではpanicを捉えられるケースは限られています。例えばGo公式ツールチェインに含まれるnilnessは、典型的で単純なnil参照パターン(例:if x == nil { print(*x) }
)は検出できます。しかし、関数やパッケージをまたいでnilが渡され、最終的にどこかで参照されてしまうような、実際の開発で気づきにくいケースは検出できません。
こうした限界を補うために登場したのが、静的解析ツールuber-go/nilaway(以下、nilaway) です。nilawayは、コード中のnilの発生と伝播を「nil の可能性フロー」としてモデル化し、2-SAT(充足可能性問題)と呼ばれるアルゴリズムを使って、より複雑なpanicのリスクを検出します。
本セッションでは、Go の開発現場でよくある panic を題材に、nilawayがその原因をどのように捉え、検出できるのかを、数式を使わず具体的なコード例を通じて解説します。panicが発生しうるメカニズムとその検出方法を理解することで、参加者の皆さんがGoのnilに対する言語仕様や、安全性を支える設計思想への理解を一段深めることを目指します。