1ヶ月以上前にHackerNewsで話題になっていたRealmというmobile用のDBを使ってみた。
使い方も含めて書いておく。
※今回はobjective-cで使ってますが、swiftでも勿論使えます!
##何故作ったか?
紹介ページの要約を見てもらえれば詳しくは分かるが、mobileのDBって2000年にでたSQLite以降全然刷新されないよねっていう内容が書いてある。
確かに、mobileのあり方は昨今大幅に変わって来ているのにDB周りは出てないみたい。
自分はwebのアプリケーションを普段は作ってるので、こっち側はResis等のNOSQLが注目されていたり技術的な流れは結構起きてるのに、、、
確かにソシャゲー作ってる人がSQLiteは遅くてtextデータで保管して・・・みたいな話しを聞いた事がある。
まぁなんせ、時代の流れに適したDBを作りたいとの事ね。
##何が凄いの?
Yコン出身者が作ったらしいがとにかくSqliteより早いらしい。
確かにこれをみる限り結構な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で検索すると出てくるのでインストール。
インストールすると、
File > New > File.. をクリックするとRealmがiosのエリアにあるかと思うので、それをクリックし名前を入力し作成。
##Databaseを定義
先程作ったファイルのヘッダーファイルにmodelのカラムを定義していく。
名前だけを保持したFriendテーブルを作ってみる。
#import <Realm/Realm.h>
@interface Friend : RLMObject
@property NSString *name;
@end
// This protocol enables typed collections. i.e.:
// RLMArray<Friend>
RLM_ARRAY_TYPE(Friend)
#import "Friend.h"
@implementation Friend
@end
#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の書き方なども載っている。
もう少し使い込んだら再度まとめて書いてみます。