昨日ドイツのベルリンについたばかりで、少し時差ボケってたんですが、なんとなくGDG Berlin Golang "Movember Gophers"に参加できました。
ちなみに「Movember」というのが「Moustache」と「November」の組み合わせなというわけで、イベントページのゴーファー君も立派な口ひげしてますね。
僕、カナダ人ですが、実はプログラミングや開発に興味を持ち始めたのが日本にきてからなので、こんな感じに日本の外で勉強会に参加するのって初めてでした。世界中の勉強会で何が普通なのか全くわからないんですが、とりあえずピザとビールが決まりみたいです。
ただ昨日は折り畳めて食べる巨大なピザでした・・・
あと、日本ではいつもトークを聞いてから、懇親会を行うんですが、このイベントではピザとビールが最初から出してあって、みんなが集めるの待ってるうちに飲む感じでした。トークとトークの間にみんながビールを取りに冷蔵庫にダッシュしたところ面白かったですww
さて、ピザとビールの件をほといて、トークの内容の話をしましょう。
最初の発表者が@matryer というイギリスの方でした。GoでTDDをする話をしてくれました (スライドはこちらです)。
TTDを行うときに便利なTIPを色々紹介してくれました。例えば:
- Silk というマークダウンで書かれたドキュメントからHTTPのテストを実行できるパッケージ
- go test -cover コマンドでテストのカバレージを確認する方法
- 特別な理由がなければ、テストヘルパーを使わないで標準testパッケージをそのまま使おう (Go作者の意見)
- 外部dependencyを避けるため、実際のオブジェクトじゃなくてモックしたオブジェクトを利用する (つまりinterfaceでtypeを柔軟にする)
- interfaceを元にモックのstructを自動生成ツールの紹介
- あるパッケージを外部からテストしたいとき、テスト専用のパッケージを作ってもいい(テストの場合同じディレクトリに複数パッケージをおいても大丈夫)
2番目の発表がに@konradreicheによるConsumer Driven Contract Testing in Goでした。
マイクロサービスのインテグレーションテストで出てくる問題を解決しようとしているPactの紹介でした。(概要から日本語で説明する自信ないので、クックパッドの記事を参考にするといいでしょう)
Pact for Goが実際にTape.tvでどういうふうに使われているかも説明してくれました。Box Officeというチケット購入システム(Ruby)とBouncerという認証用API(Go)の違うチームによって管理されているマイクロサービスがあるそうですが、共通のAPIをPactで定義することで管理のところを一部自動化できてて安心らしいです。
ただConsumer Driven Contractを使えるまでのプロジェクトのセットアップやチームが新しい仕組みになれるまでの時間の面で少し大変らしいです。
最後に@fortytw2がwatneyというRubyのvcrの移植の紹介をしました。HTTPリクエストをキャプチャーし、次回に実行した際にHTTPリスポンスを再利用することで、ネットワーク障害の影響でこける確率を低くしたり、テストを早くしたりするとても便利そうなパッケージです。
No comments:
Post a Comment