SQLiteの正式なWebAssembly版「SQLite3 WASM/JS」が登場

今回は「SQLiteの正式なWebAssembly版「SQLite3 WASM/JS」が登場」についてご紹介します。

関連ワード (機能、永続的、直接対話等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


SQLiteの公式Webサイトに、SQLite3をWebAssembly化した「SQLite3 WASM/JS」プロジェクトのページが公開されました。

これまでさまざまなWebAssembly版SQLiteの試みが行われてきたなかで、このプロジェクトは初めてSQLiteの正式なサブプロジェクトとして開発されているWebAssembly版SQLiteということです。

fig

下記はドキュメント「About the sqlite3 WASM/JS Subproject」からの引用です。

this subproject is the first effort “officially” associated with the SQLite project, created with the goal of making WASM builds of the library first-class members of the family of supported SQLite deliverables.

このサブプロジェクトはSQLiteプロジェクトに「公式に」関連する最初の取り組みであり、WASM版はSQLiteの派生物としてサポートされる、本物のファミリーメンバーとすることを目標に開発されます。

つまり今後SQLite開発チームによってSQLiteのバージョンアップが行われた場合、WASM版SQLiteも同じようにバージョンアップすることが期待できる、ということでしょう。

SQLite3 WASM/JSの開発目標。オフラインサポートも

公開されたドキュメントによると、SQLite3 WASM/JSの開発目標は以下だと説明されています。

  1. ネイティブに近い低レベルのsqlite3 API。
  2. sql.jsやnode.jsスタイルの実装に近い、低レベルAPIと直接対話する高レベルなObject Oriented API。このAPIは低レベルAPIと同じスレッドから使わなければならない。
  3. WorkerベースのAPI。Workerメッセージを介して前述のAPIと対話する。こちらはメインスレッドで使用することを想定しており、低レベルAPIはWorkerスレッドにインストールし、Workerメッセージを通じて対話する。Workerは非同期で単一のメッセージチャンネルしか持たないため、非同期の作業結果をクライアントにフィードバックするには、いくつかのアクロバティックなやり方が必要になる(メインスレッドとWorkerスレッドの間でコールバックを渡すだけではだめなため)。
  4. Promiseベースでの上記のWorker APIのバリエーション。ユーザーからクロススレッド通信の側面を完全に隠蔽する。

さらに、現時点で利用可能なJavaScriptAPIによるクライアントサイドでの永続的なストレージをサポートすることも目標として示されています。Origin-Private FileSystem (OPFS) 、window.localStorage、window.sessionStorageなどのAPIがこれに相当する模様です。

Webブラウザで利用可能なWebAssembly版SQLiteのような軽量なリレーショナルデータベースがオフラインでも利用可能になれば、いままでより高度なWebアプリケーションの開発が期待できます。

さらに将来クラウド上のデータベースと簡単に同期する、といった機能が備わるようになれば、さまざまな可能性が広がりそうです(そのようなアナウンスはされていませんが……)。

本家のSQLite開発チームの取り組みによるWebAssembly化

SQLite3 WASM/JSをソースコードからビルドする方法は「Building JS/WASM Bundles」のページで説明されていますが、基本的にはCで書かれたSQLite3のソースツリーからコード取得し、WebAssemblyコンパイラであるEmscriptenでコンパイルしてWebAssemblyバイナリを生成することになります。

SQLiteの公式Webサイトには、Webブラウザ上でSQLiteを試すことができる「SQLite3 Fiddle」のページが用意されていますが、このSQLite3 FiddleのページもSQLite3 WASM/JSのビルドから生成されると説明されています。

fig

SQLiteのWebAssemlby化は、今年(2022年)9月にGoogleのChrome開発チームが、削除される予定のWeb SQL Database APIの代替機能としてSQLite開発チームと協力してWebAssembly版のSQLiteを開発するとのアナウンスをしたことで、本家のSQLite開発チームの取り組みによるWebAssembly化として注目度が高まっていました。

参考:Chrome開発チームがSQLiteチームとWebAssembly版SQLiteを開発中。Webブラウザ上からのファイル書き込みで永続化も可能。Web SQL APIの代替として

ただし調べてみると、「SQLite3 Fiddle」のWebページは2022年5月頃にはひっそりと公開が始まっていたようで(7月になってようやく公式サイトのトップページから「Try it live!」のリンクが張られたようです)、WebAssembly版の開発はそれ以前から進んでいたことが推測されます。

今回SQLite3 WASM/JSのWebページが公開されたのは、開発の進捗によりドキュメントが整備されてきたからなのかもしれません。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
Google Cloudが初めて黒字に。2023年第1四半期の決算で
Google
2023-04-27 02:30
弾幕シューティングの2大タイトルがコラボ 「怒首領蜂」を手掛けるケイブが「東方Project」の完全新作ゲーム開発を表明 「極意を全て注ぎ込む」
企業・業界動向
2021-07-14 03:46
日本IBM、「IBM Cloud Satellite」などを開始
IT関連
2021-03-02 13:49
JavaScriptランタイム「Bun 1.1」正式リリース。Windows版登場、Node.jsとの互換性向上、前バージョンより高速化など
Bun
2024-04-03 22:26
ザ・ウィークエンドがNFTオークションで未発表曲とアート作品販売を予告
ブロックチェーン
2021-04-02 22:31
ソフトバンクらが次世代電池研究開発においてリチウム金属負極を用いた質量エネルギー密度450Wh/kg級の実証に成功
ハードウェア
2021-03-16 18:48
バイデン氏、競争促す大統領令に署名–巨大IT企業など監視強化も
IT関連
2021-07-12 02:51
ジンズ、ウェブサイトの技術的課題を解析してコンバージョン率を改善
IT関連
2021-04-15 14:16
声優の不祥事にAIが代役で活躍–中国で進むAI音声の活用
IT関連
2023-04-01 06:42
エンジニアのキャリアデザインについて共に対応できることは?–SES分科会
IT関連
2022-12-02 01:28
メルカリ、ユニクロ製品の転売対策に本腰 ファーストリテイリングと発売時期などを共有
企業・業界動向
2021-03-19 05:06
macOS次バージョンは「Monterey」(モントレー) iPadとのカーソル移動が簡単に WWDC21、ARグラスなどハードウェア発表はなし
IT関連
2021-06-09 03:45
米連邦地裁、IBMに2000億円超の賠償命令–AT&Tとの取引めぐるBMCの訴訟で
IT関連
2022-06-04 15:33
ローソン、Uber Eatsで医薬品を配送 国内初
最近の注目ニュース
2021-02-03 17:36