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. ϊʔυ Λ for range จͱͯ͠ղऍ ϧʔϓม਺Λએݴ͍ͯ͠Δ΋ͷ͕ ର৅ (ex. `for k,

    v := range m`) #2. for range Λ࢖͍ͬͯΔՕॴͷݕग़ 27
  7. ࢖͏ʹ͋ͨͬͯͷݸਓͷҙݟ & ཹҙ͢΂͖఺ • 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