Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Kensei Nakada @sanposhiho golang/mockでのモック生成と管理の "より 良い" アプローチ
Slide 2
Slide 2 text
中田 健誠 / Kyoto Uni (4th year) 普段はバックエンドエンジニアをしてます Twitter: さんぽし (@sanpo_shiho) GitHub: @sanposhiho 自己紹介
Slide 3
Slide 3 text
golang/mock(GoMock)とは
Slide 4
Slide 4 text
golang/mock(GoMock)とは > GoMock is a mocking framework for the Go programming language. Go の公式Orgで開発されている”モックのためのフレームワーク”
Slide 5
Slide 5 text
GoMockに関する詳しい話 このトークでは細かい使用方法は 扱いません。 詳しくはZennの記事を🙏 →
Slide 6
Slide 6 text
Kensei Nakada @sanposhiho golang/mockでのモック生成と管理の "より 良い" アプローチ
Slide 7
Slide 7 text
GoMock でのモック生成 mockgenコマンドを使用してinterfaceを元にモックを生成する
Slide 8
Slide 8 text
GoMockでのモック生成 mockgenコマンドを使用してinterfaceを元にモックを生成する
Slide 9
Slide 9 text
GoMock でのモック生成 interfaceを元にモックを生成する → interfaceが更新されるとモックを再生成(更新)する必要がある
Slide 10
Slide 10 text
GoMock でのモック生成 interfaceを元にモックを生成する → interfaceが更新されるとモックを再生成(更新)する必要がある → mockgenコマンドをどこかに置いておく必要がある
Slide 11
Slide 11 text
go generateでのGoMock管理 go generateを用いて、管理されることが多い。 ↓のように書いておいて で全mockgenを一斉に実行
Slide 12
Slide 12 text
go generateでのGoMock管理 この管理方法だといくつかの解決できない問題が存在する ● はコマンドが一つ一つ実行される = 時間がかかる… ● は常に全てのmockgenを実行する ● モックが最新のインターフェースを元に生成されているかわからない
Slide 13
Slide 13 text
sanposhiho/gomockhandler
Slide 14
Slide 14 text
gomockhandler go generate以外でのGoMockのモック管理を目指したライブラリ 一つのファイルを通してプロジェクト内の全てのモックの管理を行う。
Slide 15
Slide 15 text
モックの生成の効率化① gomockhandlerではモックを並行に生成している。 この効率化施策のみで、複数のモックの生成が50~60%早くなる(雑な計測)
Slide 16
Slide 16 text
モックの生成の効率化② 更新の必要がないモックの生成を自動でスキップする = 不必要なモックの生成は実行されない (※ Source modeのみ対応) 例) interface A, Bのみを更新 → A, Bのためのモックの更新のみが実行される
Slide 17
Slide 17 text
モックが最新かどうか確認 モックが最新のインタフェースを元に生成されているかを確認できる CIなどで使用することでモックの更新忘れを防ぐことができる
Slide 18
Slide 18 text
「使ってみたいけど、移行めんどくさそう」🤔
Slide 19
Slide 19 text
go generate管理からの移行の容易性 go generateでのGoMock管理から簡単に移行できるようにデザイン プロジェクト内のgo generateを全て mockgen gomockhandler -config=/path/to/config.json に置換するだけでgomockhandlerへの移行が完了する。
Slide 20
Slide 20 text
ご静聴ありがとうございました 20