Upgrade to Pro — share decks privately, control downloads, hide ads and more …

私達はmodernize packageに夢を見るか feat. go/analysis, g...

Avatar for m_t_tion1 m_t_tion1
September 28, 2025

私達はmodernize packageに夢を見るか feat. go/analysis, go/ast / Go Conference 2025

Go Conference 2025 の資料です

Avatar for m_t_tion1

m_t_tion1

September 28, 2025
Tweet

More Decks by m_t_tion1

Other Decks in Programming

Transcript

  1. 自己紹介 2 Kaoru Muta 牟田 薫 (メントス) 生まれ育ち大阪で今も大阪にいます 🐯 株式会社BuySell

    Technologies でバックエンド担当 ブロンズスポンサー として協賛してるよ! 買取・査定 買取種別に応じた最適なシステム構築 Visit -訪問買取 - Store -店舗買取 - 買取 リユースプラットフォーム Cosmos 自社開発のリユース特化業務基幹システムでありサービス群の集合体 @m_t_tion1
  2. modernize package とは • gopls に入っている (2025/9 時点では v0.2.0) •

    go run コマンドで実行できる ◦ -fix で、最新の Go で取り入れられた記法を適用してくれる 8
  3. modernize package とは 9 forvar (Go 1.22 ~) waitgroup (Go

    1.25 ~) 他にも、efaceany (interface{} → any) など、複数のケースに対応
  4. 前提知識 - go/ast 12 Go ソースコードの抽象構文木 (AST) を表現するためのパッケージ #1. Node

    AST の各要素 (ex. 文・式・変数) 文の AST Node を Stmt interface で扱う #2. Token 字句の最小要素 (ex. 演算子・リテラル)
  5. 前提知識 - go/analysis 14 Go で静的解析を実装するためのフレームワーク #3. Diagnostic Analyzer が出力する指摘事項

    #4. SuggestedFix Diagnostic に対しての修正案 (CLI で -fix option で修正を適用できる)
  6. 使うにあたっての個人の意見 & 留意すべき点 • modernize は温度感高く、最新の変更に追従してくれている様子 ◦ waitgroup.Go が Go

    1.25 に approve されたことを受けて 即座に対応している: https://github.com/golang/go/issues/73059 • 生成AIにコードを書かせる観点 ◦ 昔のバージョンで書いてくる場合に対応が必要 ◦ CI で modernize -test を実行して、失敗を元に修正させるとか? • ただし、あくまで beta であり、issue もあがっている ◦ https://github.com/golang/go/issues/75358 : 実行時に panic 35