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
Golangci-lint と AI をメンターとして活用する Go の深掘りアプローチ / ...
Search
uMa
November 27, 2025
Programming
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Golangci-lint と AI をメンターとして活用する Go の深掘りアプローチ / Deep Diving into Go Using Golangci-lint and AI as Mentors
uMa
November 27, 2025
More Decks by uMa
See All by uMa
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
830
Other Decks in Programming
See All in Programming
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
180
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
360
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
180
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.3k
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.4k
ふつうのFeature Flag実践入門
irof
8
4.1k
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
160
Oxcを導入して開発体験が向上した話
yug1224
4
320
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.4k
Creating Composable Callables in Contemporary C++
rollbear
0
150
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
270
dRuby over BLE
makicamel
2
380
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Mobile First: as difficult as doing things right
swwweet
225
10k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
420
Information Architects: The Missing Link in Design Systems
soysaucechin
0
970
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
260
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Cost Of JavaScript in 2023
addyosmani
55
10k
We Are The Robots
honzajavorek
0
250
The Pragmatic Product Professional
lauravandoore
37
7.3k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
390
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
Golangci-lint と AI を メンターとして活⽤する Go の深掘りアプローチ 原 佑⾺ /
@__uMa1133
SPEAKER プロダクト開発本部 サーバーサイドエンジニア 原 佑⾺(uMa) • 2022 年 4 ⽉〜
前職 ◦ バックエンド開発(JavaScript/TypeScript, Perl など) ◦ その他、フロントエンドやインフラ領域なども担当 ◦ 合計 3 回のチーム異動を経験 • 2025 年 4 ⽉〜 株式会社ヤプリ ◦ 主に Go 製のバックエンドアプリケーションを担当
INDEX ⽬次 1. Go との出会い 2. Go について学ぶ with Golangci-lint
3. Golangci-lint と学んでみて 4. AI を活⽤した更なる深掘りアプローチ 5. Claude Code Plugin を活⽤した具体⼿法と実践例 6. まとめと展望
1. Go との出会い
きっかけ ヤプリ⼊社前のこと、とあるチームでバックエンド開発⾔語を選定することに。 → 以下の理由から Go が第⼀候補に決定! • 学習コストの低さ • ⾼いパフォーマンス
• 充実したエコシステム 1. Go との出会い
キャッチアップにおける課題点 早速 PoC 実装を開始することになったが... • チーム内や周囲に Go の実務経験者はゼロ • ⾃⾝も
Go を使うのは初めて • PoC 実装の期限はかなりタイト(半年未満) ◦ 但し、今後の開発運⽤に耐えうることを⽰すために、⾼い品質のアウトプットが求められる → 爆速でキャッチアップをしなければ...! 1. Go との出会い
2. Go について学ぶ (with Golangci-lint)
どのようにキャッチアップしたか? 公式のチュートリアルやドキュメントが充実しているので、まずはそこから • A Tour of Go(https://go.dev/tour/) ◦ Play Ground
付きで Go の基礎が学べる(嬉しい) • Effective Go(https://go.dev/doc/effective_go) ◦ Go の特性を踏まえて効果的なコードを書くための⽅法が紹介されている(嬉しい) + 個⼈開発でも Go を使ってみることに! 2. Go について学ぶ with Golangci-lint
Golangci-lint について "Golangci-lint is a fast linters runner for Go"
• 100 種類以上の Linter をインストール無しで利⽤可能 • コードフォーマットやパフォーマンス、セキュリティなど Linter の⽬的は様々 • Issue 経由の Linter 追加依頼受付 / 古いルールの Deprecated 管理 → 需要や品質が担保された信頼できる Linter が豊富 2. Go について学ぶ with Golangci-lint
初学者にとっては初期設定が⼤変 • 膨⼤な数の Linter からどれを有効化するべきなのか? ◦ まだ Linter の概要⽂を読んでもピンとこないことも •
有効化したとしてその設定はどのようにするべきか? ◦ 各 Linter で設定できる内容もまちまちなので、すべて把握してから始めるのは⾮現実的 • 巨⼤なプロジェクトの設定ファイルを参考にする? ◦ アーキテクチャや思想はプロジェクトごとに異なるので、良く理解せずにそのまま流⽤する のは不適切に思える 2. Go について学ぶ with Golangci-lint
⼀旦全て有効化してしまおう! ※ v1 では enable-all: true ※ 各種 Linter のルールはデフォルト設定のままなので注意
2. Go について学ぶ with Golangci-lint
Golangci-lint をメンターとして活⽤する エラーが出るたびに以下を繰り返す: 1. Linter のドキュメントを確認 2. ルールの意図を理解 3. ⾃分のプロダクトに適⽤するか判断
4. 必要に応じて設定を調整 → 成熟した Go エンジニアがアドバイスをくれているようなもの = 助⾔者(メンター) 2. Go について学ぶ with Golangci-lint
3. Golangci-lint と学んで みて
学びの例1 少し古めの記事や知識、 Copilot による補完を基に下記のようなコードを書いて いたところ、すでに不要になっている処理を書いていることを教えてくれた: 3. Golangci-lint と学んでみて
学びの例 2 依存性逆転のためにインターフェースを返す関数を書いていたところ、 Accept Interface, Return Concrete Types という考え⽅を教えてくれた: →
ハードルールでもなく、今回のケースでは返り値の拡張性を必要としていな かったので無効化 ※ ついでに Go Wiki: Go Code Review Comments というページの存在も知った 3. Golangci-lint と学んでみて
他にも多くの気づきや学びがあった • Staticcheck(SA4023) ◦ インターフェース型を返す関数で、具象型の nil ポインタを返すと == nil は
false になる • Staticcheck(SA9004) ◦ const 宣⾔で最初だけ型を指定しても、iota 使⽤時を除き、それ以降には型が引き継がれな い • revive(string-of-int) ◦ 整数を string(i) で変換すると、⽂字コード(rune)として解釈される などなど 3. Golangci-lint と学んでみて
感想 • 実装するものによって学べるものとそうでないものがある ◦ ある程度慣れてきたらコードリーディングをしたり、しっかりとルール選定していくのが良さ そう ◦ ただ、⾛り出しとしては有効な⼿段だったようにも思う • 個⼈開発レベルであれば全ルール有効化は選択肢として有りなのでは
◦ 多様な⽬的の Linter を第三者が選定して導⼊してくれるようなもの ◦ 更新して落ちるようになったらそれは学びのチャンス • 今だと AI を活⽤すればより⾼い効果が得られるかも ◦ Golangci-lint に基づいたレビューや議論など 3. Golangci-lint と学んでみて
4. AI を活⽤した更なる深 掘りアプローチ
ヤプリでの AI 活⽤ ヤプリでは、AI 委員会を中⼼として多くの AI サービスを活⽤しています! 例: • Gemini
• NotebookLM • Devin • GitHub Copilot • Claude Code など 詳しくは技術ブログをご覧ください:https://tech.yappli.io/archive/category/AI 4. AI を活⽤した更なる深掘りアプローチ
Golangci-lint をメンターとした際の課題点 • 学習内容の偏り ◦ 実装するものへの依存度が⾼い ◦ そもそもルールに存在しない内容は学べない • 初学者に対するハードルの⾼さ
◦ ルールの取捨選択はある程度経験がないと難しい 4. AI を活⽤した更なる深掘りアプローチ
各課題に対する AI 活⽤アプローチ • 学習内容の偏り → AI による題材の選定 ◦ 学びたい内容から題材を⽣成してもらうことで、確実に成果を得る
• 初学者に対するハードルの⾼さ → AI によるメンターの代替 ◦ Lint エラーの説明やプロジェクトへ適⽤するかどうかの判断をサポートしてもらう ◦ 上記以外にも、コードレビューや質問‧相談対応をしてもらう 4. AI を活⽤した更なる深掘りアプローチ
5. Claude Code Plugin を 活⽤した具体⼿法と実践例
Claude Code Plugin について カスタムコマンド、エージェント、フック、スキル、MCP サーバーを通じて Claude Code を拡張するプラグインシステム。 出典:
https://code.claude.com/docs/ja/plugins → プラグインをインストールするだけで誰でも同じ体験が可能に 5. Claude Code Plugin を活⽤した具体⼿法と実践例
今回作成したプラグイン https://github.com/uma-31/claude-code-plugins/tree/main/plugins/go-learni ng-plugin 導⼊⽅法: 5. Claude Code Plugin を活⽤した具体⼿法と実践例
学習の流れ 1. 学びたいことを指定して題材を⽣成 a. 複数提案して選択する形式 2. 選択した題材に基づいた実装準備 a. 完成させるためのプランニングを実施 b.
Golangci-lint の設定も⽣成 3. 実装中のコードレビューや質問対応 a. レビュー時に Golangci-lint の⾃動実⾏なども実施 5. Claude Code Plugin を活⽤した具体⼿法と実践例
実践例: 題材⽣成 5. Claude Code Plugin を活⽤した具体⼿法と実践例
実践例: 実装準備 5. Claude Code Plugin を活⽤した具体⼿法と実践例
実践例: 実装 5. Claude Code Plugin を活⽤した具体⼿法と実践例
実践例: コードレビュー 5. Claude Code Plugin を活⽤した具体⼿法と実践例
実践例: コードレビュー 5. Claude Code Plugin を活⽤した具体⼿法と実践例
実践結果 • 👍 ◦ 題材⽣成の段階でも未知の知識に触れられた ▪ 未知のライブラリやツール、実装パターンなど ◦ レビュワーは、与えたソースやウェブ検索を駆使して満遍なく情報を提供してくれる印象 ▪
たまに嘘のリファレンスを提⽰するのが難点 • 👎 ◦ 外部の情報取得やサブエージェントとの連携が遅く、テンポ良くは進められない → まだまだ改善の余地はあるが、単に個⼈開発を進めるよりかは得られるものが多かった 5. Claude Code Plugin を活⽤した具体⼿法と実践例
6. まとめと展望
まとめ • Golangci-lint を学習メンターとして活⽤した ◦ 全ルール有効化で受動的に多様な知⾒を獲得できた ◦ ルールの意図理解を通じて Go ⾔語の深い理解へつながった
• 更に AI で学習体験を拡張するアプローチを試した ◦ Claude Code Plugin で題材⽣成からレビューまで⼀貫した学習フローを提供できた ◦ 個⼈開発以上の学習密度を実現できた 6. まとめと展望
展望 • オンボーディング⽬的での活⽤ ◦ Go ⾔語は特にやり易かったが、他の⾔語にも応⽤できそう ▪ 実際、AngularJS では AI
Tutor という似たようなコンセプトの仕組みが存在する • https://angular.dev/ai/ai-tutor ◦ ⾃由度を減らしてチームに特化させれば、意外とすぐ使えそう? ▪ CLAUDE.md や AGENTS.md、各種ドキュメント、カスタム Linter などが光りそう • 各種機能の個別での活⽤ ◦ レビュワーは既に実務レベルであるように思われる ▪ 既に軽量版を個⼈的に利⽤中 ▪ コミット前のレビューや、⾃分がレビューする場合の補助として活⽤ ◦ 題材⽣成も、実践的に学びたい内容がある場合に活⽤できそう 開発したプラグインは、しばらく個⼈的に使っていこうと思います! 6. まとめと展望
ご清聴ありがとうございました Thank you!