こんにちは、Mercari USのBackend Engineerをしている瀬賀直樹(@nsega) です。
私は、2018年にMercari JPでBackend Engineerとして入社し、2021年にMercari USに異動した後、日本からUSに活動拠点を移し、引き続きBackend Engineerとしてのキャリアを歩んでいます。これまで、Microservicesの新規開発や運用、既存サービスのMicroservices移行など、おもにGoを開発言語として携わってきました。
メルカリグループには、Goを開発言語として利用している事例が多く、社内勉強会「Go Friday」をはじめとした、横断的な事例共有や意見交換の場が多数用意されています。今回は、私がオーガナイザーを務めているメルカリが主催するGoの勉強会「mercari.go」について、ご紹介したいと思います。
「mercari.go」とは
「mercari.go」は、2018年7月からメルカリが主催しているGoの勉強会です。開催頻度は2〜3ヶ月に1回となっており、おもにメルカリグループのエンジニアが登壇し、社内でのGoの採用事例、個人開発で得た知見、最近のトレンドなど、Goに関する様々な話題を共有しています。これまでに21回開催しており、約80名の方に登壇いただいてきました。ありがたいことに毎回100名を超える方に参加登録をいただいております。この勉強会の開催当初は、社内のカンファレンスルームで講義形式の発表+懇親会を行っていましたが、新型コロナウイルスの影響を受けて2020年からはYouTube Liveを主体としたオンライン開催に切り替えています。
「mercari.go」の運営として、以下の3点を実現することを強く意識しています。
1. Goの技術的な知見の還元
これまで社内で取り組んできたプロジェクトでGoを利用した開発・運用を通じて溜まったGoの技術的な知見をコミュニティに還元し、コミュニティ全体のレベル向上に寄与したい。
2. Goの採用事例の公開
Goの採用事例を積極的に公開し、他の企業でもGoの採用を後押しできるようにしていきたい。ひいては、Goコミュニティ全体への活性化にも貢献したい。
3. エンジニアが継続的に気軽に取り組める場の提供
気軽にエンジニアがインプットとアウトプットを継続的に行える環境を提供し、それぞれのエンジニアが新しい経験や発見ができる場を提供したい。
「mercari.go」運営チームの勉強会開催にかける想い
「mercari.go」の運営は、メルカリグループ内の有志のエンジニアたちで取り組んでいます。勉強会の企画/告知/登壇者募集/当日進行はもちろんのこと、今後のよりよい開催に向けた活動報告や振り返りまで、内容は多岐に渡ります。そのため、主業務に影響が出ないように役割を分担したり、過去回から得た知見を活かして手順をブラッシュアップしたりといった工夫によって、「mercari.go」の活動を継続することができています。
また、勉強会を企画する際のコンセプトとして、この勉強会に参加してくれる方々の役割に対する期待を、次のように考えています。
・参加者:登壇者から何かを学び、問題解決の手助けを受け、登壇者に質問をする。
・登壇者:参加者と何かを共有し、自分なりに理解したことを言葉にし、参加者や運営者からフィードバックを得る。
・運営スタッフ:技術や採用事例をコミュニティへ還元し、エンジニア(参加者、登壇者)が継続的にインプット、アウトプットし、活躍できる環境を提供する。
可能な限り、それぞれの役割に対して「三方よし」を実現できるような勉強会の運営に励んでいます。
これまでの活動について
これまで、多くの社内エンジニアに登壇に協力してもらったおかげで、幅広い内容のコンテンツをお届けできたと考えています。実際に、参加者の方々から寄せられたコンテンツに関するコメントを一部抜粋いたします。
・Go初心者でも十分理解できる範囲でバックグラウンドの説明があり、わかりやすかった
・spannerについて詳しくなかったが、実装の工夫を理解することができて有意義だった
・さまざまなテーマがあって面白い
・実際の製品開発に沿って取り組んだ知見を共有いただいているので、これからの製品開発にとても参考になりそう
参加された方のGoの経験や習熟度はさまざまですが、複数のテーマを織り交ぜて開催することで、今後の開発や技術力の向上に活かせる実用的な知見をお持ち帰りいただいています。
その一方で、オフライン/オンライン開催それぞれにメリットとデメリットがあります。例えばオンライン開催は、場所を気にせずに参加しやすいというメリットはありますが、開催会場で行われる懇親会で、登壇者や参加者たちとカジュアルに会話ができる場が得られないというデメリットがあります。
オフライン/オンライン開催それぞれのメリットとデメリットを考えながら、試行錯誤を続けて、よりお互いが得るものが多い場にできれば、と思っています。
これまでの活動については以下のリンクから詳細をご覧いただけます。メルカリエンジニアリングブログで、毎回の勉強会開催後に活動報告をしており、公開された資料もあわせてご覧になれます。またオンライン開催の会については、YouTubeに動画がアーカイブされているため、発表内容の動画もご覧になれます。いくつか開催した回の活動報告のブログとYouTubeの動画アーカイブを紹介させていただきます。
mercari.go #10では、GopherCon 2019に参加した社内の数名のエンジニアによる報告会でした。参加したセッションのサマリーや現地のGoコミュニティの様子、各セッションのレベル感など、現地にいくことでしか得られない経験を共有してもらいました。
mercari.go #15 では、DBマイグレーションの運用事例の紹介、開発運用時のflaky testとの半年間向き合い改善してきた知見の紹介の内容となっており、製品開発と運用する上で欠かせない内容でした。
mercari.go #21 では、Go を用いた開発事例の紹介、設計原則であるSOLID原則の解説、GoでWebAssemblyを用いた検証事例の紹介と幅広いテーマの内容でした。
今後の活動に向けての意気込み
今後も、参加者全員が満足できる場を目指して継続的に開催していきたいと考えています。そして、「mercari.go」を通じて得たGoの知見を、それぞれの現場に持ち帰って活かしていただけたら嬉しいです。
また、登壇者が「mercari.go」への登壇経験から新しい気づきを得たり、「Go Conference」や「GopherCon」のように大規模なカンファレンスへ参加してみたいと思うきっかけを得たり、これらのカンファレンスのCFP提出にチャレンジしてみたり、GoのOSSへの貢献したり、Goコミュニティへの貢献につながる、新たなチャレンジへのきっかけを提供したいと考えています。
本記事を読んでくださった読者の皆さんと、一緒に学び、成長する機会を提供できると幸いです。
なお、次回は6月15日(木)12:00 〜の開催を予定しており、詳細はこちらからご確認いただけます。ご興味ある方は、ぜひご参加ください。また今後の開催の改善に役立てていきたいと思いますので参加いただけた方はアンケート経由でのフィードバックをもしよろしければご協力ください。
オリジナルのGopherはRenée Frenchによってデザインされ、CC BY 3.0ライセンスが適用されています。mercari.goのロゴで使用されているGopherはTakuya Uedaによってデザインされ、CC BY 3.0ライセンスが適用されています。 (https://github.com/golang-samples/gopher-vector)