susunshunのお粗末な記録

お粗末に丁寧に生きる

monacaでデータベースを使う

monacaアプリでデータベースを使いたい!

ということでデータの永続化について調べた(ノ゚ω゚)ノ*.オオォォォォォォ

いろいろ選択肢があるよう(ノ゚ρ゚)ノ ォォォ・・ォ・・ォ

どんなアプリ

  1. 読みたい本をストックするアプリ
  2. 読みたい本リストをデータベースに保存したい
  3. なのでそんなリッチな機能はいらない

選択肢

  1. Web SQL Database
  2. Indexed Database API
  3. Local Strage
  4. SQLite(ネイティブから直接使う)
  5. Web APIで外だし
Web SQL Database
  • リレーショナルデータベース
  • 内部的にはSQLiteを使っている
  • W3Cは2010年に仕様の策定を中止(仕様が特定の実装(SQLite)によっちゃうので)
  • 多くのブラウザで実装されている

Web SQL Database

Indexed Database API
  • キーバリューストアー型
  • Web SQL Databaseの代わりにW3Cが仕様の策定に注力してる
  • インデックス貼れるので検索が高速
  • 普及に難あり

Indexed Database API

ご参考までに比較記事
thinkit.co.jp

LocalStorage
  • キーバリューストアー型
  • データベースというよりはデータを「保存すること」を目的にしていると思う
  • 逆に言うとシンプルなので扱いが簡単

Window.localStorage - Web API インターフェイス | MDN

SQLite(ネイティブから直接使う)

GitHub - litehelpers/Cordova-sqlite-storage: A Cordova/PhoneGap plugin to open and use sqlite databases on Android, iOS and Windows with HTML5/Web SQL API

Web APIで外だし
  • Web APIで外だしして、必要時にアプリから呼び出せばよくない?
  • アプリ内でデータを保持しないので都度APIを呼び出す必要がある

どうしましょ

読みたい本リストを保存したいだけなのでLocalStorageで充分な気がしますが、とりあえずリレーショナルデータベース使いたい。(キーバリュー使ったことない)

何年か前にネイティブアプリを作ってた時にSQLite使ってたので、慣れてるCordova-sqlite-storageを、と思ったのですが、私はmonaca無料プランで開発してるのでプラグインの導入はできず。

ではWeb SQL Databaseか、と思いましたが6年も前にW3Cが放棄してるのか。。。どうしよう、と思っていたところ、「HTML5-ハイブリッドアプリ開発入門」に以下の記載が!

標準化されない機能を使うには不安があるかもしれませんが、iOSAndroidで利用されているレンダリングエンジンであるWebKitにはすでにWebSQLが実装されており、WebKitからWebSQLが取り除かれる予定はないと開発者によって明言されています。

[iOS/Android対応] HTML5 ハイブリッドアプリ開発[実践]入門 (Software Design plus) : 久保田 光則, アシアル株式会社 : 本 : Amazon.co.jp

ならばよかろう、ということでWeb SQL Databaseを使うことにしました_( _・ω・)_