最近、クエリビルダーを使うのがだるい
クエリビルダーやORMを使うのは基本的に良いこと。
特に開発初期とかはレビューの時間も足りず、クソみたいなクエリを書いてしまったりするので、それを防止するためにも、ライブラリでリスクを担保してあげるのは大事なこと。てか大体は慢心によってそういうの使わないって選択すると失敗すると思う。僕は失敗する自信がある。
自分もGoで開発する時、MySQLに対してのクエリを書く場合は、以下のクエリビルダーを使っている。一部ビルダーでJOINが使えなかったり、サブクエリの書き方が特殊だったりするが、それ以外はだいぶライトな実装で満足している。
ただ、最近サービスもすくすく育ち、レビュー体制が堅実になっていく動きの中で、クエリビルダーを使うのがダルくなってきた。
なんでかというと、多分以下の2つの理由でだるい。
- サービス規模に応じて諸事情を孕んだ複雑な実装が生まれるが、その複雑さをクエリが吸収してしまい、メソッドがどちゃどちゃチェインしてコードを追ってもあんまクエリが頭に入ってこない
- 生クエリじゃないため、レビュー時に「このインデックスは果たしてちゃんと使われているのか」「ちゃんとインデックス貼ってんのか」というのを、実際のクエリを見ながらやることができない
などの都合がある。直近体感しているのは後者なのだが、もうなんかクエリの出力結果を改行してGithubに貼ったりするのも、クエリビルダーのコードをSQLにお手手で変換するのも渋い。
Goの巷ではgormを使う人もいれば、database/sqlに生クエリをどーんと実行させてるぜ!という人もいる。
どっちを選ぶにしても良いのだが、実装の簡素さ、ひいてはそれによってもたらされるレビュー時の視認性というのは、クエリビルダーなしの生クエリの方が担保されるのではないか、と感じずにはいられない昨今である。なお、僕は全くDBの博士ではないため、この見解には非常にバイアスがある。