テフロウのおぼえがき

手抜きや趣味に関しての一覧、手順、ノウハウなど

当ブログの概要を併記して分類を行った記事一覧は下記から

記事一覧

ブラウザの拡張機能からsqliteを操作する方法

ブラウザで参照できる情報を、ローカルの他のアプリケーションが持つデータベースに連携したいことがあると思います。

サーバー型のアプリケーションであればデータベースもサーバーとして用意すればいいですが、そこまででもないような場合だとsqliteを使いたいです。

ローカルのsqliteファイルを参照しデータベースをできるだけ簡単に操作する方法が無いかと調べていましたがなかなかありませんでした。

ってことで、推奨されてないであろう方法ですが、それなりに簡単な方法を思いついたので紹介。

推奨される方法か分かりませんし、デメリット等もあるかもしれません。利用する場合は自己責任でお願いします。

※追記
現在はWebAssembly版のSQLite3があるらしいです。

 

具体的には、枯れた技術っぽいWebSQLDatabeseを利用します。

これってファイル的な実態はsqliteらしいので、それを利用します。

拡張機能からWebSQLDatabeseのデータベースを作成します。

このデータベースファイルは「%UserProfile%\AppData\Local\Google\Chrome\User Data\Default\databases\chrome-extension_[拡張機能id]」配下です。

ファイル名は数字となっていますが、「%UserProfile%\AppData\Local\Google\Chrome\User Data\Default\databases\Databases.db」のDatabasesテーブルから紐付が見えるのでそれを見てください。idがデータベースファイル名。originがドメイン、nameがdb名です。

ここから、そのデータベースファイルを削除し、アプリケーションのsqliteファイルをシンボリックリンクとして同名ファイルとして作成します。これは、ブラウザのデータベースファイルを残し、それをアプリケーションのデータベースとして参照しても構わないと思います。

軽く動かした感じだと、ブラウザからアプリケーション、アプリケーションからブラウザともに連携することはできていました。