Mirai Translate TECH BLOG

株式会社みらい翻訳のテックブログ

今すぐ使えるオンラインSQL実行環境3つ

この記事は、みらい翻訳 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などが使える方はいつもどおりに接続して数秒で使えるので困ることはないでしょうが、そういった環境がすぐに手元にないという境遇の方に向けて、いつか同じような場面に遭遇した時に思い出していただけるようにするのが今回の目的です。

どうすれば即席で実行環境を用意できるか

さて、ローカルで実行環境を即席で用意する場合、以下のような選択肢があるかと思います。

ブラウザだけで実行できるのでは?

ただ、今どきはコードもオンラインIDEで書けるくらいなんだし、ブラウザでSQLを即時実行できるサービスくらいたぶんあるよね? と思って軽く調べてみた結果、あったあった。ありました。

  1. SQL Fiddle
  2. DB Fiddle
  3. PostgreSQL WASM

ということで、以下でこの3つのサービスを簡単に触ってみてご紹介します。

ちなみに本文テキストとスクショで載せているテストデータは、弊社チーム名とメンバーのニックネームを使って作りました。

(※みらい翻訳では互いをニックネームで呼び合っています!)

SQL Fiddle

最初はこちら。

sqlfiddle.com

特徴

  • 使えるDBは MySQLOraclePostgreSQLSQLiteSQL Server と種類が多いのが良いところです。
  • 各DBエンジン使えるバージョンは1つなので、使いたいバージョンとちょっと違うなぁということもあるかもしれないが、バージョンが関係する挙動など込み入った検証を目的としないかぎり問題ないと思います。

使い方

  • 左ペイン:DDL & DML(更新系)
  • 右ペイン:SELECT文のみ

便利機能: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

受け入れフォーマット 

上記フォーマットの他にも、様々な形式のテーブル表現でテストテーブルとデータ生成が可能です。

github.com

参考

DB Fiddle

次はこちら。名前はSQL Fiddleに似ていますが、後発ということでしょうか。

www.db-fiddle.com

特徴

  • 使えるDBはMySQLPostgreSQLSQLiteの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

最後はこちら。

wasm.supabase.com

PostgreSQLチュートリアル・学習サイトPostgres playgroundで動かしているものを別の団体がOSS化して公開しているということです。

最近Publickeyの以下記事で紹介されていたのを見て知ったので、ご存知の方も多いかも知れません。

www.publickey1.jp

特徴

  • 先の2つとは雰囲気が異なり、いきなりターミナルという硬派なサービス。
  • サイト上でサーバサイド実行されるのではなく、Webブラウザ上でWebAssembly化されたPostgreSQLを動かすものです。
  • v86(Virtual x86、WebAssenblyで作られたx86エミュレータ) で稼働しています。
  • アクセス時に30MB程度のファイルがダウンロードされて動きます。
  • アクセスしたらLinux上のpostgresが使える状態になる、という感じなので、いわば最も簡単にローカルDBが作れる方法ともいえます。
    • \qpsqlを終了すると、Linuxのシェルに移るのが面白いです。

使い方

  • DBの保存、リストア
  • メモリ使用量、フォントサイズ調整

  • Network Start/Stop
    • ここで立ち上げたDBをNW接続可能にする機能

  • 他にも、エミュレータとPC間でファイルを送受信したり、作成したDBをIndexedDBに保存する機能もメニューに並んでいます。

参考

おわりに

いかがだったでしょうか。

即席でSQLを試したいのだけどDBが...という場面に遭遇した人にとって少しでもお役に立てば幸いです。

明日はdice (@mirai-dice) が書いてくれるようです!

Advent Calendar 2022、今年はたくさん出していくぞー!

We're hiring!

みらい翻訳では、私たちと一緒に開発をしたり技術ブログを盛り上げていただけるエンジニアを募集しています! ご興味のある方は、ぜひ下記リンクよりご応募・お問い合わせをお待ちしております。

miraitranslate.com