AIに新しいGoを書かせる
Seiji Nakayama
2026/08/27 Go Connect #16

せいじ (Seiji Nakayama)

x (@se_eiji)
所属
株式会社miive
業務
バックエンド(Go)・Web・アプリ開発
エディタ
Neovim
好き
Raycast・Vim・ロードバイク
サイト
HomePage Raycast GitHub X

miiveではGoを利用しています!

従業員向けのプリペイドカード型 福利厚生プラットフォーム

  • 会社が従業員に福利厚生を配る
  • ランチ代・書籍代などに使える
  • お金が動くサービス

決済だからこそ、軽量 & 型安全な Go

余談:miive と Go、カラーが近い

miive miive

Go 公式カラーパレット

GOPHER BLUE #00ADD8
LIGHT BLUE #5DC9E2
AQUA #00A29C

Light Blue〜Aquaあたり、近い気がしている

世はまさに
大AI時代

miiveでも Claude Code / Codex / OpenCode / Raycast / Devin …

AI は「学習したもの」

書き方が、学習データの時点で止まっている

Go は半年に1回変わる

バージョン リリース
1.25 2025年8月
1.26 2026年2月
1.27 2026年8月

半年ごとに、書き方も標準ライブラリも少しずつ新しくなる

具体的にはこういうコードが出てくる

var s interface{}                            // → any
for i := 0; i < n; i++ {}                    // → for i := range n
sort.Slice(xs, func(i, j int) bool { return xs[i] < xs[j] }) // → slices.Sort
atomic.AddInt64(&counter, 1)                 // → counter.Add(1)
wg.Add(1); go func() { defer wg.Done() }()   // → wg.Go(...)

動くけど、古い

  • テストも通る。レビューで「それ any で」と言うしかない
  • しかも Go は半年ごとに変わるので、指摘するネタは増え続ける

人が指摘するのをやめて

新しい書き方に自動で寄せる

go fix

go fix は Go 1.26 で別物になった

The venerable go fix command has been completely revamped
and is now the home of Go's modernizers.

The go fix command's historical fixers, all of which were obsolete,
have been removed.
Go 1.26 Release Notes

由緒ある go fix コマンドは全面的に作り直され、いまや Go の モダナイザの本拠地になった。
古い fixer は、すべて時代遅れになっていたので削除された

modernize は「スタイル」だけの話ではない

atomictypes

// Before
var counter int64
atomic.AddInt64(&counter, 1)

// After
var counter atomic.Int64
counter.Add(1)
  • 非アトミックなアクセスが型で不可能になる
  • 32bit 環境のアライメントバグも黙って消える

go vet はチェック、go fix は更新

同じ analysis framework を使うが、役割と標準動作が違う

役割 標準では
go vet バグになりそうなコードを探す 報告する
go fix 今風に直せるコードを探す 書き換える
go vet も -fix を付ければ、直せるものは書き換えられる

go fix は、コードを今の Go らしい書き方へ更新する入口

Go 1.27 で fixer の顔ぶれが変わった

Go の文法が変わったのではなく、go fix が直せる範囲が変わった

追加

  • atomictypes
  • slicesbackward
  • embedlit
  • unsafefuncs
embedlit だけは 1.27 の言語変更
(構造体リテラルのキー拡張) への追随

削除

  • fmtappendf

改名

  • waitgroupwaitgroupgo
go vet 側の同名 analyzer と
紛らわしいため

ここからが本題

AI は既存コードを真似る

コードベースを新しく保てば

AI の出力も新しくなる

go fix は掃除ではなく、AI への継続的な教育

これまでの効能

コードが新しくなる

AI 時代の効能

AI の書き方が新しくなる

  • 周りが interface{} だらけなら、AI も interface{} で書く
  • 周りが any なら、AI も any で書く
  • コードベースが、AI にとってのお手本になっている

運用はシンプル

go fix ./...        # 直す
go fix -diff ./...  # 直さずに差分だけ出す(CI 用)
  • push / PR の前に回してコミットするだけ
  • Claude Code だろうが Codex だろうが OpenCode だろうが同じ
    • ツールごとに設定を書き分けなくていい
  • miive では push 直前のフックで強制している

これで、モダンな書き方になる

AI が書いても、コードベースは古くならない

蛇足:AI がもたらした副作用が、もう 2 つ

① 自分のコードを信用する

動かしていないのに
「動きます!」と言う

② テストが肥大化する

昔: カバレッジをどう上げるか

今: 誰でも簡単に書けるので、
増えすぎる

AI 時代のチェックを、速く回す

① 正しさを担保する

  • CI で落とす
  • AI でレビュー(Devin など)

② 待ち時間を減らす

  • テストそのものを高速化
  • Blacksmith で CI 基盤も高速化

チェックを増やしても、開発を止めない

まとめ

  • Go は半年に 1 回変わる。AI はそれに追いつかない
  • go fix は 1.26 で modernizer の本拠地になった
  • コードベースを新しく保てば、AI の出力も新しくなる

go fix ./...

まだ叩いていない方はぜひ

こんなものも話題

JetBrains/go-modern-guidelines

宣伝

miive は Go Conference 2026
シルバースポンサーとして参加します

ブースに遊びに来てください!

  • かわいいノベルティを作りました
  • 決済バックエンドの話、いくらでもします
※ 開催日・会場の詳細は公式サイトを参照

ご清聴ありがとうございました