Go Conference

Room A

Intermediate

5 mins.

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

Shinnosuke Kishida

Shinnosuke Kishida

SO Technologies株式会社,バックエンドエンジニア

2021年にSO Technologies株式会社に入社。ATOM事業本部プロダクト開発グループに配属。ATOMのAPIの開発や媒体APIの対応、レポート生成の基盤部分の改修に従事。毎週ボルダリングに通っている。