2021年6月4日に公開されたMonaca Educaitonの新機能、簡易データベースについて紹介します。
同データベースはWebAPIに対応しているため、スマートフォン以外の外部装置やJavaScript言語以外の他言語からも理論上は読み書き可能です。

なお、『簡易』な作りとなっているため、本格的なデータベースが備えるべき『ACID特性』を全く満たしていません。学校の授業やコンテストの作品作り、文化祭などのアプリで使用することを想定しています。

一般公開用のアプリ開発には、ニフクラなどの商用データベースをご検討下さい。

使用イメージ

データベース側

アプリのプレビュー&JavaScript側

チュートリアル

  • Monaca Educationにログイン
  • お小遣いアプリをダイレクトインポートでプロジェクトとして取り込む
  • Monaca Education上でプロジェクトを開く(クラウドIDE)
  • クラウドIDE上のメニューから『DB』を選択
  • DB管理画面の『設定』にある『APIキーの管理』からキーをコピーする
  • キーをサンプルアプリ(お小遣いアプリ)のmain.jsファイルの変数『apikey』に貼り付けて保存
  • アプリ上でお小遣いの記録を行い、表示されれば成功
  • データをCSV形式でバックアップする

Monaca Educationにログイン

Monaca Education簡易データベースを起動するためには、Monaca Educationにログインする必要があります(一度起動すれば、ログアウトしても問題ありません)。

Monaca Educationログインフォーム

なお、同機能は教育版のMonacaである『Monaca Education』限定機能です。通常版Monacaには存在しません。

お小遣いアプリの準備

Monaca Educationにログインしたのち、以下のURLからお小遣いアプリをインポートして下さい。

お小遣いアプリ(インポート)

Monaca Education上でプロジェクトを開く

プロジェクトを開くと、お小遣いアプリがプレビュー上に起動します。

同プロジェクトには岡本所長のデータベースAPIキーが含まれているため、早速、データベースの記録が表示されます。

しかし、設定されているキーが『読み取り専用キー』のため記録の追加は行えません。
そこで、自身のデータベースを立ち上げ、『マスターキー』に差し替えます。

クラウドIDE上のメニューから『DB』を選択

簡易データベースはプロジェクト上部のメニュー『DB BETA』からアクセスできます。
※ データベース機能はベータ版です。

DB管理画面の『設定』にある『APIキーの管理』からキーをコピーする

データベース管理画面が展開されます。

ここで直接データの参照・登録・更新・削除を行うこともできますが、
今回はアプリからデータベースを利用するために『設定』を開いて下さい。

『設定』にある『APIキーの管理』からマスターキーをコピーします。

キーをサンプルアプリ(お小遣いアプリ)に反映

main.jsファイルの変数『apikey』に貼り付けて『保存』して下さい。

これで自身のデータベースを参照するようになります。

アプリ内の『記録する』に名目や金額を入力して『登録』してみましょう。

登録内容が反映されれば成功です。

データベース管理画面も改めて確認してみましょう。
データがレコードとして記録されているはずです。

使わない列は『設定』から非表示にして構いません。

お小遣い帳アプリでは、整数1と整数2、それと文字列1しかつかっていません。

不使用の列を非表示にすると、管理画面がすっきりします。

なお、『ID』や『作成日』『更新日』はシステムが自動的に値を登録しています。
また、管理画面でID部分をクリックすると、レコードの削除も行えます。

データをCSV形式でバックアップする

簡易データベースはデータの永続性が保証されていないため、必要に応じて『エクスポート』機能でバックアップしてください。
CSV形式のファイルがダウンロードできるはずです。
また、バックアップを復元する際は『インポート』でCSV形式のファイルをデータベース上に復元します。

なお、インポートとエクスポートが正常に動作するかどうかも含め、簡易データベースは保証しておりません。

お小遣いアプリの更なる解説

後日、サンプルアプリ集にて掲載・開設予定です。

Monaca Education簡易データベースのWebAPI仕様

SELECT

エンドポイント

https://db.monaca.education/v1/select?apikey=[API_KEY]

オプション

  • 列の絞り込み
    • 不可
  • 行の絞り込み
    • シリアルとOIDのみ可能(serialInとOIDInオプションを参照)
  • offset
    • 整数を指定可能
  • limit
    • 整数を指定可能
  • orderBySerial
    • ascまたはdescを設定可能。シーケンスの値でソートする
  • serialIn
    • カンマ区切りの整数値。指定したシリアルのみを取得ようになる。
    • OIDInと排他利用
  • OIDIn
    • カンマ区切りの文字列。指定したプライマリキーのみを取得するようになる。
    • serialInと排他利用

INSERT

エンドポイント

https://db.monaca.education/v1/insert?apikey=[API_KEY]

オプション

  • int1~int4
    • 整数を登録可能
  • flot1~float4
    • 浮動小数点数を登録可能
  • text1~text4
    • 文字列を登録可能

UPDATE

エンドポイント

https://db.monaca.education/v1/update?apikey=[API_KEY]

オプション

  • int1~int4
    • 整数を登録可能
  • flot1~float4
    • 浮動小数点数を登録可能
  • text1~text4
    • 文字列を登録可能
  • serialIn
    • カンマ区切りの整数値。指定したシリアルのみを更新するようになる。
    • OIDInと排他利用
  • OIDIn
    • カンマ区切りの文字列。指定したプライマリキーのみを更新するようになる。
    • serialInと排他利用

※ UPDATEは行を指定しないと全ての行が更新されます

DELETE

エンドポイント

https://db.monaca.education/v1/delete?apikey=[API_KEY]

オプション

  • serialIn
    • カンマ区切りの整数値。指定したシリアルのみを更新するようになる。
    • OIDInと排他利用
  • OIDIn
    • カンマ区切りの文字列。指定したプライマリキーのみを更新するようになる。
    • serialInと排他利用
  • DELETEは行を指定しないと全ての行が削除されます

容量制限

  • 1レコードあたりの容量制限
    • 約4KBで制限しています
  • 1データベースあたりのレコード上限
    • 1000レコードまでに制限しています
  • データベース数の上限
    • 1プロジェクト1データベースなのでプランに依存します
    • 無料のプランはプロジェクトが3つまでのため、3つが上限です

余談:Monaca Education 簡易データベースはACID特性を満たさない

  • 不可分性(Atomicity)
    トランザクションをサポートしていないため、複数の命令を実行する際に片方だけしか実行されない可能性があります。
    例えば、1万円預金する処理と500円引き出す処理を実行した際に、1万円の登録に失敗したまま500円を引き出して預金額がマイナスになることがあります。

  • 一貫性(COnsistency)
    ルールや制約を掛けることができないため、上記のマイナス500円が起こることをデータベースの仕組みとしては防げません。

  • 独立性(Isolation)
    トランザクションをサポートしていないため、担保できません。

  • 永続性(Durability)
    問い合わせの結果はおろか、登録済みのデータの永続性すら一切保障されません。運営側の都合(アップデートなど)で一斉にデータを消す場合もあります。特に、年度単位の大型アップデート時には、一斉削除を予定しています。