Open16

久しぶりにゼロから Go でサーバーサイド書いてるのでライブラリのトレンドなどをアップデートするスッドレ

@iktakahiro / Takahiro Ikeuchi@iktakahiro / Takahiro Ikeuchi

Protocol Buffer の定義を書いていくわけだけど、Buf というツールが便利っぽいことを見かけた。

https://github.com/bufbuild/buf

k8s でいうところの Helm 的なポジションかなとか思っている(わかっていない)。ちょっと触った感じ、確かに素で .proto 管理するよりは色々便利な気がする。依存することによるデメリットがあるのかどうかは不明

@iktakahiro / Takahiro Ikeuchi@iktakahiro / Takahiro Ikeuchi

DB 周りは 絶対にフルスタック O/R Mapper 使わないマンなのでクエリビルダ的なものを探していく。

数年前は Query Builder + Struct Mapper みたいな位置づけのライブラリが人気だった気がするけど 僕の知らないうちに type safe なコード生成系のものが主流になっていきている感じがある。

以下のどっちかかな、という感じ。sqlc で普通に不便なく JOIN とかかけるのだろうか?ということが分かっていないので、やってみる。

https://github.com/volatiletech/sqlboiler

https://github.com/kyleconroy/sqlc

@iktakahiro / Takahiro Ikeuchi@iktakahiro / Takahiro Ikeuchi

ちなみにちょっとした DB の GUI ツールが欲しくなりがちだけどみんな何使ってるんでしょう?

今日 simplebank チュートリの学びを社内で共有してもらったんだけど

https://zenn.dev/chiaki/scraps/22a98cdd3fc76d

そこで TablePlus というものを教えてもらった。

https://tableplus.com/

有償のものを使うなら DataGrip 買うかなぁ。。

https://www.jetbrains.com/datagrip/

といいつつ、pgweb が現役っぽかったので docker-compose にこれを突っ込んでいく。

https://github.com/sosedoff/pgweb

VSCode に DB Admin ツール 付いたらいいですよね... サードパーティのはあるけど。

@iktakahiro / Takahiro Ikeuchi@iktakahiro / Takahiro Ikeuchi

ちなみに、gRPC のクライアント側は Dart です。

.proto ファイルどこで管理して共通利用するのか? というのは後々課題になりそう。調べたけどみんな色々考えていそうだった。

@iktakahiro / Takahiro Ikeuchi@iktakahiro / Takahiro Ikeuchi

諸般の事情により型を1つに確定できないフィールドがあるのだけど、

"google/protobuf/any.proto" を import すると Any 使えるらしい。いいんかな、、と思いつつデータ型は判断できるらしいのでこれでやってみる。

@iktakahiro / Takahiro Ikeuchi@iktakahiro / Takahiro Ikeuchi

sqlc は確かにめっちゃよいことがわかったが、パラメータ指定できるのが基本的に WHERE句(の単一の値)のみ、など制約が結構厳しいので、少なくともすべてのテーブルに対してこれを使っていくことはできなさそう。

@iktakahiro / Takahiro Ikeuchi@iktakahiro / Takahiro Ikeuchi

これ書いてるの忘れてたけどうえであげたもののうち

  • sqlboiler をめっちゃ使ってる
  • DB の UI ツールは DataGrip 買った
  • とりあえず buf 使ってみている
  • Go バックエンドのコード生成はもちろんOK、クライアントになる Dart のコードも生成できていまのところよい感じ