RaspberryPiでCouchbase Liteを動かしてみた

みなさん、こんにちは。KEYチームの矢納です。

技術ネタ第2弾!!「Couchbase LiteをRaspberry Piで動かしてみた」です。
過去記事の目次はこちらに移動しました。

Couchbase Liteとは?

みなさん、Couchbase Liteが何かというのはご存知でしょうか?Couchbase Liteというのは米Couchbase社が提供している製品の一つです。

Couchbaseはドキュメント指向のNoSQLデータベースです。Couchbase Liteではモバイルのローカル上にあるデータベース(SQLite)をあたかもKey-Value形式のように使えるようにしたものです。ですので、モバイルとは言え、高速なレスポンスが実現されています。

また、Couchbase Sync Gatewayと接続することにより、Couchabse Serverとの自動データ同期を可能とします。同期するデータも指定することができますので、モバイルのデータベース領域を食いつくす心配もありません。さらに、同期さえ済んでいれば、電波の通じないところでもネットワーク通信を行わないので、ネットにつながらなくてデータが取得できなくてイライラすることがなくなります。

どうやって Couchbase Lite を使うの?

Couchbase Liteで調べると、AndroidやiPhoneでの使い方は色々と紹介されています。AndroidやiPhoneで利用するには当然ですがある程度コーディングをする必要があります。ですが、Couchbase LiteにもREST APIが用意されているので、そちらを使ってコーディングなしでやりたいと思います。

色々と探っていたところこちらのGithubにありました。このサイトからcouchbase-lite-local.jarを実行するだけです。

ですが、2015/04/24時点、Sync Gatewayに対しての同期が正常に動作していませんでした。FacebookのJapan Couchabse Users Groupに質問したりして何とか解決することができました。

Couchbase Liteの起動

というわけで、実行するjarを作成しなおしてそのjarを実行するだけでCouchbase Liteの起動です。jarは私のGithubにおいてあります。そのうち、公式のほうが修正されると思いますので、そちらを待ちましょう。

    wget用
    $ wget https://github.com/Burning-Chai/couchbase-lite-sample/raw/master/couchbase-lite-local-new.jar

ドキュメントの保存など

起動が完了したら、データベースの作成、ドキュメントの保存、Sync Gatewayとの同期を行う必要があります。こちらの手順については私のGithubのREAD MEに書いてありますのでそちらをお読みください。

Sync Gatewayの用意

Couchbase Serverがどこかで起動しているのなら、Couchbase Liteとデータを同期したいものです。データの同期を行うのにはSync Gatewayを準備する必要があります。同期の仕方はREAD MEの最後に書いてあります。

Sync Gatewayインストール手順

Sync GatewayのインストールはLinuxに対して行いました。

1. こちらのサイトからダウンロード。

    $ wget http://packages.couchbase.com/builds/mobile/sync_gateway/1.0.4/1.0.4-34/couchbase-sync-gateway-enterprise_1.0.4-34_x86_64.rpm

2. Sync Gatewayのインストール

    $ sudo rpm -ihv couchbase-sync-gateway-enterprise_1.0.4-34_x86_64.rpm

3. コンフィグを指定しながらSync Gateway起動

    $ cd /opt/couchbase-sync-gateway/bin/
    $ vi sg-config.json
    {
      "log": ["REST", "REST+", "HTTP", "HTTP+", "Access", "Cache", "Shadow", "Shadow+", "CRUD", "CRUD+", "Changes", "Changes+", "JSON", "JSON+"],
      "verbose": true,
      "databases": {
        "blog": {
          "server": "http://localhost:8091",
          "users": {
            "GUEST": {
              "disabled": false, "all_channels": ["*"], "admin_channels": ["*"]
            }
          },
          "bucket": "sync_gateway",
          "sync": `function(doc) {channel(doc.channels);}`
        }
      },
      "facebook": {
        "register": true
      }
    }
    $ ./sync_gateway -verbose=true sg-config.json >> sg.log 2>&1 &

このコンフィグはSync Gatewayにblogというデータベースを用意し、sync_gatewayというCouchbaseのバケットと同期を行います。serverはCouchbaseのIPを指定します。userssyncで同期する関する設定をおこいます。databasesには複数のデータベースを書くことができます。

Sync Gatewayはログを出力しないので、リダイレクトを行ってログをファイルに書き込みます。

おわりに

今回一切コードを書かずにCouchbase Liteを使ってみました。Raspberry Piも最近ではお手軽に入手可能なので、これらを使うことによってIoTプロジェクトが作りやすくなるかもしれません。ぜひ、みなさんも試してみてください。

また、Raspberry PiやCouchbase、Couchbase Liteを使って「こんなことがしたい」という方はご連絡ください。一緒にやっていきましょう。ご連絡お待ちしております。

Email: yanou at atware.co.jp