1. Qiita
  2. 投稿
  3. iOS

次世代mobile版データベース"Realm"を使ってみた

  • 393
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

スクリーンショット 2014-08-30 16.53.06.png

1ヶ月以上前にHackerNewsで話題になっていたRealmというmobile用のDBを使ってみた。
使い方も含めて書いておく。

※今回はobjective-cで使ってますが、swiftでも勿論使えます!

何故作ったか?

紹介ページの要約を見てもらえれば詳しくは分かるが、mobileのDBって2000年にでたSQLite以降全然刷新されないよねっていう内容が書いてある。

確かに、mobileのあり方は昨今大幅に変わって来ているのにDB周りは出てないみたい。
自分はwebのアプリケーションを普段は作ってるので、こっち側はResis等のNOSQLが注目されていたり技術的な流れは結構起きてるのに、、、

確かにソシャゲー作ってる人がSQLiteは遅くてtextデータで保管して・・・みたいな話しを聞いた事がある。
まぁなんせ、時代の流れに適したDBを作りたいとの事ね。

スクリーンショット 2014-08-30 17.00.29.png

何が凄いの?

Yコン出身者が作ったらしいがとにかくSqliteより早いらしい。

スクリーンショット 2014-08-30 16.56.45.png

確かにこれをみる限り結構なData量になるとパフォーマンスにかなりの差が見られるな・・。

しかもZyngaは2012年から使ってるとの事で安全性もかなりのものだと主張されてる。

料金は?

無料ですw 素晴らしい!
リリース直後は有料だった気がするけど、オープンソース化したのかな。

インストール

基本的に公式サイトのドキュメント通りに進めていく。

①ライブラリをインストール

Zipファイルでインストールするやり方と、cocoapodsでインストールする方法があるが、勿論cocoapodsで実施。

pod "Realm"
$ pod install

②xcodeのpluginをインストール

これをインストールしておくと、Realmのmodel作成が簡単になる。
Alcatrazというxcodeのパッケージマネージャーをインストールしているとすぐにインストールできる。

インストールしてない方は、ターミナルで下記を実施。

curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh

実施後、xcodeを再起動してください。

xcodeのメニューから
Window > Package Maneger をクリック。
RealmPluginで検索すると出てくるのでインストール。

スクリーンショット 2014-08-30 17.21.44.png

インストールすると、

File > New > File.. をクリックするとRealmがiosのエリアにあるかと思うので、それをクリックし名前を入力し作成。

Databaseを定義

先程作ったファイルのヘッダーファイルにmodelのカラムを定義していく。
名前だけを保持したFriendテーブルを作ってみる。

Friend.h
#import <Realm/Realm.h>

@interface Friend : RLMObject
@property NSString *name;
@end

// This protocol enables typed collections. i.e.:
// RLMArray<Friend>
RLM_ARRAY_TYPE(Friend)
Friend.m
#import "Friend.h"
@implementation Friend
@end
HogeAppDelegate.h
#import "HogeAppDelegate.h"
#import <Realm/Realm.h>
#import "Friend.h"

@implementation MBCAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    RLMRealm *realm = [RLMRealm defaultRealm];
    Friend *friend = [[Friend alloc] init];
    friend.name = @"moriyaman";
    [realm beginWriteTransaction];
    [realm addObject:friend];
    [realm commitWriteTransaction];

    return YES;
}

これでiphoneシュミレータ側のDocumentフォルダにdefault.realmというファイルでデータが生成されている。

ちなみにソースファイルにはデータの形成ロジックなどをexampleを見てみると書いていた。

その他ドキュメントをみて見るとQueryの書き方なども載っている。
もう少し使い込んだら再度まとめて書いてみます。