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
golang/mockでのモック生成と管理の "より良い" アプローチ
Search
sanposhiho
November 13, 2021
2.3k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
golang/mockでのモック生成と管理の "より良い" アプローチ
Go Conference 2021 Autumn
https://gocon.jp/2021autumn/
sanposhiho
November 13, 2021
More Decks by sanposhiho
See All by sanposhiho
Understanding the Kubernetes Scheduler: Internals, Roadmap, and Contributions
sanposhiho
1
170
kube-scheduler: from 101 to the frontier
sanposhiho
1
300
A Tale of Two Plugins: Safely Extending the Kubernetes Scheduler with WebAssembly
sanposhiho
0
270
人間によるKubernetesリソース最適化の”諦め” そこに見るリクガメの可能性
sanposhiho
2
2.3k
Don't try to tame your autoscalers, tame Tortoises!
sanposhiho
0
850
メルカリにおけるZone aware routing
sanposhiho
4
1.9k
A tale of two plugins: safely extending the Kubernetes Scheduler with WebAssembly
sanposhiho
1
640
メルカリにおけるプラットフォーム主導のKubernetesリソース最適化とそこに生まれた🐢の可能性
sanposhiho
1
1k
MercariにおけるKubernetesのリソース最適化のこれまでとこれから
sanposhiho
8
4.3k
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
180
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.6k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
510
Bash Introduction
62gerente
615
220k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
590
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The agentic SEO stack - context over prompts
schlessera
0
880
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
700
Transcript
Kensei Nakada @sanposhiho golang/mockでのモック生成と管理の "より 良い" アプローチ
中田 健誠 / Kyoto Uni (4th year) 普段はバックエンドエンジニアをしてます Twitter:
さんぽし (@sanpo_shiho) GitHub: @sanposhiho 自己紹介
golang/mock(GoMock)とは
golang/mock(GoMock)とは > GoMock is a mocking framework for the Go
programming language. Go の公式Orgで開発されている”モックのためのフレームワーク”
GoMockに関する詳しい話 このトークでは細かい使用方法は 扱いません。 詳しくはZennの記事を🙏 →
Kensei Nakada @sanposhiho golang/mockでのモック生成と管理の "より 良い" アプローチ
GoMock でのモック生成 mockgenコマンドを使用してinterfaceを元にモックを生成する
GoMockでのモック生成 mockgenコマンドを使用してinterfaceを元にモックを生成する
GoMock でのモック生成 interfaceを元にモックを生成する → interfaceが更新されるとモックを再生成(更新)する必要がある
GoMock でのモック生成 interfaceを元にモックを生成する → interfaceが更新されるとモックを再生成(更新)する必要がある → mockgenコマンドをどこかに置いておく必要がある
go generateでのGoMock管理 go generateを用いて、管理されることが多い。 ↓のように書いておいて で全mockgenを一斉に実行
go generateでのGoMock管理 この管理方法だといくつかの解決できない問題が存在する • はコマンドが一つ一つ実行される = 時間がかかる… • は常に全てのmockgenを実行する
• モックが最新のインターフェースを元に生成されているかわからない
sanposhiho/gomockhandler
gomockhandler go generate以外でのGoMockのモック管理を目指したライブラリ 一つのファイルを通してプロジェクト内の全てのモックの管理を行う。
モックの生成の効率化① gomockhandlerではモックを並行に生成している。 この効率化施策のみで、複数のモックの生成が50~60%早くなる(雑な計測)
モックの生成の効率化② 更新の必要がないモックの生成を自動でスキップする = 不必要なモックの生成は実行されない (※ Source modeのみ対応) 例)
interface A, Bのみを更新 → A, Bのためのモックの更新のみが実行される
モックが最新かどうか確認 モックが最新のインタフェースを元に生成されているかを確認できる CIなどで使用することでモックの更新忘れを防ぐことができる
「使ってみたいけど、移行めんどくさそう」🤔
go generate管理からの移行の容易性 go generateでのGoMock管理から簡単に移行できるようにデザイン プロジェクト内のgo generateを全て mockgen gomockhandler
-config=/path/to/config.json に置換するだけでgomockhandlerへの移行が完了する。
ご静聴ありがとうございました 20