lasciva blog

開発して得た知見やwebビジネスのストック

「merpay Backend Engineer Meetup #3」に参加してきた

mercari.connpass.com

参加のモチベーション

  • Golangを副業等で使っていて、初心者を抜け出したい。
  • Golangが使い慣れたら、どのような印象に変わったかを知りたい。
    • 今のところ、パワフルかつ緩やかに型が強制されるメリットを感じつつも、書いててあまり楽しくはないw。

参加メモ

※ 客観的に書いてるつもりですが、私にとって自明なところは省略したり、勘違いしてる可能性もあるので予めご了承ください。

パネルディスカッション

登壇者

なぜGoを選択したのか?
  • メルカリの歴史的経緯
  • 機能面
    • Dockerと相性がよい
    • みんな同じ書き方になるので、不毛な戦争が起きない
    • 型がある
勉強方法は?

syumai

toshi0607

execjosh

  • MySpaceRubyでザッピングのツール使ったら遅い
    • 当時α版のGolangを使ってみたら、めちゃくちゃ速かった
  • 社内のツール(?)でGolangが使われてた
    • バグを修正しようと思いコードを読んだら、スラスラ読めた
    • PR投げて経験つけた
  • Gopher道場に参加
メリットやデメリット
  • Goを採用して良かったこと
  • 別の言語からGoに変えた経験談

toshi0607

  • Rubyと違って型があるので安心
  • パッケージとか構成とかの設計とかの方が悩んだ
    • 他のプロジェクトや本でキャッチアップ
  • Golangそのもののキャッチアップにはあまり苦労しなかった
    • マイクロサービスやgRPC, GCPとかのキャッチアップに比べると楽
  • k8sが一番きつかった(人類にはまだ早いw)

execjosh

  • そこまで苦労しなかった

syumai

  • 型で安心
    • protobuf採用してるので、ビルド時に気づけるので
    • リファクタリングが速い(Golandのメソッドの置換)
  • インターフェースは苦労した
    • 差し替えるモックとかDIのありがたみがわかるまでは特に
  • エラーハンドリング
    • errorのstructにどういう情報もたせるべきかが最初は悩ましい
気をつけてることなど

toshi0607

  • 標準パッケージが読みやすいのでそこから学ぶ

syumai

execjosh

  • ユニットテストは、他の言語より書く傾向にある
  • E2Eもちゃんと書く方を重視してる
  • CIで表示されるテストカバレッジは基準によって変動するため、そこまで重視してない

Q&A

  • goroutineはメルカリでも使っているか
    • 負荷がなくても、SQLを複数投げるときとかに有効で使ってる
    • なんだかんだ避けては通れない

感想、個人的な学び