Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Golangci-lint と AI をメンターとして活用する Go の深掘りアプローチ / ...
Search
uMa
November 27, 2025
Programming
300
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
870
Other Decks in Programming
See All in Programming
iOSDCのペンライトを自動制御したい!
akkeylab
0
350
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
210
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
440
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
330
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
290
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
680
FreeBSDでZabbixを動かす
kenkino
0
350
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
590
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
470
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
410
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1369
210k
Are puppies a ranking factor?
jonoalderson
2
4k
My Coaching Mixtape
mlcsv
0
330
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Side Projects
sachag
456
43k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
450
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
500
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
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!