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
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.3k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.8k
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
380
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
760
JRuby: Past, Present, and Future
headius
0
220
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
120
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
310
すこし踏み込む CancellationToken
htkym
2
1.6k
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
230
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
410
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
130
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
190
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1369
210k
Music & Morning Musume
bryan
48
7.4k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
350
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
300
Thoughts on Productivity
jonyablonski
76
5.4k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
Building Applications with DynamoDB
mza
96
7.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.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!