Skip to content

TouchDB for iOSの始め方

2013年4月22日

TouchDBって?

Couchbase Labで開発されている、スマートフォン向けのドキュメントベースデータベース。
いわゆるNoSQLというやつです。

いままでSQLite一択だったスマホアプリに新たな選択肢として登場しました。

どんなことができるの?

  • NSDictinaryをまるごと保存
  • CouchDBとのレプリケーション

特徴

  • コールバック式の動作
  • Map/ReduceベースのView
  • もちろんSQLは使いません

注意すべきこと

CouchDBと違って、JavaScriptでViewを作ることができません。
同じようなものをObjective-Cで実装はしてあるものの、コードは同じでないところに注意。

じゃあ動かして行きましょう

下準備

必要な物

これらを全部プロジェクトに追加します。

追加項目

  • Build Settingsの Other Linker Flags に -ObjCを追加

これらを追加することで、まずビルドが通るようになります。

DBの作成

DBの作成はAppDelegateで行います。
基本はシングルトンなのでシングルトンなクラスを作ってもいいかもしれませんが、とりあえずはセオリー通り作ります。

AppDelegate.h

#import <UIKit/UIKit.h>

// add
@class CouchDatabase;

@class ViewController;

@interface AppDelegate : UIResponder

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) ViewController *viewController;

// DB
@property (strong, nonatomic) CouchDatabase *database;

// DBショートカット
+ (CouchDatabase *)database;

@end

AppDelegate.m

以下をインポート

#import <CouchCocoa/CouchCocoa.h>

以下を追加

// add
+ (CouchDatabase*) database
{
    AppDelegate* delegate = [[UIApplication sharedApplication] delegate];
    return delegate.database;
}

– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
に以下を追加する。

 // CouchDBのセットアップ
    CouchTouchDBServer* server = [CouchTouchDBServer sharedInstance];

    /* データベース名を指定 */
    self.database = [server databaseNamed: @"hey"];
    NSError* error = nil;

    /* 失敗 */
    if (![_database ensureCreated: &error]) {
        NSLog(@"Failed to create TouchDB database: %@", error);
    }

これで一旦DBの作成は終了です。

DBの確認

では作成したDBの情報を取得してみましょう。

対象ViewControllerで以下をインポート

#import <CouchCocoa/CouchCocoa.h>

そして、

/* DB情報の取得 */
    CouchDatabase* db = [AppDelegate database];
    id result;
    NSError* error;

    RESTOperation* op = [db GET]; // GET on a db returns a dictionary of info
    if ([op wait: &error]){
        result = op.responseBody.fromJSON;
    }
    else{
        result = error;
    }
    NSLog(@"%@",[result description]);

として

2013-04-22 17:09:14.905 TouchDBSample[20946:c07] {
    "db_name" = hey;
    "db_uuid" = "BA5BEF8B-51DE-4325-BEDB-40F388E42305";
    "disk_size" = 167936;
    "doc_count" = 100;
    "update_seq" = 100;

という感じのデータが取れればDBは無事に作成できていることが確認できます!

データの取得や保存はまた次回〜。

参考:https://github.com/couchbaselabs/TouchDB-iOS/wiki/Guide%3AAdding-TouchDB-To-Your-App

広告
コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。