munetoshi / @mntsh / 株式会社ナレッジワーク / ソフトウェアエンジニア
※2026/9/18開催「Go Night Talks2026 – After Conference」での登壇資料です
https://upsider.connpass.com/event/403598/
<セッション概要>
「この引数に nil を渡してよいか」「この戻り値に nil はありえないか」。Go はこれをコードとして明示する手段を持たず、答えは実装詳細と書いた人の記憶、コメントの中にしかありません。書かれていない制約は、破られても気づけません。
本発表では、制約をコメントとして書き、言語もコンパイラも変えずに CI で検証する仕組みをお話しします。制約は関数の引数や戻り値、構造体のフィールドに対して書き、違反があればリントエラーとして直すべき場所が示されます。
宣言の検証は、基本的に SSA (Static Single Assignment) でコードのフローを追うことで実施されます。それをパッケージを越えて伝播させるために go/analysis の Fact を使います。ただし全ファイルを検証するのではなく、対象は変更されたファイルとその呼び出し元だけに絞ります。
<プロフィール>
株式会社ナレッジワークのソフトウェアエンジニア。バックエンドが主務だが得意なのは Android App。コードの可読性と堅牢性にちょっとうるさい。著書に「読みやすいコードのガイドライン ―持続可能なソフトウェア開発のために」と「エンジニアチームの生産性の高め方 〜開発効率を向上させて、人を育てる仕組みを作る」がある。