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
Software Engineer
go-gen-slice-accessors を 作った話 v1.1 2024-11-08 Canary Beer Bash #1 @snamiki1212
About Me Shun Namiki github.com/snamiki1212 twitter.com/snamiki1212 Meet
(注意書き) エンジニア向けの発表です
日々の開発にて小さい めんどくさい がありませんか?
こういう時に Goだと、どうするか
古きよき for 文で回す
こういうのが欲しい
メソッドを毎回 作らないといけない。
めんどくさい
どう解決するか 3. 今回のケースを 満たすものが 見つからない 1. 楽に解決したい はじまり 探す 2. 良さそうな ライブラリを 探してみる ない 🤔 4. じゃあどうする?
じゃあ 作るか
go-gen-slice-accessors を 作った話
作ったもの ある要素の配列を取得できるような仕組み github.com/snamiki1212/go-gen-slice-accessors
(注意書き) 仕事ではなく個人開発 つまり? 個人の時間で、個人開発をした話です 個人開発したものを使いたい時に使う ということは? 自分の好きなように作る!
実装方針 01 code generation Goらしいアプローチだと これが良さそう 02 Easy In & Out 自分のライブラリに ロックインさせたくない
使い方(概要) ● input ○ ソースコード ● output ○ アクセッサのメソッドを生成したコード
使い方(概要) input (user.go)
使い方(概要) generate
使い方(概要) output (user_gen.go)
使い方(概要) usage
どうやって 実現してる?
内部ロジック Point ● AST のParser がコアロジック ● Parserはこれが参考になるよ
試してみる
10個の要素を持つ構造体に実行 ○ 生成されたコード96行 ○ テストコード0行(不要) go-gensliceaccessors
これで PRを出してみる
🎉🎉🎉Merge 🎉🎉🎉
🎉 go-gen-slice-accessors を作った結果 ● Canary Cloud の本番環境で利用されてます →めんどくさいがチョット楽になる →(今後)FatController解消に使える ● Canary Cloud のバックエンドの day1のオンボーディングタスクになってます
(おまけ)ドッグフーディング大事
(おまけ) Easy Setup + Zero Package ・go:generate で Run(L2) だけでなく Install(L1) も入れておくと どの環境でも go generate だけすればいいだけで便利 ・package をプロジェクトに入れないのでロックインもしない
おわり スターもらえると 嬉しいです https://github.com/snamiki1212/go-gen-slice-accessors