Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
統一感のある Go コードを生成 AI の力で手にいれる
Search
Kotaro Otaka
June 11, 2025
Programming
1
3.2k
統一感のある Go コードを生成 AI の力で手にいれる
The Go gopher was designed by Renée French.
https://gotalk.connpass.com/event/355423/
Kotaro Otaka
June 11, 2025
Tweet
Share
More Decks by Kotaro Otaka
See All by Kotaro Otaka
SQLBoiler がメンテナンスモードになりまして
otakakot
0
120
Wasm わからないけど Go で実装したいから入門する
otakakot
1
9.5k
cmp.Or に感動した
otakakot
3
740
net/http/httptest が推しです♡
otakakot
3
250
無料で楽しむ Go サーバー開発のススメ
otakakot
10
3.5k
Go のテストで失敗をマークする
otakakot
1
190
Other Decks in Programming
See All in Programming
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
2
750
Go製CLIツールをnpmで配布するには
syumai
1
930
0から始めるモジュラーモノリス-クリーンなモノリスを目指して
sushi0120
0
210
それ CLI フレームワークがなくてもできるよ / Building CLI Tools Without Frameworks
orgachem
PRO
15
3.4k
Google I/O Extended Incheon 2025 ~ What's new in Android development tools
pluu
1
210
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
35
10k
ソフトウェア設計とAI技術の活用
masuda220
PRO
25
7k
フロントエンドのパフォーマンスチューニング
koukimiura
6
2.3k
テスターからテストエンジニアへ ~新米テストエンジニアが歩んだ9ヶ月振り返り~
non0113
2
250
AI Ramen Fight
yusukebe
0
120
構文解析器入門
ydah
7
1.9k
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
240
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Site-Speed That Sticks
csswizardry
10
730
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Building an army of robots
kneath
306
45k
BBQ
matthewcrist
89
9.8k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Navigating Team Friction
lara
188
15k
Transcript
The Go gopher was designed by Renée French. 統一感のある Go
コードを 生成 AI の力で手にいれる おーたかこーたろー / @otakakot 2025.06.11 GoConnect #7
Go コードに統一感をもたらすためには 静的解析は非常に強力な手段 #goconnect #goconnect
golangci-lint が活躍 #goconnect #goconnect https://github.com/golangci/golangci-lint
こんな経験ありませんか? #goconnect
#goconnect 対応箇所が多くて めんどくさい linter / formatter が 存在しない
こんな課題を解決するための 生成AIを使った取り組みをご紹介 #goconnect
Kotaro Otaka おーたかこーたろー / @otakakot #goconnect Web Engineer 新卒入社 Hello
Golang! Web Engineer @株式会社ビットキー 2020.04 2021.04 2022.11 Go言語推し
#goconnect 前提 https://github.com/features/copilot GitHub Copilot を活用
INDEX 01 生成AIに修正させる 02 対 golangci-lint を作ってみる 03 独自 formatter
を作ってみる 04 生成 AI のためにテンプレートを作る 05 独自 linter を作ってみる 06 まとめ
INDEX 01 生成AIに修正させる 02 対 golangci-lint を作ってみる 03 独自 formatter
を作ってみる 04 生成 AI のためにテンプレートを作る 05 独自 linter を作ってみる 06 まとめ
#goconnect golangci-lint の指摘 直すのめんどくさいな
#goconnect そうだ!生成AIに直させよう! はい 直して
#goconnect golangci-lint v1.8.0 Long Length Liner 指定した文字数を 超えたら指摘 https://github.com/walle/lll
#goconnect サンプルコード
#goconnect golangci-lint を実行 このエラーメッセージを そのまま送信
#goconnect GitHub Copilot の回答
#goconnect GitHub Copilot の提案を適用
#goconnect ファイル単位での作業なので 時間がかかる トークンの消費も 多くなる
INDEX 01 生成AIに修正させる 02 対 golangci-lint を作ってみる 03 独自 formatter
を作ってみる 04 生成 AI のためにテンプレートを作る 05 独自 linter を作ってみる 06 まとめ
#goconnect GitHub Copilot に修正コードを 書かせてみるのは?
#goconnect golangci-lint v1.8.0 Long Length Liner 指定した行数を 超えたら指摘 https://github.com/walle/lll
#goconnect 関数・メソッド & コメント 対応すべきは2パターン
#goconnect 関数・メソッド & コメント(before)
#goconnect 関数・メソッド & コメント(after) nolint:lll を付与 引数を改行
#goconnect GitHub Copilot に依頼 go/ast パッケージを使って
#goconnect 適応 → 修正を繰り返す はい 作って 直して
#goconnect ポイント コードは使い捨てと割り切る 完成度は8割程度でOK 複雑化をさけるためひとつの処理に集中
#goconnect そんなこんなで晴れて完成しましたが...
#goconnect すでに OSS ライブラリが存在
#goconnect golangci-lint v2.0.0 長い行を短縮 オプションで コメントにも対応 https://github.com/segmentio/golines
INDEX 01 生成AIに修正させる 02 対 golangci-lint を作ってみる 03 独自 formatter
を作ってみる 04 生成 AI のためにテンプレートを作る 05 独自 linter を作ってみる 06 まとめ
#goconnect 独自の linter / formatter 欲しいな
#goconnect これも Copilot に書かせてみよう!
#goconnect 文字列リテラルを変換したい `` バッククォートを “” ダブルクォートに
#goconnect 一括置換では不可能 https://go.dev/ より抜粋
#goconnect GitHub Copilot に依頼 go/ast パッケージを使って
#goconnect 適応 → 修正を繰り返す はい 作って 直して
#goconnect サンプルコードだけだと精度が低い 実際に修正したいコードを使って試行錯誤 ポイント
#goconnect 独自の formatter の実装が可能に! ぱち ぱち ぱち
INDEX 01 生成AIに修正させる 02 対 golangci-lint を作ってみる 03 独自 formatter
を作ってみる 04 生成 AI のためにテンプレートを作る 05 独自 linter を作ってみる 06 まとめ
#goconnect 毎回ゼロから作らせるの安定しないし 調整する時間もったいないな
#goconnect 以下のコードをテンプレート化 自動生成コード の除外 ファイルの フォーマット 対象ファイル or ディレクトリの指定 ファイルへの
書き込み vendor ディレクトリ の除外
#goconnect テンプレート化してみましたが ...
#goconnect すでにある仕組みだと気づきまして... ぴえん...
#goconnect https://pkg.go.dev/golang.org/x/tools/go/analysis
#goconnect https://engineering.mercari.com/blog/entry/2018-12-16-150000/
INDEX 01 生成AIに修正させる 02 対 golangci-lint を作ってみる 03 独自 formatter
を作ってみる 04 生成 AI のためにテンプレートを作る 05 独自 linter を作ってみる 06 まとめ
#goconnect error のスコープ制限したいな
#goconnect before
#goconnect before err のスコープを限定できる
#goconnect after
#goconnect tenntenn さんが開発 静的解析ツールの スケルトンコード生成 初期化コードや テストコード https://github.com/gostaticanalysis/skeleton
#goconnect run 関数を修正させる
#goconnect 適応 → 修正を繰り返す はい 作って 直して
#goconnect 精度をあげる テストコード 増やして このパターンも 対応して はい
#goconnect error 変数の スコープを判定 if スコープに 閉じ込められるか指摘 よかったら 使ってみてね https://github.com/otakakot/errifscope
INDEX 01 生成AIに修正させる 02 対 golangci-lint を作ってみる 03 独自 formatter
を作ってみる 04 生成 AI のためにテンプレートを作る 05 独自 linter を作ってみる 06 まとめ
#goconnect まとめ 生成 AI に修正させるのではなく 自動修正コードを書かせよう!
おわり またどこかで お会いしましょう!