TRUSTDOCK MAGAZINE│KYC・本人確認ならTRUSTDOCK

Go Conference 2024に参加してきました

作成者: TRUSTDOCK Staff|2024/06/24

こんにちは!TRUSTDOCKでエンジニアをしている木村です!

私たちTRUSTDOCKのエンジニアメンバーは、2024年06月08日(土)アベマタワーにて開催されたGo Conference 2024に参加してきました!

私は昨年末ごろにTRUSTDOCKに入社してから初めてGoを書き始めたこともあり、今回が初めての参加でした。

また福岡在住のため、今回は社内のテックチャレンジ推進制度を利用して、出張として参加させてもらえることになりました!なんともありがたい制度です!感謝!

このブログでは、印象に残ったセッションや全体の感想など皆さんに共有させていただきます!

TRUSTDOCKとGoの関わり

TRUSTDOCKでは、eKYC(electronic Know Your Customer)に関連した幅広いプロダクトを開発しています。私が所属しているチームでは自動かつ即時で本人確認を行うプロダクトを開発しており、その根幹となる仕組みをGoで開発しています。

社内の他のプロダクトチームでもGoを採用して新しいプロダクトを開発していたり、SREチームでは社内ツールをGoで開発しています。

なのでTRUSTDOCKにおいてGoは組織全体を支えてくれている言語です。

そんな関わりの深いGoについて、Go Conference 2024で話された興味深いセッションをいくつかご紹介いたします!

セッション

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

tenntennさんによる、イテレータに関するお話でした。

  • そもそもイテレータとはなんなのか
  • Go1.23以降で加わるイテレータによって何が変わるのか
  • イテレータが作るGoのエコシステムについて

といった内容でした。

 

range over funcはいわゆるイテレータであることや、その使い方をサンプルコードとともにわかりやすく解説してくださいました。

このGoのアップデートにより、SlicesやMapなどがより扱いやすくなるのはすごく魅力的だなと感じました。

tenntennさんは 2024/06/30 にtenntenn Conference 2024というイベントを開催されるらしく、初めて知った私としては「いち個人が...カンファレンス...!?」と驚きました。こちらのイベントはすでにいっぱいになっていますが、こちらにconnpassのtenntennさんのグループがありますので、ご興味のある方はウォッチされるといいかもしれません。

 

Go1.21から導入されたGo Toolchainの仕組みをまるっと解説

こちらはTakahito Yamatoyaさんの発表で、Go Toolchainが導入されることになった背景に関するものでした。

Go1.21より前において、go.modのgo directiveはbuildするときに依拠する言語セマンティクスの助言で、実際にビルドするのはローカルにインストールされているGoのバージョンでビルドされます。

その結果、もしビルドができない場合にのみエラーになるというものでした。

Go1.21以降はgo.modのgo / toolchain directiveを編集すると、そのプロジェクトでの最低のバージョンを指定できるようになり、ローカルに必要なバージョンがない場合は、自動でインストールしてキャッシュしてくれるようになったそうです。

私が触り始めたタイミングでは1.21だったため意識したことがない部分で、以前はこんな挙動だったことに驚きました。 goenv や asdf などのバージョン管理ツールを利用する必要がなくなる地味に嬉しい機能ですね。

 

詳解 "Fixing For Loops in Go 1.22" / 自作linterをgolangci-lintへコントリビュートした話

こちらは、Ryosei Karakiさんの発表で、ループ変数のメモリ共有問題に関する発表でした。

私はこの問題を、カンファレンス前に弊社メンバーから共有してもらって初めて知りましたが、ベテランGopherならよく知られた問題のようでした。

このようにメンバー同士で知見の共有をするきっかけとなるのも、カンファレンスの醍醐味ですね。

 

発表の内容は、

  • 問題のおさらい
  • プロポーザルを読む
  • loopvarパッケージの実装を読む
  • エスケープ解析とループの関連性を突き止める
  • karamaru-alpha/copyloopvar の紹介

でした。

 

なお、最初の2つ(問題のおさらい・プロポーザルを読む)は時間の都合上スキップとのことで、事前にメンバーにこの問題について共有いただいていたので本当によかったです。メンバーに大変感謝しています。余裕は大事ですね。

スキップされた部分についてはスライドは作成されているようなので、気になる方はご覧ください。

発表の後半部分では、loopvarパッケージはGo1.22からループ変数の暗黙的な宣言が行われるようになったにも関わらず、各イテレーションにおけるループ変数のアドレスが同じ場合(fmt.Println)もあれば、異なる場合(println)もあるという事象について言及されていました。

この違いを調べるためにアセンブリまで見に行ったことをお話されており、これは時間が足りなくなるのも納得でした。

この発表は非常に内容の濃ゆいもので、私個人としてはGo Conferenceの中で一番印象に残った発表と言っても過言でもありません。発表の本流とは別に余談としてお話しされていたことも、非常に学びが多かったです。ぜひ皆さんにもスライドを見ていただきたいです!

振り返り

一期一会

今回のGo Conferenceのテーマは「一期一会」だそうで、せっかく参加するのだから是非いろんな方と交流してみてくださいとのことでした。

私は今回、TRUSTDOCKメンバーの前職の同僚の方々とランチなど交流させてもらって、新しい出会いがあったのでこのテーマは達成できたかなと思っています!

また、私が新卒の頃の先輩と10年弱ぶりに再会する出来事もあり、こういった思いもよらない嬉しい出来事があるのもカンファレンスの醍醐味だなと感じました。

来年に向けて

Go歴はまだ半年程度でしたが、 Go Conference 2024をとても楽しむことができました!

Go Conference 2025も開催に向けて準備されているそうで、ぜひ来年も参加したいと思いました。

実行委員の方、登壇者の方など関係者のみなさま、本当にお疲れ様でした!

そしてありがとうございました!

来年はスポンサーとして参加したいという話も持ち上がっており、Gopherとして盛り上げて行きたいなと思っています!

おわり

最後に私たちは、一緒にGoを使ってより良いプロダクトを作りたいエンジニアを積極的に募集しています!

バックエンドエンジニア(Go)の求人

エンジニア求人一覧

まずは少し話を聞いてみたいという方向けに、カジュアル面談(オンライン)も随時受付しています。TRUSTDOCKの開発環境やこれから目指すところ、チームの雰囲気などざっくばらんにお話しできたらと思います!こちらより気軽にお声がけください。

 

採用情報
https://biz.trustdock.io/recruit/