読者です 読者をやめる 読者になる 読者になる

Reality Keysと連携するiOSアプリをつくる 第6回 次世代Mobile DB "Realm"

Reality Keys

f:id:yzono:20150228105600j:plain

はじめに

Realm Tech Talk with JP Simard #1に参加して、予想以上に使いやすそうだったので、ByMyCoinアプリ版のローカルDBにはRealmを利用することにします。

目次

  • 次世代Mobile DB "Realm"とは
  • 実装

次世代Mobile DB "Realm"とは

f:id:yzono:20150228104824p:plain

Realmは、SQLiteやCore Dataの代替テクノロジーとして有力なモバイルデータベースです。私が惹かれた点は以下2点です。

  • 使いやすい。(Core Dataは多機能だけど難しい)
  • 既に多くのプロダクトで使われている。国内だとchatworkのアンドロイドアプリで使われているし、CoinDeskアプリでも使われている!(ビットコインコミュニティ以外でビットコインの話が出るのウケる)

実装

契約クラス(モデル)

import UIKit
import Realm

class Contract: RLMObject {
    
    dynamic var p2sh_address = ""
    
    // API Response
    dynamic var activity = ""
    dynamic var created_datetime = ""

(省略)
}

新規登録

// 契約作成
let newContract = createDummyContract()
        
let realm = RLMRealm.defaultRealm()
realm.beginWriteTransaction()
realm.addObject(newContract)
realm.commitWriteTransaction()

検索

var contracts = Contract.allObjects().sortedResultsUsingProperty("id", ascending: true)

Realm Browserを使ったデータ確認

f:id:yzono:20150228104909p:plain

Realm Browserが使えるので便利。

以下に保存されているdefault.realmを読み込む。

/Users/[User]/Library/Developer/CoreSimulator/Devices/[DeviceID]/data/Containers/Data/Application/[App]

こんな感じ

f:id:yzono:20150228105302g:plain

まとめ

すごい使いやすそうです。ただ複雑なクエリーが必要な場合など制約もありそうです。しばらく使って試します。

おまけ

7:37にJP SimardによるRealmの説明。最後にBitcoinSwiftの説明があります..w

ReactiveCocoaとか興味のあることが尽きない。何に絞るか考えないと。

参考

Realm

Impression of realm java ChatWorkでの事例

Talks by JP Simard

CoreDataはもう古い?新しいモバイルデバイス向けデータベース「Realm」を使ってみた (Swift/Objective-C)

Realm Tech Talk with JP Simard #1

The 12 Apps of Swiftmas