every Tech Blog

株式会社エブリーのTech Blogです。

Go Conference 2024 に プラチナGoルドスポンサー として参加しました!

はじめに

こんにちは、株式会社 エブリー DevEnableグループです。

本日、6年ぶりのオフライン開催となった Go Conference 2024 にプラチナGoルドスポンサーとして参加してきました!

Go Conference運営の皆様および参加された皆様、お疲れ様でした!

今回はオフラインのみの開催となったので、参加されていない皆さんにもGo Conference 2024の盛り上がりをいち早くお伝えしたく、早速参加レポートをさせていただきます。

エブリー初のスポンサーブースを出しました!

今回、エブリーとしては初めてスポンサーブースを出させていただきました。足を運んでいただいた皆様、本当にありがとうございました!

今回は、弊社が提供するDELISH KITCHENのサービスをイメージしてブースの雰囲気を作っていきました。

多くの方から「DELISH KITCHENを使っています!」とのお声をかけていただいたり、DELISH KITCHENで使う技術について意見交換ができたりと開発者としてもとても貴重な機会となりました。会場では、『DELISH KITCHENのAPIサーバーとGoの歩み』などこれまでの取り組みを赤裸々に綴ったパネルも用意しました。

ノベルティ

今回は以下のようなノベルティを用意させていただきました。

  • クッキー
  • ドリップバックコーヒー
  • 会社・サービスのステッカー
  • DELISH KITCHENグッズ

DELISH KITCHENグッズに関してはXフォローでの抽選プレゼントキャンペーンを行い、多くの方に参加していただきました。 (弊社エンジニアXアカウントはこちらです)

DELISH KITCHENグッズに関してはたくさんの商品があるのですが、その中でも人気のある商品を中心に5つ準備させていただきました。

  • レンジ調理鍋
  • まな板
  • 計量スプーン
  • 鍋つかみ
  • しゃもじ

アンケート

今回のGo Conferenceのテーマは『一期一会』です。参加者の方々がコミュニケーションを取れるようなきっかけを作りたく、アンケートボードを用意しました。 お題はGoでもあまり決まったデファクトスタンダードがないORMに関して、いくつかの選択肢を用意して『GoのORM、何を使ってる?』としました。回答いただいた多くの皆様、ありがとうございました!

最終結果はこちら...!

やはりgormは多くの方が採用している結果となりましたが、それ以降に関してはどれも僅差の結果となっており、改めてGoでのORMの選択肢の広さを実感しました。 また、これをきっかけにブースを訪れていただいた方々とのコミュニケーションもたくさん取れて、各社での知見を聞けるいい機会ともなりました。

各社スポンサーブースの様子

スポンサーブースでは、各社趣向を凝らしたブースが展開されました。

ガチャやクイズ、アンケートボードなど様々な企画が用意されていて、会場全体が賑わっていました。

特に、「最近買ってよかったもの」をアンケートしていたブースでは、多くの回答が集まっており、エンジニアに馴染み深い「HHKB」から、「家の購入」といった意外な回答まで様々な回答がありました。

また、スポンサーブースでは、各社のエンジニアと直接話すことができる機会もあり、普段なかなか話すことができないような話もできてとても楽しかったです。

セッションの紹介

今回発表されたセッションの中から気になったものをいくつかまとめさせていただきました。

イテレータによってGoはどう変わるのか

発表者: tenntennさん (https://twitter.com/tenntenn)

https://audience.ahaslides.com/cl965inb88/review?lookback-tab=slides

こちらのセッションでは、Go1.22で一部がリリースされ、Go1.23でリリース予定のイテレータについて紹介されていました。 Goにおけるイテレータは任意の構造体に対して関数を通してシーケンシャルにアクセスする仕組みのことという定義の部分から、具体的にどのように使われるのかまで説明してくださっていました。 セッションの前はイテレータが導入されることによる具体的なメリットがあまりわかっていなかったのですが、イテレータが導入されることでデータ構造へのアクセスや一連の処理の結果をまとめるといった点で便利になるというお話を聞いたことでイテレータのメリットについて実感が湧きました。 特にデータ構造へのアクセスの仕方でmapにkeysが導入されるという話は、mapのkeysがないことは普段から不便に感じていたので期待が持てると思いました。

これは完全に余談ですが、tenntennさんの会社でGoのスキルを測定してくれるサービスがβリリースされたらしく個人的には興味を惹かれました。

https://yourwork.knowledgework.com

Dive into gomock

発表者: utgwkkさん(https://twitter.com/utgwkk)

speakerdeck.com

こちらのセッションでは、Goのユニットテストのモックに使われるgomockについて実際の実装を通して紹介されていました。 gomockの中で使用されているmatcherやgomock.Controllerがどのような役割なのか普段はなかなか意識しない部分もあり目から鱗でした。 印象に残ったのは発表の中でテクい実装と紹介されていたWantFormatter()の実装です。 matcherはinterfaceとして構造体に渡してfmt.Stringerはそのまま渡すなど普段実装をしているとあまり思い付かないこともライブラリの実装を通して知ることができるのは面白いと思いました。 下記のコードはuber-go/mockからの引用です。

https://github.com/uber-go/mock/blob/v0.4.0/gomock/matchers.go#L37

func WantFormatter(s fmt.Stringer, m Matcher) Matcher {
    type matcher interface {
        Matches(x any) bool
    }

    return struct {
        matcher
        fmt.Stringer
    }{
        matcher:  m,
        Stringer: s,
    }
}

gomockは弊社でも普段から使われていてどのように使うのかは知っているつもりでしたが、ライブラリの裏側について知ることができて勉強になりました。 セッションの最後になぜライブラリの実装を読むべきかというお話もしてくださったのですが、腑に落ちる部分も多くライブラリの実装を読んでいかなければと思いました。

バイナリを眺めてわかる gob enconding の仕様と性質、適切な使い方

発表者: convtoさん(https://twitter.com/convto)

speakerdeck.com

こちらのセッションでは、gobのencoding結果であるバイナリを確認していくことで、gobの仕様や性質が解説されていました。 gobとはGoが標準パッケージで実装している独自のエンコーディングのことです。 メリットとしては、Goのプログラム上から特別な宣言なしに利用できたり、エンコーディング後の情報転送効率が高いことです。 また、gobは自己言及的であるため、メッセージ自身にどのような構造をしているのか送信できます。 そのため、メッセージ一つで構造が解釈可能で、事前に準備するものは不要といった点は非常に強力だと感じました。 バイナリを実際に確認して仕様を理解するというアプローチは面白く、またスライドも分かりやすく丁寧に解説されており非常に勉強になりました。

Mapのパフォーマンス向上のために検討されているSwissTableを理解する

発表者: replu5さん (https://twitter.com/replu5)

speakerdeck.com

こちらのセッションでは、現状のMapの実装とは異なるSwissTableという仕組みを導入することでパフォーマンスを向上させる仕組みについて解説されていました。 現状Mapは作成するとbucketという箱が用意され、その中にあるtophashというものと用いて比較をしていく仕組みになっています。 一方、ここで挙げられているSwissTableとは、8 または 16要素分の追加情報をまとめてmetadataとして扱いマッチングを行うことで高速化を図ります。 現状ランタイムのMapの実装にSwissTableを使用したものが議論されているようで、要素数が少ないパターン以外はパフォーマンスが向上している点は興味深いと感じました。 既存のMapの実装を学ぶことができ、またそれを向上させるためのアイデアを学ぶことができた貴重な機会でした。

弊社エンジニアのセッション

エブリーからは、DELISH KITCHENヘルスケア開発部、兼TIMELINE開発部の内原がスポンサーセッションのスピーカーとして登壇しました。

セッションでは、「DELISH KITCHENにおけるマスタデータキャッシュ戦略とその歴史的変遷」というタイトルで話をしました。

speakerdeck.com

DELISH KITCHENは2016年のサービス最初期からバックエンドにGoを使用し続けているプロダクトですが、様々な要素を考慮してデータキャッシュへの向き合い方を考えてきました。 そんなキャッシュ戦略の歴史と展望について、Goでどのように実装されているのかを踏まえて、実際に直面してきた課題とともに解説しました。

最後に

最後になりますが、Go Conference の運営の皆さん、カンファレンスの運営をしていただき本当にありがとうございました! また、参加者の皆さん、カンファレンスへの参加お疲れ様でした! 今年は、6年ぶりのオフライン開催で暑いなか多くの方が参加されて、改めてGoのコミュニティの盛り上がりを感じることができました!

アフターイベント「Go Bash」のお知らせ

Go Conference 2024 にスポンサー and 参加した エブリー / アンドパッド / LayerX / STORES の Gopher たちが Go Conference 2024 に刺激を受け、トークや感想戦を繰り広げ、 Beer ではなく Go で盛り上がるイベントを開催します!

andpad.connpass.com

Go Conference 2024 に参加された方も、参加されなかった方も、ぜひご参加ください!

エブリーでは、ともに働く仲間を募集しています。

エブリーでは、ともに働く仲間を募集しています。

テックブログを読んで少しでもエブリーに興味を持っていただけた方は、ぜひ一度カジュアル面談にお越しください!

corp.every.tv

最後までお読みいただき、ありがとうございました!