TouchDB (CouchDB互換の組込用NoSQL) をiOS開発で使ってみる

TouchDBとは

概要

公式サイトを見ると次のように解説されています。

TouchDB is a lightweight Apache CouchDB-compatible database engine suitable for embedding into mobile or desktop apps. Think of it this way: If CouchDB is MySQL, then TouchDB is SQLite.

訳: TouchDBはlightweightなApach CouchDB互換のDBエンジンで、モバイルやデスクトップアプリへの組み込みに適しています。CouchDBMySQLとするとTouchDBはSQLiteに相当します。

特徴

  • モバイル向けのCouchDB互換のNoSQL
  • CouchBaseのメンバーが開発
  • iOS用(Objective-C実装)とAndroid用(Java実装)がある。
  • RestAPIがほとんど一緒(ユーザ管理機能等はなし)
  • CouchDBでレプリケートできる(例えばモバイルのTouchDBとサーバのCouchDBを同期できる)
  • コードが350KB(ARM7の場合)と軽量
  • (デスクトップより)相対的に遅いモバイルCPUでも高速に起動する
  • 省メモリ

詳細は公式:couchbaselabs / TouchDB-iOSを参照してください。

CouchCocoa

CouchCocoa.frameworkのビルド

  1. ローカルリポジトリを作成します。

     git clone https://github.com/couchbaselabs/CouchCocoa
     cd CouchCocoa
     git submodule init
     git submodule update
    
  2. Xcodeでプロジェクト開いてビルドします。

    1. XCodeでプロジェクトを開く

       open CouchCocoa.xcodeproj
      
    2. 左上のScheme設定を"iOS Framework"に設定

    3. メニューでProduct > Build
  3. ビルド結果を確認します。

    1. XCode > Preferences > Locations を開く
    2. Derived Dataの下のリンクをクリック
    3. CouchCocoa-xxxxxx > Build > Products > Release-ios-universalを開いてCouchCocoa.frameworkができていることを確認

TouchDB

TouchDB.frameworkのビルド

  1. ローカルリポジトリを作成します。

     git clone git://github.com/couchbaselabs/TouchDB-iOS.git
     cd TouchDB-iOS
     git submodule init
     git submodule update
    
  2. Xcodeを開いてビルドします。

    1. プロジェクトをXCodeで開く

       open TouchDB.xcodeproj
      
    2. 左上のScheme設定を"iOS Framework"に設定

    3. メニューで`Product > Build
  3. ビルド結果を確認します。

    1. XCode > Preferences > Locations を開く
    2. Derived Dataの下のリンクをクリック
    3. TouchDB-xxxxxx > Build > Products > Release-ios-universalを開いてTouchDB.frameworkができていることを確認

iOSプロジェクトへのTouchDB, CouchCocoaインポート

  1. Xcodeのプロジェクトを開く
  2. 先ほどビルドしたCouchCocoa.frameworkをソースツリーのframeworksにドラッグ&ドロップ
  3. 先ほどビルドしたTouchDB.frameworkをソースツリーのframeworksにドラッグ&ドロップ
  4. Destination"Copy items into~"にチェック
  5. BuildSettingのOther Linker-ObjCを追加
  6. BuiodPhaseLink Binary with Libraliesに以下を追加

    • CFNetwork.framework
    • Security.framework
    • SystemConfiguration.framework
    • libsqlite3.dylib
    • libz.dylib
  7. アプリからTouchDBを利用

    didFinishLaunchingWithOptionsなどでDBを起動

    例:

       CouchTouchDBServer* server = [CouchTouchDBServer sharedInstance];
        self.database = [server databaseNamed: @"testdb"];
        NSError* error;
        if (![self.database ensureCreated: &error]) {
            NSLog(@"CouchDBが起動しました!");
        }

詳細な使い方はまた書くかもしれませんが、公式サイトを参照してください。