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エンジンで、モバイルやデスクトップアプリへの組み込みに適しています。CouchDBをMySQLとするとTouchDBはSQLiteに相当します。
特徴
- モバイル向けのCouchDB互換のNoSQL
- CouchBaseのメンバーが開発
- iOS用(Objective-C実装)とAndroid用(Java実装)がある。
- RestAPIがほとんど一緒(ユーザ管理機能等はなし)
- CouchDBでレプリケートできる(例えばモバイルのTouchDBとサーバのCouchDBを同期できる)
- コードが350KB(ARM7の場合)と軽量
- (デスクトップより)相対的に遅いモバイルCPUでも高速に起動する
- 省メモリ
詳細は公式:couchbaselabs / TouchDB-iOSを参照してください。
CouchCocoa
CouchCocoa.frameworkのビルド
ローカルリポジトリを作成します。
git clone https://github.com/couchbaselabs/CouchCocoa cd CouchCocoa git submodule init git submodule update
Xcodeでプロジェクト開いてビルドします。
ビルド結果を確認します。
- XCode > Preferences > Locations を開く
Derived Data
の下のリンクをクリック- CouchCocoa-xxxxxx > Build > Products > Release-ios-universalを開いてCouchCocoa.frameworkができていることを確認
TouchDB
TouchDB.frameworkのビルド
ローカルリポジトリを作成します。
git clone git://github.com/couchbaselabs/TouchDB-iOS.git cd TouchDB-iOS git submodule init git submodule update
Xcodeを開いてビルドします。
ビルド結果を確認します。
- XCode > Preferences > Locations を開く
Derived Data
の下のリンクをクリック- TouchDB-xxxxxx > Build > Products > Release-ios-universalを開いて
TouchDB.framework
ができていることを確認
iOSプロジェクトへのTouchDB, CouchCocoaインポート
- Xcodeのプロジェクトを開く
- 先ほどビルドした
CouchCocoa.framework
をソースツリーのframeworks
にドラッグ&ドロップ - 先ほどビルドした
TouchDB.framework
をソースツリーのframeworks
にドラッグ&ドロップ Destination
の"Copy items into~"
にチェック- BuildSettingの
Other Linker
に-ObjC
を追加 BuiodPhase
Link Binary with Libralies
に以下を追加- CFNetwork.framework
- Security.framework
- SystemConfiguration.framework
- libsqlite3.dylib
- libz.dylib
アプリからTouchDBを利用
didFinishLaunchingWithOptions
などでDBを起動例:
CouchTouchDBServer* server = [CouchTouchDBServer sharedInstance]; self.database = [server databaseNamed: @"testdb"]; NSError* error; if (![self.database ensureCreated: &error]) { NSLog(@"CouchDBが起動しました!"); }
詳細な使い方はまた書くかもしれませんが、公式サイトを参照してください。