こんにちは。
ソウゾウのエキスパートチーム所属の@tenntennです。
7月9日に3時間半かけてみっちりと「エキスパートGo」という社内勉強会を開催しましたので、今回はそのレポートを書きます。
また良い機会ですので、私が所属するエキスパートチームについても少し触れようと思います。
なお、当日の発表資料はSlide Shareに公開しておりますので、ぜひご覧下さい。
エキスパートチームについて
ソウゾウでは「技術をアウトプットするところに技術は集まる」という思いから、稼働の50%以上を技術コミュニティへの貢献や担当する技術の普及に取り組むエキスパートチームが存在します。
メンバーはGo Conferenceやgolang.tokyoなどを運営している私@tenntenn(Go/GCP担当)とDroidKaigiや技術書典などを運営する@mhidaka(Android担当)です。
エキスパートチームは以下のような目的を持って活動をしています。
- 社内に新しい技術を取り取り込む
- 社外のコミュニティなどを通じて社会へ還元する
また、具体的な活動として以下のようなことを行っています。
- カンファレンス・勉強会の開催/運営
- 対外的な講演活動
- 執筆、雑誌への寄稿、インタビュー
- 社内外での担当技術の普及推進
今回の「エキスパートGo」についてもメルカリのプロダクトチームの依頼を受け、メルカリ社内におけるGoの普及という位置づけで開催しています。
エキスパートGoを開く背景
メルカリ社内には、Goに関する書籍の執筆やカンファレンス登壇などを行っているエンジニアも多数在籍しており、ソウゾウと同様に積極的にGoを採用しています。
参考:メルカリ・ソウゾウでは、どのようにGoでソフトウェア開発をしているのか
また、ソウゾウではGo FridayというAPIチーム向けのGoの勉強会を行っており、APIチーム内でGoの知見を共有しています。
ソウゾウのAPIエンジニアには元々Goでの開発経験がある人が多いわけではなく、こういった情報共有を通して学んでいっています。
参考:Go初心者たちが3カ月で主戦力に─Go未経験から「メルカリ アッテ」新機能を開発するまでの舞台裏
こうしたなか、今までGo以外の言語で開発を行ってきたエンジニアでもGoで開発するエンジニアが増えてきており、実務レベルでGoを書けるエンジニアを増やしていこうという話になり、「エキスパートGo」を開催することになりました。
そのため、今回の「エキスパートGo」では以下のようなエンジニアを対象としました。
- 業務上Goが必要になった人
- Go以外の言語は一定以上書ける
- 静的型付け言語を業務で使ったことは無くてもいい
- A Tour of Goはクリアしてる
つまり、基本的なことを学ぶ場ではなく、実務で開発を進めていく中で必要となるノウハウを学ぶ場として「エキスパートGo」を開催しました。
エキスパートGoの内容
今回の「エキスパートGo」では3時間半で以下のようなトピックを扱いました。
詳細については上述の発表資料を見てください。
- Goを知る
- Goの開発ツール
- Goにおける抽象化
- パッケージ構成
- テスト
- ゴールーチンとチャネル
- コンテキスト
- エラー処理
- net/httpパッケージ
上述のとおり、業務で必要になるであろう知識を中心に共有を行いました。
特に抽象化やテスト、エラー処理などは実際のメルカリ アッテやメルカリ カウルの事例を補足しながら説明しました。
まとめ
3時間半という業務時間で行うには長めの勉強会でしたが、業務で必要になるGoの知識を網羅的に扱うことができました。
これから業務でGoを使っていくメンバーにとって有意義な時間にできたのではないかと思います。
参加したメンバーからは以下のような感想をいただきました。
tour of goを終わってから、飛躍的にいろんな事が知れる内容だったのですごく良かったです><
参考リンクやplaygroundで動かすリンクもかなりありがたいです…
ゴールーチンとチャネルについては自分で色々動かして試しながらやらないとしっかり理解しきれないなーという感触でした
分かりやすかったです!
構造体の埋め込みやtest/errorのを始めとして、幅広い内容で実践的な内容を教えて頂いたと思いました!
めちゃくちゃよかった。
slideshareだけでもわかりやすいが、講義がわかりやすくて、Playgroundで動かせるリンクもたくさんあってよかった。Go独特のSwitch文の使い方だったり、ポインタの扱い方だったり、実践的でTour of Goが終わって、Goの書き方がわかってから聞くのがベストな内容でした。
今回の「エキスパートGo」は大変好評だったので今後も定期的に社内勉強会を続けて行こうと考えています。
このように、メルカリ/ソウゾウでは、Goをプロダクト開発に積極的に活用しています。 一緒にGoで開発して頂ける方を引き続き募集しています!