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
290
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
860
Other Decks in Programming
See All in Programming
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
790
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
250
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
140
Flow は今どうなっているか
mizdra
PRO
0
860
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
260
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
260
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
200
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
T3DD26: From RAGs to Riches
martinhelmich
0
130
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
320
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
260
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
390
Odyssey Design
rkendrick25
PRO
2
800
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
590
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Code Reviewing Like a Champion
maltzj
528
40k
Between Models and Reality
mayunak
4
440
Skip the Path - Find Your Career Trail
mkilby
1
220
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
260
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
590
We Are The Robots
honzajavorek
0
330
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
640
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
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!