はじめに
こんにちは、mercari.go スタッフの monkukui です。
6月15日にメルカリ主催の Go 勉強会 mercari.go #22 を YouTube でのオンライン配信にて開催しました。 この記事では、当日の各発表を簡単に紹介します。動画もアップロードされてますので、こちらもぜひご覧ください。
Goの標準ライブラリに学ぶジェネリクス
1つめのセッションは tychy16 さんによる「Goの標準ライブラリに学ぶジェネリクス」です。
発表資料: https://speakerdeck.com/tychy/gonobiao-zhun-raiburarinixue-buzienerikusu
Go1.18 でリリースされたジェネリクスの機能に関して、標準ライブラリでの使用例を題材に紹介しました。ジェネリクスの使い所や、使うことで得られる恩恵などを掘り下げたあと、ジェネリクスを使うことが難しいユースケースなどにも触れました。
Go1.21 で標準パッケージに追加される slices/map の紹介や、Go におけるジェネリクスの今後の展望などの話もあり、非常に興味深い話が盛りだくさんでした。
業務でジェネリクスの導入を検討している方にはとても参考になる発表になっているかと思いますので、興味がある方はぜひご覧ください。
Hashicorp/raftからraftを学ぶ
2つめのセッションは toshinao_ さんによる「Hashicorp/raftからraftを学ぶ」です。
発表資料:https://speakerdeck.com/t10471/hashicorp-raftkararaftwoxue-hu
raft とは、複製されたログを管理するための分散合意アルゴリズムであり、etcd や cunsul などで用いられています。発表の前半では、raft に関する 2 つの論文を要約し、raft アルゴリズムの詳細な説明がされました。発表の後半では、Hashicorp/raft パッケージの具体的なコードに触れながら API の仕様や実装の詳細についての説明がされました。
raft に関する理論的な特徴から、Hashicrop/raft の具体的な実装まで広く深く紹介されており、非常に興味深い発表でした。
raft に関する論文や、参考書籍などは以下を参照してください。
- https://github.com/ongardie/dissertation#readme
- 最初に公開された博士論文
- https://raft.github.io/raft.pdf
- ↑ の論文からコンセンサスアルゴリズムの部分を抽出した論文
- https://www.oreilly.co.jp/books/9784873119977
- raft を使ったシステムのハンズオンが記載されている
Go再入門
3つめのセッションは ques0942 さんによる「Go再入門」です。
発表資料:https://speakerdeck.com/ques0942/golangzai-ru-men
元々 Go メインで開発を行っていたが、一度 PHP 使いに転向し、再度 Go に入門した経験を持つ @ques0942 さんによる、 Go を学び直す上で得られた知見や、考え方の変化について紹介します。
発表の前半では、Go のインターフェースの使い方について紹介しました。他の言語と比較しながら、その使い方について掘り下げました。発表の後半では、Go のエラーハンドリングについて紹介し、標準ライブラリと、よく使われていましたがアーカイブされてしまった pkg/errors や、サードパーティライブラリの morikuni/failure について、それぞれの特徴に触れながら説明が行われました。
他言語を用いた経験が豊富な ques0942 さんだからこそ見えてくる Go の特徴などが語られており、非常に興味深い発表でした。
おわりに
今回は、Go 言語の様々なライブラリを題材として、Go を用いて開発する人にとって幅広く有用な内容をお送りしました。内容はどれも奥深く、運営としても非常に勉強になりました。
ライブで視聴いただいた方も録画を観ていただけた方も本当にありがとうございました!
次回の開催もお楽しみに!
イベント開催案内を受け取りたい方は、connpassグループのメンバーになってくださいね!
メルカリconnpassグループページ