go-gen-slice-accessors を作った話

640 Views

November 10, 24

スライド概要

snamiki1212/go-gen-slice-accessors を作って日頃のめんどくさいを解消した話

https://github.com/snamiki1212/go-gen-slice-accessors

https://docs.google.com/presentation/d/1Z_IBDWEddF3FwPgp-vq3n1RNMpTyM859fev6tAa79x4/edit#slide=id.g312d4f54660_1_131

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

go-gen-slice-accessors を 作った話 v1.1 2024-11-08 Canary Beer Bash #1 @snamiki1212

2.

About Me Shun Namiki github.com/snamiki1212 twitter.com/snamiki1212 Meet

3.

(注意書き) エンジニア向けの発表です

4.

日々の開発にて小さい めんどくさい がありませんか?

5.

こういう時に Goだと、どうするか

6.

古きよき for 文で回す

7.

こういうのが欲しい

8.

メソッドを毎回 作らないといけない。

9.

めんどくさい

10.

どう解決するか 3. 今回のケースを 満たすものが 見つからない 1. 楽に解決したい はじまり 探す 2. 良さそうな ライブラリを 探してみる ない 🤔 4. じゃあどうする?

11.

じゃあ 作るか

12.

go-gen-slice-accessors を 作った話

13.

作ったもの ある要素の配列を取得できるような仕組み github.com/snamiki1212/go-gen-slice-accessors

14.

(注意書き) 仕事ではなく個人開発 つまり? 個人の時間で、個人開発をした話です 個人開発したものを使いたい時に使う ということは? 自分の好きなように作る!

15.

実装方針 01 code generation Goらしいアプローチだと これが良さそう 02 Easy In & Out 自分のライブラリに ロックインさせたくない

16.

使い方(概要) ● input ○ ソースコード ● output ○ アクセッサのメソッドを生成したコード

17.

使い方(概要) input (user.go)

18.

使い方(概要) generate

19.

使い方(概要) output (user_gen.go)

20.

使い方(概要) usage

21.

どうやって 実現してる?

22.

内部ロジック Point ● AST のParser がコアロジック ● Parserはこれが参考になるよ

23.

試してみる

24.

10個の要素を持つ構造体に実行 ○ 生成されたコード96行 ○ テストコード0行(不要) go-gensliceaccessors

25.

これで PRを出してみる

26.

🎉🎉🎉Merge 🎉🎉🎉

27.

🎉 go-gen-slice-accessors を作った結果 ● Canary Cloud の本番環境で利用されてます →めんどくさいがチョット楽になる →(今後)FatController解消に使える ● Canary Cloud のバックエンドの day1のオンボーディングタスクになってます

28.

(おまけ)ドッグフーディング大事

29.

(おまけ) Easy Setup + Zero Package ・go:generate で Run(L2) だけでなく Install(L1) も入れておくと どの環境でも go generate だけすればいいだけで便利 ・package をプロジェクトに入れないのでロックインもしない

30.

おわり スターもらえると 嬉しいです https://github.com/snamiki1212/go-gen-slice-accessors