update.どうも。2016の8日目の記事として書いています。RxDBというデータベースをご存知でしょうか?僕もつい先日知ったばかりなのですが、2016年12月になって、急激にGitHubのtrend入りしてきたプロダクトです。RxDBの概要RxDBは以下の機能をもった、主にフロントエンド向けのデータベースです。HTTP接続したCouchDB等、アプリケーションの動作環境に合わせてデータの保存先を選択するイメージです。この意味ではデータベースのクライアント、という説明の方が正しいかもしれません。offline-firstこのエントリのタイトルにも含めた通り、RxDBはoffline-firstで利用することを前提としたデータベースです。Evernoteのようにユーザーのデータを複数のデバイス間で連携するようなアプリケーションを想像してみてください。RxDBはこういったアプリケーションの構築に向いています。図のように、デスクトップPCブラウザではIndexedDBに、モバイルアプリではsqliteに、それぞれ端末のデータを保存しておき、online時にリモートに存在しているデータストアと同期することができます。して扱えることが挙げられます。RxDBのコレクションが変化する度に値が流れます。値が流れてくるため、アプリケーション開発者は流れてきたクエリ結果の処理に注力することができます。ReactやAngularのように、宣言的にViewを組み立てることの出来るフレームワークと組み合わせると強いですね。Demonstration折角ですので、RxDBとReactJSを使った簡単なチャットアプリを作ってみました。部分だけで、それ以外の処理は全てRxDBが勝手にやってくれます。エントリの末尾にデモアプリのソースコードを貼ったので、興味がある方は読んでみてください。デモアプリがとても簡単に作れることがわかるかと思います。RxDBの使い方ここからはRxDBの使い方を簡単に説明していきます。インストールできます。先述したようにRxDBは様々なデータソースをデータストアとして利用することができます。Storageを利用する場合、下記のように記述します。実行して、プラグインを追加でインストールしてください。requireを利用していますので、ブラウザで動作させる場合にはbrowserifyやwebpackを利用してbundleを作成するとよいです。この他にも、例えば下記のpluginが利用できます。あるからも分かるように、これらはPouchDBのプラグインです。RxDBはPouchDBのラッパーであるため、PouchDBが接続可能なデータストアが利用可能です。Documentの操作DBのインスタンスにCollection名とSchemaを食わせると、Collectionを取得できます。32});CollectionはDocumentを取得することができます。mongooseに触れたことがある方であれば、馴染みやすいAPIですね。取得したObservableにはクエリの取得結果に変更があると、その都度データが流れてきます。saveといった一通りの操作が揃っています。詳細はAPIドキュメントを参照してください。メソッドを利用することで、対象のCollectionを別のデータストアと同期させます。いうプラグインを事前に読み込ませておく必要があります。データストア同士のReplicationはPouchDBが用意している機能であり、RxDBも内部的にはこれを利用しています。イベントをハンドリングする必要がありますが、RxDBはこのような処理を肩代わりしてくれます。同期実行後にローカルデータストアの変更を検知した場合、最新のクエリをObservableへと流し込んでくれるのです。まとめこのエントリでは、RxDBの概要とその使い方をかいつまんで説明しました。若いプロダクトであるため、今後どのように発展していくかは未知数ですが、クライアントバックエンドにデータストアが必要となった際には選択肢の1つとして検討してみては如何でしょうか。おまけ本文中のデモ用に作成したアプリケーションのコードを貼っておきます。実際の動作を確認したい場合はこちらから。Serverを使いました。いった選択肢があるようです。upLoginユーザーは見つかりませんでした。