AI interface を持つ In-browser Posgres, postgres.new を試す

Firebase の代替としても使えるサービス supabase.com が In-browserで動く Postgres サンドボックス https://postgres.new/ をリリースしていたので、試してみる

まずブラウザで Postgres が動くとはどういうことかというところからびっくりしたが、これは WASM 版の Postgres 実装である https://pglite.dev/ を使っているとのこと。

少し脱線するが PGlite は electric https://electric-sql.com/ が開発していて、ここは local-first という、ざっくり言えば local にあるDB (pgliteやSQLite) にまず書き込み、その後 Cloud にある DB に sync するという方式でユーザ体験を向上させる手法を推してるみたい。ここは少しだけ後述する

なにはともあれ、とりあえず触ってみる

起動すると ChatGPT チックなUIが現れる。なるほど右側に作りたいものを入力しろということらしい

起動した画面

とりあえず適当にECサイトを作りたいです、と言ってみる

日本語の入力が少し怪しいが、なんとかなる

このようにデータの構造が提案される。そして最後に「これらのテーブルを作成しましょうか?」と聞かれるのでお願いする。

すると以下のようなER図が作成され、

ER図もヌルヌル動くぞ

CREATE TABLE 文も作成される。
これの1つ面白いところは、バックエンドには PGlite がいるので、LLM がただ DDL を生成しているだけではなく、裏側で PGlite に対して DDL を実際に実行しており、ブラウザの IndexedDB 上でデータが実際に作成されていること。


こんな感じにER図からいじれたりもする

さて、作成されたが、これだけでは物足りないので、なにかテストデータをいれてみたい


日本語の補完が怪しく途中で入力されたが、AIがよしなにしてくれてありがたい

このようにテストデータも用意して、そのためのSQLも作成される。


テストデータを100倍にして、みたいなお願いも聞いてくれて便利

あとはクエリしたい内容を聞けば、考えてくれたり、グラフにしてくれたりする


と、色々といじれて面白い。

ちなみに ER図は PGliteのテーブルを読み込み、visualizerで描画してるとのこと。

Under the hood we use a browser-compatible version of postgres-meta to load PGlite tables into JavaScript, then render them using the schema visualizer.

https://supabase.com/blog/postgres-new#er-diagrams-and-migrations

Migration の SQL はどうやって表示してるんだろ?と思ったが

For migrations, we scan through the chat history and concatenate all DDL-related SQL queries into a single view.

https://supabase.com/blog/postgres-new#er-diagrams-and-migrations

と、割と泥臭く頑張っていて良い。

あと蛇足ではあるが、カラムを追加したい、と宣言するとちゃんとalter文で生成してくれる

さて、ざっと見てみたが、このツールはどう使うんだろう、と思ったので開発ブロクも読んでみる

開発陣が書いている postgres.new のモチベーションは以下

  • AI Driven な開発のためのツール

  • Postgres のサンドボックス環境を作る

  • 圧倒的に安いデータベース

postgres.new が開発ツールとして便利そう、なのはわかるけど、ざっと試した感じは In-browser で Postgres 動いてすごいなぁ、みたいで終わってしまうが、そもそも使っている技術である PGlite でもっと開発体験を変えることが目的で、そのためのツールである位置づけっぽいなと思った

というのも、 postgres.new は現状では CSV での export ぐらいしかなく、作成された DDL は postgres.new の外で利用するしかない。
しかし今後は S3 への PGlite の Deploy をサポートする予定とのこと。前述した local-first 開発もそうだけど、ブラウザで Postgres が動くことで、ユーザ1人1人に対する database や、replicate された高速な read-only DB としての使い方などもできる、と記事でも言っている
そのための周辺ツールも supabase は開発しており(例えば PGlite に wire protocol 経由で接続する pg-gateway (https://github.com/supabase-community/pg-gateway))、 熱意を感じる。

postgres.new 自体はいまは Sandboxとして遊べる環境のみであるが、PGlite や pg-gateway などを用いた local に DB がある開発、というものが今後どうなっていくかにも興味が持てて、とても良い機会だとおもうので、気になる方は触ってみてほしい。

ちなみに脱線するので省くが、 https://supabase.com/blog/postgres-new にある PGlite の技術詳細も面白いのでぜひ


この記事が気に入ったらサポートをしてみませんか?