ここがすごいぞ「TablePlus」超便利な機能を一挙紹介!
みなさんTablePlus使ってますか? TablePlusはUI/UXがよく高速に動作するDBクライアントツールです。最近ちらほら使っている人を見かけるようになってきたので、周りでも使ってる人がいるかもしれませんね。
TablePlusには結構便利な機能があるんですが、それらを使っていない人も多いので、個人的にこれは便利!使える!と思ったものを紹介してきます。
ここで紹介する内容は、Docを見ればすべて載っているので正確な情報を知りたい方は公式サイトをみてください。
最近なにかと話題のChatGPTについても、TablePlus公式Twitterのアンケートとっていて70%ほしいと回答しているので、今後導入されるかもしれませんね。
新機能の開発は活発に行われているので、Twitte見ておくと良いですよ。
https://twitter.com/TablePlus/status/1623957581965434882
以下のようなトピックに分けて紹介していきますので、気になるトピックの機能を使ってみてください。
- セキュリティ
- 操作性
- 効率化
- 整理
- その他(上記に属さないもの)
※今回はMacを前提に説明していきますので、Windowsの方は適宜ショートカットは読み替えて操作してみてください
セキュリティ
まずはセキュリティ関連の機能から紹介していきます。この辺の機能は操作ミスなどもカバーしてくれるので、ぜひ使っておきたい機能です。
TablePlus起動時のパスコード設定
TablePlusを起動する際にパスコードを求めるように設定することができます。
これで他人にPCを勝手にいじられても、DBは開かれません。自分のPCなので他者に触らせること自体がないですが、最悪の場合を想定していちばん大切なデータにロックを掛けられるのは良い機能だと思います。
設定のSecurityの項目から設定できます。
指紋認証がついているPCであれば、パスコードの代わりに指紋でもロックを解除することができます。自分はMacbookで指紋認証がついているので、いつもそれでロック解除しています。
〇〇分おきにパスコードを求めるという設定も細かくできますよ。
SafeModeで実行クエリの種類によって確認を挟む
本番環境などでDBを操作する際に、更新や削除のクエリを実行する際には慎重になりたいと思います。その際に使えるのがSafeModeです。
この機能は実行するクエリの種類によって、「本当に実行しますか?」の確認や「実行前にパスワードによる認証を行う」なんてことができる、安全面をサポートしてくれる機能です。
以下の画像のように5つのレベルがあり、それぞれ発行するクエリによってどのような確認を挟むか?という設定ができます。
上から↓の感じです。
- Silent Mode: 確認無しで実行(デフォルト
- Alert Mode 1: すべてのクエリで確認を挟む
- Alert Mode 2: 参照系のクエリ以外で確認を挟む
- Safe Mode 1: すべてのクエリでパスワードを求める
- Safe Mode 2: 参照系のクエリ以外でパスワードを求める
本番環境で使用するなら Safe Mode 2 が一番いいんじゃないかなと思います。select文発行するのに毎回パスワード求められてたら鬱陶しいですからね。
データに変更が伴うクエリはパスワードを入力して安全に実行して、その他のクエリは気軽に実行する感じですね。SlowQueryを実行してしまいそうで怖いという場合はSafeMode1とかを使っておけば良いと思います。
ちなみにパスワードはこんな感じで求められます。これはselect文でもパスワード求められているので、SafeMode1を設定していることになります。
この画像の様に指紋認証でも認証できるので便利です。ただ指紋認証だとたまたまとか、つい指をおいてしまうかもしれないので、指紋認証無効化するというのもアリかもしれません。
以下のように設定より変更可能です。ちなみにデフォルトのモードも変更可能です。
セキュリティ関連は以上です。
操作性
次は操作性について見ていきます。TablePlusは非常に高速に動作して、補完の精度もとても良いので操作性はとても良いのですが、その他にも沢山操作関連で良い機能があるので紹介します。
水平方向にPaneを分割
Paneというのはクエリを記述したりその結果を出力しているエリアのことですが、これを水平方向に分割することができます。縦分割ですね。
ショートカットは cmd+Shift+d です。
同時に複数のクエリの実行結果を見ながら作業できるので、割と重宝してます。
メモ代わりに使ったりもできますしね。
ちなみにPaneの移動はデフォルトだと、
- cmd+option+]
- cmd+option+[
です。設定より変更できることも可能です。
GUIで変更予定のデータのクエリを確認する
TablePlusはデータの削除や追加、更新などGUI上でポチポチ操作するだけでできます。
ただ実行前にどういうクエリが発行されるのか、実行前にレビューを求めたい場合もあるかもしれません。
そういうときに役立つのCodePreviewという機能です。
以下のようにusersテーブルのデータを更新したり、削除したり、追加したりしたいとします。
この状態ではまだDBに反映されておらず、これからこんな感じで変更しますよって表しているだけなんですが、
左上のメニューの「目」のマークを押すと、
以下のように、実行予定のクエリが取得できます。
ちゃんとdelete/update/insert文が記載されています。
ちなみにデータ変更の「目」のマークの右隣のマークを押すと反映されます。
反映するショートカットは cmd+s です。普通に保存のショートカットですね。
Vimが使える!
なんといつの間にかVimが使えるようになっています!Vim好きな自分としてはめちゃくちゃ嬉しい機能ですね。
以下の設定からVimを選択できます。
現状ビジュアルモードが使えなかったり、ヤンクができなかったりと使えないコマンドも沢山あって、コマンドモードなのかインサートモードなのかUI的に分からなかったりするので、結構使いづらいです...。
2023/4時点ではBeta版なので、これから改善されていくことでしょう。vimに関しては今後にきたいですね。そのうちemacsもサポートされるかもしれませんね。
使用できる箇所としてはSQL Editorのみのようです。
高度なデータフィルタ
特定のテーブで絞り込みをするとき簡単に様々なフィルタによる検索ができます。クエリを書いたほうが早いような気もしますが、めんどくさいときには便利なので紹介しておきます。
以下のようなデータがあるときに、
画面右下のFiltersを押すと入力エリアが現れます。ここでカラム、条件、値を入力し検索を掛けていきます。フィルタは複数追加することもできますが、残念ながら無料版だと2フィルタまでです。あまり旨味ないですね...
以下のように検索がかけられます。
また便利なのは以下のようにSQLボタンを押すと、検索クエリが出力できることです。
適用しているフィルタのクエリ、全フィルタを適用した場合のクエリをそれぞれ取得することができます。
フィルタしたデータは、ExportからCSV/Jsonなどでダウンロードもできますよ。
クエリパラメーター
クエリパラメーターとはクエリ内に変数を差し込む機能です。
クエリは変更せずに検索条件の値だけを差し替えたい場合に重宝します。
例えば○月○日〜△月△日までの検索をクエリ自体はそのままで、日付の期間の部分だけを変数で置き換えていく感じです。
使い方は、まずQueryEditorの歯車マークを押して、Query params options -> Enable query paramsにチェックを入れ、
何回かクエリを変更して、Change query params Regexで、以下を選択します。
これで、 :variable とすることで変数をクエリ内に配置できます。
ちなみに ${[\w.]+} であれば ${variable} で変数を配置できます。
実際に変数付で以下のようにクエリを実行すると、
SELECT
*
FROM
users
WHERE
created_at BETWEEN :startAt AND :endAt;
このように変数の値を設定できます。今回は日時を入力して実行しています。
ちゃんと2023/1/1〜1/31までのデータが取得できています。
StreamingResult
この機能は実際に使うというよりは、勝手に適用さてているというものです。
大量のデータを取得する際に、取得したデータから表示してくれます。
通常クエリを実行して、すべて取得し終わってからデータが表示されると思いますが、TablePlusではStreamingResultという機能のおかげで、データ取得とデータ表示を都度行なってくれます。
そのため、クエリ実行してから結果反映まで早いので体感早く感じます。結局全データ取得するのに時間がかかるのか変わりないですが。
地味に嬉しい機能です。Stremingでデータ取得しているので、早とちりして全件とってないのに件数見て全件だと思うのは気をつけましょうね。
整理
次はTablePlus上でできるいろいろな整理関連機能を紹介していきます。ちゃんと整理していると欲しいデータにすぐにありつけるので、この整理機能を使ってキレイにしましょう。
複数テーブルのグルーピング
この機能はなかなかすごいですよ。
ある程度システムが大きくなってくると、テーブルが大量に増えてくると思います。TablePlus上ではアルファベット順に並んでいるので、テーブル名に決まったプレフィックスをつけていると、ある程度はまとまります。
ただテーブル名でプレフィックスは共通してないけど、まとめたいときってありますよね。
例えば、 ミーティングと記事サービスが一緒になったシステムがあったとして(説明するため無理やりな組み合わせにしてます)、以下のようなテーブルがあるとします。
ここで記事系は article_ から始まり、ミーティング系は meeting__ から始まります。 なので並び順的にある程度まとまっているのがわかります。
ここでarticleテーブルにはuser_idカラムが入っていて、meeting関連のテーブルはuser_idカラムが必要ないと想定します。
そうするとuserテーブルは一番下に表示されているので、articleテーブルからは遠い位置にいます。
少し分かりづらいですよね。テーブルが少ないからまだいいですが、テーブルが多くなってuserと同じような立ち位置のテーブルが増えていくと、一気に可視性が悪くなります。
グルーピングしたくなりますね。
そんなときに役立つのがTablePlusのGroup機能です。
サイドメニューのところで右クリックを押すと以下メニューがでるので、New Groupを選択します。
するとグループ化したいテーブルを選んだり、テーブルの命名から自動的に選択したりもできます。
今回は手動で一つずつグループに入れたいテーブルを追加していきました。グループ名は記事関連にしてみました。
userテーブルも追加されて、記事関連としてまとめられました。これは便利ですね。
また、テーブルだけではなくてviewなどもグループ化することができます。
ただ、ちょっと以下のような今ひとつな点もあります(2023/4/12現在)。
- テーブルprefix/containなどの条件指定の際にor条件が使えない
- 今回prefixをarticle、containとしてuserと指定したかったのですが、orではなくand条件になったため、手動で1テーブルずつ選ぶしかありませんでした
- グループ化のネストができない
- テーブルは1つのグループにしか属す事ができない
上記の機能はあっても特段問題とならない機能なので、今後追加されることを期待しましょう。
※ちなみに同一のConnection内のDatabaseは共通の設定がされるらしく、db1、db2とあって、db1にグループ設定するとdb2にも適用されるようです。これは使いづらい...
DBコネクションのグループ化
これはいろいろなDBクライアントでよくある機能ですが、TablePlusにもあります。
また、これはネストできます。
ネストはめちゃくちゃできるようです。これ以上は試してませんが。
グループアイコン設定
これも地味に便利な機能で、複数のプロダクトを開発しているとプロダクトごとのアイコンをグループに設定したくなります。
TablePlusではこれができるので、すぐにお目当てのDBにアクセスできます。
グループ上で右クリックしEditを押します。
少し分かりづらいんですが、コンセントマークが押せるようになっているのでクリックします。すると画像が選択できるようになります。
設定できたら以下のようにアイコンとして表示されます。若干荒く見えますが、小さいので全然気になりません。
最後にメトリクスボード
最後にメトリクスボードというものを紹介します。軽いBIツールのような感じで使える機能です。
データのグラフによる可視化ができ、定期的にグラフを更新していくというものです。
例えば月ごとのユーザー登録数を棒グラフで見たいとします。
以下のようなクエリを書いて、ユーザー登録数を年月単位で取得します。
SELECT
DATE_FORMAT(created_at, "%Y-%m") AS yearMonth,
count(*) as count
FROM
`user`
GROUP BY
DATE_FORMAT(created_at, "%Y-%m")
order by yearMonth;
こんな感じでデータが取れます。
右下のChatというところを押して、y軸とx軸に使用するカラムを指定します。
左下のStylesよりBar Chartを選択すると以下の用に棒グラフで可視化できます。
右下の「Add to Metrics Board」を押すと、メトリクスボード画面に移動しメトリクスの名前をつけることなどが出来るようになります。データを取得し直し、グラフを再描画するタイミングも選択することができます。
ボード上ではテキストエリアなども作成でき、そこから関連するメトリクスに線を引くこともできます。
自分がよく見たい、可視化して起きたデータを追う際には、簡易的ではありますが便利な機能です。
以上で、便利機能の紹介を終わります。今後沢山機能も開発されると思うので、適宜発信していきます。
本サイト「Implist」では、TablePlusを始めとした便利ツールや、プログラミングに関する情報を今後も 発信していくのでブックマーク等お願いいたします!