この記事は、みらい翻訳 Advent Calendar 2022 の1日目です。
こんにちは。プラットフォーム開発部 EMのchikaです。
今年もAdvent Calendarの季節がやってきました!
1日目は執筆が間に合わないと自信がない方が多く敬遠されがち(自分もそう)なんですが、今回は社内勉強会のネタがあるからイケるっしょ!と軽く考えて威勢よくエントリーして書き始めることにしました。
(これを公開する日には力尽きてたりして...)
今回は自前でDBを用意せずともインターネット上で簡単にSQLを実行できるサイトが便利だったので3つほど紹介します。
はじめに
先日、こんな感じのSQLを目にする機会がありました。
(略) where name is not null or name != ''
このwhere句を見て「あれ、これどういう結果になるんだっけ?nullは?空文字は?...あぁ、今すぐSQL叩いて確認してみたいけど、、、(めんどくさい)」となったことがありました。
※日頃からちゃんとSQLを使ってて上記即答できる方、その場で迷わずすぐ試せる状態にある方はこの記事の内容は役に立たない可能性があるのでそっ閉じしても大丈夫です!笑
ローカルPC上のDBやテスト環境の共有DBなどが使える方はいつもどおりに接続して数秒で使えるので困ることはないでしょうが、そういった環境がすぐに手元にないという境遇の方に向けて、いつか同じような場面に遭遇した時に思い出していただけるようにするのが今回の目的です。
どうすれば即席で実行環境を用意できるか
さて、ローカルで実行環境を即席で用意する場合、以下のような選択肢があるかと思います。
MacにPostgreSQLをインストール
- 【PostgreSQLをMacで使う方法】インストールから基本的な使い方まで紹介します
- まぁ早そう
- でもこんな理由でローカルに直接入れる?(なんとなく抵抗があり敬遠)
VMを立ててPostgreSQLをインストール
- Mac+Vagrant+PostgreSQL環境構築
- ローカルに直接よりはマシかもだけど、面倒なだけで大して変わらない
DockerインストールしてPostgreSQLを構築...
- 【PostgreSQLをインストール】Dockerを使って15分以内に作成する!
- 15分と謳ってるくらいなのでしても良いのだけど、それでもSQL実行まではそこそこ時間食いそう
ブラウザだけで実行できるのでは?
ただ、今どきはコードもオンラインIDEで書けるくらいなんだし、ブラウザでSQLを即時実行できるサービスくらいたぶんあるよね? と思って軽く調べてみた結果、あったあった。ありました。
ということで、以下でこの3つのサービスを簡単に触ってみてご紹介します。
ちなみに本文テキストとスクショで載せているテストデータは、弊社チーム名とメンバーのニックネームを使って作りました。
(※みらい翻訳では互いをニックネームで呼び合っています!)
SQL Fiddle
最初はこちら。
特徴
- 使えるDBは MySQL、Oracle、PostgreSQL、SQLite、SQL Server と種類が多いのが良いところです。
- 各DBエンジン使えるバージョンは1つなので、使いたいバージョンとちょっと違うなぁということもあるかもしれないが、バージョンが関係する挙動など込み入った検証を目的としないかぎり問題ないと思います。
使い方
便利機能:Text to DDL
テストデータ
テストデータは色々なテーブル表現による入れ方が可能になっています。
以下はCSVで作ったデータですが、
department -- dept_id, dept_name 1, Back Office 2, Sales & Marketing 3, Engineering 4, Platform Development 5, Platform Operation
Markdownでテーブルを書くときのこんな形式で作成してもテーブルとして作成してくれます。
department2 -- dept_id | dept_name 1 | Back Office 2 | Sales & Marketing 3 | Engineering 4 | Plarform Development 5 | Platform Operation
受け入れフォーマット
上記フォーマットの他にも、様々な形式のテーブル表現でテストテーブルとデータ生成が可能です。
参考
DB Fiddle
次はこちら。名前はSQL Fiddleに似ていますが、後発ということでしょうか。
特徴
- 使えるDBはMySQL、PostgreSQL、SQLiteの3つと絞られています。
- その代わり、MySQLは 5.5〜8.0、 PostgreSQLは 9.5〜15 と対応バージョンが多いのが特徴です。
- 明るい画面イメージもあってか、UIはこちらの方がよさげに見える気がします。
使い方
- 基本はSQL Fiddleとほぼ一緒ですが少しだけ機能が豊富です。
Text to DDL
モーダル内でプレビューできるのはSQL Fiddleの同機能と比べて良いなと思いました。
Markdown出力
保存(Save)
保存するとURLが生成されるので他の人に共有が可能です。
(↓Safari)
Fork
要は「別名をつけて保存」。保存済みURLは更新せずに新しいURLを作成することができます。
バージョンの違いを確認
本当にバージョン違うの?というのを、v15から使用可能になったというMerge文で確認してみました。
PostgreSQL v14
PostgreSQL v15
v15でのみ成功したことでバージョンの違いを体感する事ができました。
その他
- 有料プランがあるっぽいですが、あまり掘り下げていません。
- Webサイトへの埋め込み?何に使うんだろう
- コラボレート機能とかあるけど使うのか...?
参考
Postgres WASM
最後はこちら。
PostgreSQLのチュートリアル・学習サイトPostgres playgroundで動かしているものを別の団体がOSS化して公開しているということです。
最近Publickeyの以下記事で紹介されていたのを見て知ったので、ご存知の方も多いかも知れません。
特徴
- 先の2つとは雰囲気が異なり、いきなりターミナルという硬派なサービス。
- サイト上でサーバサイド実行されるのではなく、Webブラウザ上でWebAssembly化されたPostgreSQLを動かすものです。
- v86(Virtual x86、WebAssenblyで作られたx86エミュレータ) で稼働しています。
- アクセス時に30MB程度のファイルがダウンロードされて動きます。
- アクセスしたらLinux上のpostgresが使える状態になる、という感じなので、いわば最も簡単にローカルDBが作れる方法ともいえます。
使い方
- DBの保存、リストア
- メモリ使用量、フォントサイズ調整
- Network Start/Stop
- ここで立ち上げたDBをNW接続可能にする機能
- 他にも、エミュレータとPC間でファイルを送受信したり、作成したDBをIndexedDBに保存する機能もメニューに並んでいます。
参考
- WebブラウザでPostgreSQLを動作させる「Postgres WASM」が公開|CodeZine(コードジン)
- PostgreSQLをブラウザ上で実行するOSS「Postgres-WASM」を触ってみた | DevelopersIO
- Postgres Tutorials | Crunchy Data
おわりに
いかがだったでしょうか。
即席でSQLを試したいのだけどDBが...という場面に遭遇した人にとって少しでもお役に立てば幸いです。
明日はdice (@mirai-dice) が書いてくれるようです!
Advent Calendar 2022、今年はたくさん出していくぞー!
We're hiring!
みらい翻訳では、私たちと一緒に開発をしたり技術ブログを盛り上げていただけるエンジニアを募集しています! ご興味のある方は、ぜひ下記リンクよりご応募・お問い合わせをお待ちしております。