Go Conference 2024 の LT 枠で発表を行いました!

はじめに

こんにちは、ATOM 事業本部のエンジニアの岸田 (@mwudo) です。

集計基盤の機能開発や保守、API サーバー、バッチ処理などを担当しており、ATOM のバックエンド周りを見守っています。

趣味はボルダリングで、毎週、そびえ立つ壁に挑戦しています。

タイトル通り、Go Conference 2024 の LT枠で登壇をしたので振り返りをしたいと思います。

Go Conference 2024

gocon.jp

Go Conference 2024 はプログラミング言語 Go に関連した発表やスポンサーブースなどの企画がたくさん用意されたカンファレンスです。

今回は 2024 年 6 月 8 日にオフラインで開催がされました。

オフラインは数年ぶりの開催で、自分自身も Go Conference は何回も参加していましたがすべてオンラインで今回初めてオフラインの参加でした。

今回のテーマは偶然同じイベントに参加したことで生まれた人との出会いや感動を実現したいという思いから「一期一会」にされたそうです。

テーマに関しての詳しい背景は Go Conference 2024を開催します #gocon をご覧ください。

LT枠での登壇

「go get で考慮している ファイルシステムの挙動について」というタイトルで LT 枠(5分)で発表を行いました。

speakerdeck.com

go get 時にライブラリをダウンロードしますが、そのときにダウンロード先の OS のファイルシステムの影響の考慮を go get ではどのように行っているのかを実際のコードを例にして紹介する内容です。

Go Conference 2024 では一部の発表を除き2トラックでの発表でした。

LT 発表はタイムテーブルの表記や内容的に 1トラックだと勝手に思っていましたが、蓋を開けてみれば 2トラックそれぞれの仕切りを外した状態での発表でした。

今まで勉強会などで LT 発表を行ったことはありましたが、この規模の発表は初めてだったので発表直前は少し緊張しました。

LT 枠の発表時間が5分であったのも相まって発表が早口になってしまいました。

業務の中のちょっとした雑談からアイデアを見つけて CfP(Call For Papers または Call For Proposal)を作成し提出をしたことでこの発表をすることができました。

そこで、CfP を書いた経験を踏まえて、どのように CfP を書いて提出を行ったのか簡単に紹介したいと思います。

CfP を書く流れ

発表する内容が発生している事象は確認できていましたが、それがコード上でどのように考慮して処理を行っているのかまでわからなかったのでまずは理解することから始めました。

処理を理解することで、発表資料の構成や CfP に盛り込む内容をイメージすることができました。

正直、処理を理解することが資料の作成までの中で一番時間がかかったと思います。

どのように処理を理解していったのかについては発表資料に書いています。

実際に CfP を書く前に Go Conference だけでなく他の Conference で出されて採択された CfP や CfP について取り上げられている記事などを参考にしました。

CfP の文章も序破急を意識して段落を分けつつ、最後に発表スライドの章立てを示すことで読み手の方に発表のイメージを持ってもらうような工夫もしました。

CfP を書くときに大学・大学院時代の研究論文を読んだり、卒業論文・修士論文の執筆の経験が生きました。

最後に提出した CfP を掲載します。

提出した CfP (クリックすると展開されます)

Goでのアプリケーション開発で外部の公開されているライブラリを使用したい場合は go get を使用してパッケージをダウンロードします。
このときダウンロードされるライブラリは $GOPATH/pkg/mod 配下にフォルダが作成されGoのファイルが保存されます。
例を挙げる `go get golang.org/x/sync` を実行すると `$GOPATH/pkg/mod/golang.org/x/sync` の形で保存されます。
このときにフォルダやファイルが保存されるということは保存先のOSのファイルシステムの挙動を考慮する必要があります。代表なOSだとmacOSやWindowsだと大文字と小文字を区別しない設定が可能です。[1][2]

一方で、Goのライブラリを公開できるGitHubではユーザ名とリポジトリ名には大文字を使用することができます。
このような場合、大文字と小文字だけの違いがあるライブラリをダウンロードできない可能性があります。

この発表では go get で実行されるコードを紹介しつつ、この問題をどのように解消しているのかを紹介したいと思います。
これに加えて発表の中では実際にどのように処理の流れを理解したのかもお伝えすることで Go 自体のコードを読むことのハードルの低さを少しでもお伝えしたいと考えています。

発表スライドの章立ては以下を考えています。
1. 自己紹介
2. go get の仕組みを簡単に紹介
2.1. ファイルシステムの大文字/小文字の区別にも言及
3. ファイルシステムの考慮をどのように行っているコードを示しつつ紹介
4. どのように処理の流れを追って理解していったのか

参考文献
[1] https://learn.microsoft.com/ja-jp/windows/wsl/case-sensitivity
[2] https://support.apple.com/ja-jp/guide/disk-utility/dsku19ed921c/mac

実はスタッフとしても参加

LT 枠での登壇に加えて、運営スタッフとしても参加していました。

運営スタッフは Object-Oriented Conference 2024 以来でした。

会場の下見から事前準備、当日の参加者の誘導、会場の設営・撤去など幅広く行いました。

登壇者用とスタッフ用のネームカードそれぞれ

まとめ

Go Conference 2024 は朝から夜までで長かったでしたが、あっという間に終わった感覚があります。

スタッフとして運営を行っていると過去の勉強会でお話した方からお声がけしていただいた機会が何回かありました。

自分では全く気付けず、お声がけしてもらうときに「〜の勉強会でお話しましたよね?」と言ってもらって思い出しておりました、、、

お声がけした頂いた方や同じくスタッフをしていた方々との交流を通して、今回の Conference のテーマであった「一期一会」を強く感じました。

Conference 終了後に行った懇親会で、発表のアイデアをもらったので次回の Go Conference での登壇やチャンスがあればスタッフとして参加もしたいと思います!