Posted at

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

More than 5 years have passed since last update.

スクリーンショット 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の書き方なども載っている。

もう少し使い込んだら再度まとめて書いてみます。