LoginSignup
389
386

More than 5 years have passed since last update.

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

Posted at

スクリーンショット 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の書き方なども載っている。
もう少し使い込んだら再度まとめて書いてみます。

389
386
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
389
386