Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

次世代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の書き方なども載っている。
もう少し使い込んだら再度まとめて書いてみます。

moriyaman
株式会社Atraeで転職サイト"Green" をつくってます。 http://www.green-japan.com/ rubyを使って開発しているので ruby/rails/rubymotion辺りの共有が多いです。
atrae
People Techカンパニーとして、転職サイトGreen, ビジネスマッチングアプリyenta, 組織改善プラットフォームwevoxなどのサービスを運営。全ての社員が誇りを持てる組織と事業の創造にこだわり、関わる人々がファンとして応援したくなるような魅力ある会社であり続けることを目指しています。
https://atrae.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away