Realm meetup#3に行ってきた
概要
http://realm.connpass.com/event/14954/
Realmユーザー、これからRealmを使ってみようという人、その他Realmのテクノロジーに興味のあるひとの情報共有を目的とした会です。
定期的にミートアップやコーディングクラブなどを開催する予定です。
Realm Recent Updates
岸川克己 (@k_katsumi) @ Realm
Realm Cocoa 0.92.3
RealmSwiftがリリース
でも、iOS8からしか使えない
プレフィックスがなくなった
let realm = Realm()
みたいな感じで使える
Transaction中か確認する
-[RLMRealm inWriteTransaction]
プロパティを見てわかるようになった。
Realm Java 0.80.1
reoy
吉田 (@reoy_) さん @ リクルートマーケティングパートナーズ (英単語サプリなどのアプリでRealmをお使いいただいています)
質問
データのテーブルの数や構造はどんな感じですか?
- 8000語
- 10個ぐらいです
マイグレーションが辛いと言ってたけど、あんまり辛かった印象がない。どう辛かったの?
個人で開発していると仕様変更はないけれど、仕様変更のたびにデータベースの設計のたびに、アプリを削除してもらって配布するというのがコミュニケーションが大変だった。急に落ちる。バージョンのコードを書くのがめんどくさかったという話です。
岸川さんより
- カスケード削除は、マルチスレッド対応は優先度高で対応している。
- 純正ブラウザの対応は低めだが、Mac App Storeから配信される予定。
- マイグレーションも検討中で、一からやり直せるような設定はいれようかと考えている。
shotAlertでRealmを使った話
平塚さん @shunsuke_h2006 株式会社インディバル
shotAlertというアプリ showtworksというサービスのアプリ
初期データを用意して、importプロジェクトを用意して、.realmファイルを作成してiOS/Androidに読み込んでる。
採用した理由 - 初期データインポートのプロジェクトがよういされている。 - Select系の処理がsqliteより高速
初期データのサンプル https://github.com/realm/realm-cocoa/tree/master/examples/osx/objc/JSONImport
マイグレーションの書き方
if (oldVersion > 1) { [migration enumerateObjects:Area.className block:^(RLMObject *oldObject, RLMObject *newObject) { }]; } if (oldVersion > 2) { // ほげほげ }
こういうやつをバージョンごとに書いていく。
Realmの制限
- Limitがない
- Limitがなくても全件メモリにのるわけではない
- Distinctがない
- 今後追加予定
SansanのEightアプリでRealmを導入した件
今城 (@yimajo) さん @ Sansan株式会社
開発のやり方
プルリクに対して岸川さんがコメントする
なぜRealmを使うか
- UIViewControllerでNSDictionaryを持って独自でMappingしてた
- Android版もあった
Realmあるある
サンプルコードが参考になる
https://github.com/realm/realm-cocoa/tree/master/examples/ios/objc/TableView
JSONExportというツールがある
https://github.com/Ahmed-Ali/JSONExport
NSDateが使いにくい
Realmはnullを保存できない
- 型はNSDateでダミー用のデータをnullにする
- 設計的にいけてないよね
- 型をdoubleにしてUNIX時間
- 日付の項目がnullだというフラグ
- もし対応がされたとき消すの面倒
- 型をNSStringで保存する
- ISO8601形式で保存
- 利用時にNSDateにパースするみたいな感じ
感想
Realm Swift使ってみたいと思った。