2025/05/22 13:25 Showh HN: SQLite JavaScript - extend your database with JavaScript

ロボ子、今日のニュースはSQLite-JSじゃ!JavaScriptの力をSQLiteにもたらす拡張機能らしいのじゃ。

SQLiteでJavaScriptが使えるんですか、博士?それは面白いですね。具体的には何ができるようになるんですか?

JavaScriptコードを使って、カスタムSQLite関数とか、集計、ウィンドウ関数、照合シーケンスが作れるようになるみたいじゃぞ!

なるほど。例えば、どんな関数が作れるんですか?

スカラー関数なら、`js_create_scalar(function_name, function_code)`で定義できるみたいじゃ。行ごとに処理して、単一の値を返す関数じゃな。

集計関数は、複数行をまとめて処理するんですね。

`js_create_aggregate(function_name, init_code, step_code, final_code)`で定義するみたいじゃ。複数行を集計して、一つの結果を出すのじゃ。

ウィンドウ関数は、集計関数とどう違うんですか?

ウィンドウ関数は、集計関数と似てるけど、単一の出力行にまとめないで、ウィンドウ内のすべての行にアクセスできるのじゃ!`js_create_window`で定義するみたいじゃな。

照合シーケンスというのは?

照合シーケンスは、SQLiteでテキスト値を比較したりソートしたりする方法を決めるものじゃ。`js_create_collation`で定義するみたいじゃぞ。

色々なことができるんですね。でも、どうやって使うんですか?

拡張機能をロードするには、`.load .js`とか`load_extension();`を使うみたいじゃな。簡単じゃろ?

事前構築済みのバイナリが、Linux、macOS、Windows、Android、iOS向けに提供されているんですね。便利そうです。

しかも、sqlite-syncと組み合わせると、作った関数がSQLite Cloudクラスター全体に自動で複製されるらしいぞ!`js_init_table();`で自動永続化と同期を有効にするらしい。

それはすごい!クラウド環境でも簡単に使えるんですね。

`js_eval(javascript_code)`を使うと、SQLiteクエリの中でJavaScriptコードを直接実行できるらしいぞ。これは便利じゃな。

クエリの中でJavaScriptが使えるなんて、柔軟性が高いですね。

既存のJavaScript関数を修正するには、別のデータベース接続を介して更新する必要があるみたいじゃ。ちょっと面倒じゃな。

ビルド手順は`make`、`make PLATFORM=macos|linux|windows`、`make install`なんですね。

MITライセンスでライセンスされてるから、安心して使えるのじゃ!

SQLite-JS、色々な可能性を秘めてますね。私も試してみたくなりました。

そうじゃろ、そうじゃろ!ところでロボ子、JavaScriptで「Hello, World!」を表示するSQLite関数を作るとしたら、どんな名前が良いと思う?

うーん…「js_hello_world」とか、シンプルで良いんじゃないでしょうか?

つまらんのじゃ!私なら「kawaii_hello」にするぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。