Wantedlyのスカラシップ枠でGoConに行ってきた話(前編)
ウォンテッドリー株式会社さんのスカラシップ枠に採用していただき、Go Conference 2018 Autumn に参加してきました!
カンファレンス後はブログでアウトプット!ということで前編と後編に分けてカンファレンスのレポート等々をやっていきます。前編では、僕が特に気になったセッションのまとめを、後半では前半で取り上げきれなかったセッションのサマリーを紹介できればと思います。
(Hi-Conのレポートはまだか?とツッコミが入りそうですがそれは一旦横に置いておくことにしましょう。)
今回は主に、Web API関連のセッションを取り上げたいと思います。
Microservices実装ガイド in Go at Mercari
株式会社メルカリさんのスポンサーセッション。
今回のセッションでは、Microserviceをどのように実装しているのかを中心に紹介していました。メルカリではMicroserviceを作る共通のテンプレートプロジェクトをcloneし、一旦 rm .git した上で再度git initして実装を行うフローになっているとのこと。
テンプレートプロジェクトは、gRPCサーバーがリクエストで飛んできたメッセージをそのままレスポンスするシンプルな機能に加え、ロギングや認証、ミドルウェアといった基本機能を加えた構成になっているということです。
このフローで開発を行うことによって、
・独立したチーム作ることを助ける(チームは独立すべき)
・別のチームに移っても構造が理解しやすい
また、Golangを採用して、
・ネットワークレイヤーが書きやすい
・それなりに早い
・シングルバイナリなので実行環境を作るのが楽
というメリットがあったそうです。
テンプレートプロジェクトが更新された場合は、Microservice側からテンプレートプロジェクトを cherry-pick することで対応しているそうです。
Protocol buffersについてはこちら
Linting, Slicing, and Dicing OpenAPI documents
OpenAPIからRESTやProtocol Buffersのデータを自動出力してくれるライブラリの紹介。今はginでAPIを書いて、Swaggerでドキュメントを書くみたいな感じで開発を進めていますが、OpenAPIからコードジェネレートしてくれるのはいいなーと思いました。使ってみよ。
Consider pluggable CLI tool implementation
スピーカーはウォンテッドリーの@izumin5210さん。
スライドがおしゃれでめっちゃ好き。
grapiは、Rails generate 的な、gRPCサーバーの scaffolding tool / template generator。glapiの generator 部分を pluggable にするために採用した手法、実装時に意識したことなどについての紹介です。
セッション中に何度か言及されていたRails generateのUXの良さはRailsを長くやっている身としては首が千切れるくらいにうなずける内容で、そんなGeneratorがGoにもあればなーという思いはずっと持っていました。
pluggable するために求める条件、類似のツールをさわってみた所感、そしてpluggableにするための実装といった一連の話は興味深かったです。grapiも使ってみたいなーと思いました。
API Testing the Hard Way
まぁテストは書きますよね。でも意外といい感じのサンプルって転がってないですよね。ということで、このセッションでは、ユニットテストからインテグレーションテストまで、Goのテストに関するノウハウを紹介されていました。
RailsのRspec+Factorybotはテストを書く上で最強で、テストを書くのも苦にならないと思っているのですが、GoでAPIのテストを書くのはちょっとつらいなと感じています。このセッションで、APIのテストについて体系的に学べたのでとてもよかったです。
セッションで言及されていたライブラリはこの辺。
今日は一旦ここまで。
ちなみに、この記事は海風が吹き荒れる羽田空港の展望デッキで、タイムラプスを撮りながら書き上げました。各方面から何やってるんだって言われそうだ......
後編はあさってには書き上げたいと思います。
明日の勉強会の登壇資料が1byteもできていないので...
がんばるぞい