こんにちは河野です。今日は弊社内で行っていたGoの勉強会についてご紹介します。
そもそもGo Fridayとは
Goをやっている方はご存知だと思うのですが、
メルカリ・ソウゾウでは、どのようにGoでソフトウェア開発をしているのか聞いてみた|CodeIQ MAGAZINE
で紹介されているように、メルカリ社・ソウゾウ社でのGoをテーマにした社内勉強会のことです。今ではOpen Go Fridayといったイベントも開催されたりしています。
やろうとおもったきっかけ
弊社では、Goをプロダクション環境でも使用しており、それに携わっているメンバーが数名います。その中で先程の記事が公開されたのを読んで、ウチでもやってみようとなりました。
よりGoのスキルアップを行いたいという個人的な思いも強かったです。
どんな感じだったか
とりあえず以下のような基本ルールを決めました。ゆるーい感じで。
- 隔週金曜日で実施
- 時間は1時間
- 1回につき2人が発表
- 発表内容はなんかGoに関連すること
- パッケージのコードリーディング
- 業務で得た知見の共有
- 参考になる記事や資料の共有
- などなど
はじめは書籍の話も出たのですが、毎回必ず全員が読んでいないと回が成立しないし効果がないため、各メンバーの負担が大きいと判断しやめました。
参加者の業務都合や休みのタイミングなどによって、必ず隔週では実施できませんでしたが、なんとか1年間継続することができました。2017年4月28日〜2018年4月20日の間で、合計で17回行い、発表は28回になりました。
発表内容
発表内容はいろいろなものがありました。
-
コードリーディング
- 標準パッケージ
- Goコマンド
- サードパーティライブラリ
-
実践ノウハウ
- Unit Test
- エラーハンドリング
- パッケージ構成
- プロファイリング
- ソート
- HTTP/2
-
紹介・報告
- 記事・資料の紹介
- リリースノート斜め読み
- GoCon参加報告
色々ありましたが、コードリーディングが多く、Go自体の基本的なところを知る機会が多かったです。
それから、年始には全員参加のベンチマーク大会を実施しました。テーマを決めて、誰が一番パフォーマンスを出せるかというお題で取り組みました。全員の実装の違いを比較したり、チューニングのポイントを共有したりすることができました。
やってみて
やはり標準パッケージを読み込むというのはとても大事だなと思いました。実際に読んでみて、いわゆるイディオムといったところも知ることができ、意外に泥臭いこともやってるんだなとわかりました。あとは、なんか冗長な実装になっているような箇所があったりとか。プロトコルやRFCなどを理解することにもつながると思います。
自分でコードを書いていると「こういうときはどういう風に書けば良いんだろう」とか「もっと洗練されたコードを書くことはできないのだろうか」といった、機能の実現とはかけ離れコード自体に関心が移ってしまい、悩むことで時間を無駄してしまう経験があります。
コードリーディングを通して、そういうことはあまり気にせずに、愚直に機能を実装していっても良いんだなという安心感を得ることができました(もちろん雑なコードを書いて良いわけではありません)。
そして、この愚直に書けば良いという点はGoの魅力だと思います。
おわりに
1年間きちんと継続できたのは良かったと思います。これは参加している人が業務だからという義務感だけではなく、やる気があったからだと思います。なので、また次の1年間も上手く継続していけたら良いなと思います。
あと、1つ欲張りなことを言うと、何かしらの発表のための練習を行えたら良かったかなと思いました。今後は、社外に対してアウトプットする機会をみんなで増やしていけたらうれしいです。