まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

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

support for null strings

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使ってみたいと思った。