はじめに
Technogoly Innovation Group 真野です。
RDB(ここでは社内でも実績が多いPostgreSQLとさせてください)のGUIクライアントツールと言えば何を利用していますか? チーム内で聞くと様々なプロダクトの名前が挙がりました。
- DBeaver
- 有名、機能リッチ、UIデザイン良い
- A5:SQL Mk-2
- データモデリングツールに用いていると、DBクライアントとしても用いる流れになりやすい
- PSqlEdit
- 高速かつシンプル、直感的な動作
- Oracle版のOSqlEditに課金し、お世話になった。最初に使ったSQLクライアントツール(私です)
- pgAdmin 4
- データモデリングも、DBクライアントとしても利用
10数年前の所属していたプロジェクトだと、こういう開発ツールもチームで統一しないと駄目! みたいな雰囲気でしたが、いつの間にか↑あたりから自由に選んでね、という良い意味でのゆるふわさに変わっていたのが新鮮でした(規模やリーダーのポリシーによるんでしょうが)。
上記の4つのツールはどれも素晴らしいし、名前がたまたま挙がらなかったけど優れているツールもあるかと思います。そんな中で私が推したいのは、 GoLand(JetBrainsの有償ライセンスを購入している人)を利用している人に対しては、Database Tools and SQLプラグインを利用する ことです。GoLandはJetBrainsの提供するIDEの、Go言語版です。Python版のPyCharm(Professional)、Java(JVM)版のIntelliJ(Ultimate)などでも同様の機能を有すると思います
私がちょうど開発で用いているGoLand 2022.2.3 のバージョンで説明していきます。
GoLand には、30 日間無料体験版期間があるので、気になる人はお試しもできます。もし、ここに投資したくないって方は最初に上げた4つのツールなどを利用すると良いと思います。
Database Tools and SQLの利用
GoLandでDatabase Tools and SQLを使うためには、プラグインをインストールする必要があります。
Pluginから検索して追加ください。
JetBrains製品に詳しい人は、DataGrip との違い何? と思うでしょう。ぶっちゃけ同じです。このプラグインを入れると DataGrip で利用可能なすべての機能のサポートしてくれるそうです。DataGripも30日より長く利用する場合は有償なのでお得ですね。
おすすめする理由
次で機能面でのおすすめポイントを紹介しますが、GoLandでそのままSQL開発やクエリを発行できることの利点は個人的に大きいと思います。
- 複数のウィンドウを切り替えなくても良い (迷子になりにくい)
- 開発していると、VSCode、ブラウザ、テストデータ用に複数のExcelブックなど開くのですが、減らせるのは個人的に嬉しい
- ショートカットを始めとした操作感が、JetBrainsと同等なので、コンテキストスイッチの負荷が下がる
- (当然ですが)デザインに一貫性があるのも強みに感じます
- 開発するPJごとに、DB接続情報が紐づくので便利
- 最初にDB接続情報を登録しておけば、複数のリポジトリを開発するときに脳内マッチングしなくても済む
このあたりは人によって逆にマイナスに働く部分かもしれませんが、作業によってウィンドウを行ったり来たりしなくても良いのは、個人的意見ですが本当に楽です。
SQLはO/Rマッパーで隠蔽化されていて、SQLを生で書くことは殆どないよって方もいらっしゃるかと思います。その場合は確かに恩恵は受けにくいかもと思います。
機能について
Database Tools and SQLプラグインがDataGripと同等と伝えてしまったので、ここからはDataGripの機能説明と同義になってしまいます。自分が使って気に入っている点・便利だなと思っている点を紹介します。
次から、いくつかGIF動画を貼っていますが、PostgreSQL TutorialのDVDレンタルのスキーマを取り込んでいます1。
スキーマの探索
いったんDBに接続できてしまえば、ドリルダウン的にテーブル定義を確認できます。キーの定義などをさっと確認したいときに便利です。
DDLを見たほうが嬉しいという人にも、サクッと生成する機能があります。テーブルを右クリック>SQLスクリプト>SQLジェネレータ
SQLの実行
何かしらのSQLを選択肢、 ctrl + Enter
で実行できます。
JetBrains製のIDEらしく、補完もバッチリしていて、テーブル名、列名、ファンクションなどもバッチリです。
他にも次の点が個人的に気に入っています。
- カラムをダブルクリックするとDDLの定義元にジャンプする(!)。最初は驚きました
- 存在しないテーブル、カラムなどを指定すると、エラーになる (コンパイル検出みたいに、実行前に気がつけて良いです)
- (実はあまりやったことがないですが)、テーブル名をダブルクリックした表を、Excelのように直接編集してコミットできる
- 検索結果をCSV/TSV/JSON/Markdown/xlsxなどの様々なフォーマットでダウンロードもできます
- その時、縦横変換なども設定で可能
- なんというか、作り込まれている..と感じることができました
SQL生成
Insert, Updateなどの基本的なSQL生成もできます。
この辺はまぁ..大抵のツールに備わっていそうだなという感想です。
プレスホルダー
アプリケーションで用いるライブラリによっては、プレスホルダーの書き方が ?
以外の、 $1
や @id
といった書き方があり得ると思います。
このときにも、正規表現による設定でエディタにプレスホルダーだと認識させることができます。
「ツール>データべース>クエリと実行>ユーザーパラメータ」に、 $1
の場合は、\$(\d+)
、 @id
の場合は @(\w+)
を追加。
背景色の変更
例えば、develop, staging, production と3つのDB接続先があり、develop環境に流したつもりが、実はproduction環境であったといったヒューマンエラーを防ぎたいと思います。そもそも、staging, production環境の接続情報を同等に扱うのではなく、権限をREAD_ONLYにするなど様々な工夫はあるかと思いますが、それでもどの環境に接続しているかは非常に重要です。
「データベースエクスプローラから右クリック>ツール>色設定」変更できます。
例えば、本番環境は背景色をオレンジにした例です。GIFだとタブ色だけ変えていますが、エディタ全体の色を変えることもできます。
個人的にはツールを選ぶ上で最重要にしている機能かもしれません。
まとめ
JetBrainsで有償ライセンスを持っている方でも、Database Tools and SQLプラグインを使っている人が周りで少ないなと思ったので書きました。
DataGripと同等の機能を有するため非常に高機能で作り込まれており、おすすめです(せっかくなので一度は試さないともったいないという精神もあるかもです)。
また、GoなりPythonなりNode.jsなりJavaなりで開発しているIDE上で、そのままの開発者体験でSQLのクエリの実装を行えるのはかなりプラスだと思います。これはO/Rマッパーなど使っているかどうかでかなり変わってきそうですが、ちょっとしたデータ調査にもシームレスにSQLを触ろうと思える準備を整えておくのは良いでしょう。
- 1.余り需要は無い気もしますが、 https://github.com/ma91n/goland_Database_Tools_and_SQL のdocker-compose.yaml で利用すると、このブログで利用したスキーマを再現できます。 ↩