28
Eight meets Realm 2015/08/25 Realm Meetup Sansan株式会社 坂本和大

Eight meets Realm

Embed Size (px)

Citation preview

Page 1: Eight meets Realm

Eight meets Realm2015/08/25 Realm Meetup

Sansan株式会社 坂本和大

Page 2: Eight meets Realm

自己紹介

https://github.com/kazu0620

坂本 和大( @kazu0620 )Sansan株式会社 Eight事業部所属

過去に個人で開発したアプリ- ヒミツのアルバム( 35万DL! )- にゃんこタウン( 15万DL! )

Page 3: Eight meets Realm

AgendaEight について

Realmの良さ

RealmのTipsなど

Realmに今後期待すること

Page 4: Eight meets Realm

Copyright © Sansan, Inc. All rights reserved.

Page 5: Eight meets Realm

Copyright © Sansan, Inc. All rights reserved.

v6.2.8 Previous Version

v6.3 Current Version

Page 6: Eight meets Realm

Copyright © Sansan, Inc. All rights reserved.

名刺をデジタル管理リコメンドでつながる

アプリ同士の名刺交換

検索してつながる

Page 7: Eight meets Realm

Copyright © Sansan, Inc. All rights reserved.

Page 8: Eight meets Realm
Page 9: Eight meets Realm

なぜRealmなのか従来の実装ではFMDBで実装されていた

2015年 4月 一部の機能でRealmを試験的に導入 

メリット / デメリットあるが、

主要機能でも導入すべきと判断

Page 10: Eight meets Realm

良さ

はやい

Page 11: Eight meets Realm

良さ

シンプルなIF = 学習コストが低い

オブジェクトを定義して 永続化!

Page 12: Eight meets Realm

良さ

Realm Browser

Page 13: Eight meets Realm

良さ

サポートが超手厚い。

slackのrealmチームで質問を投げると、 めっちゃ丁寧に教えてくれる。 realmを利用するならjoinしておくべき。

Page 14: Eight meets Realm

というわけで

Page 15: Eight meets Realm

Realmの本格導入

7月にリリースしたフィード機能で利用

サーバーから取得したフィード情報のキャッ

シュにRealmを利用している

Page 16: Eight meets Realm

Tips / ハマった点など

Page 17: Eight meets Realm

リレーション

RLMObject(1 to 1)

RLMObject(1 to many)

かんたん!

が、カスケーディングはまだ未対応。紐づくオブジェクトは自分で手動で削除する必要が有ることに注意。

Page 18: Eight meets Realm

デフォルト値 / PKの設定

PKRealm管理下に置かない

プロパティも設定できる

デフォルト値

現時点ではまだNullがサポートされていないことに注意!

Page 19: Eight meets Realm

スレッド間でのオブジェクトの扱い

スレッドをまたいでオブジェクトを利用することはできない

PKを渡して、スレッド内で再度objectForPrimaryKeyする

Page 20: Eight meets Realm

RLMResultは最新の状態が自動で反映される(便利

更新の通知を受け取ることも可能

通知など

Page 21: Eight meets Realm

RLMResultは更新されてもnowは固定の値のまま (あたりまえ)

時間でselectするクエリの場合はRLMResultsを取得し直そう

Page 22: Eight meets Realm

PromiseKit(便利)

addOrUpdate(便利)

Page 23: Eight meets Realm

マイグレーションスキーマの変更があった場合、マイグレーション処理をせずにRealmにアクセスしよ

うとするとExceptionが吐かれる。

新規のモデル追加の場合はマイグレーションしなくとも問題ない。既存のモデルのス

キーマが変わった場合にはマイグレーション必須。

Eightではまだ既存のモデルのスキーマ変更を行ったことはないのでマイグレーション

対応はまだ行っていない。

が、マイグレーション処理がなくともスキーマversionを上げておくのはアリ

Page 24: Eight meets Realm

Unit Testdebugとは切り分けたデータを使いたい。

テスト毎にデータをtruncateしたい。

Page 25: Eight meets Realm

Unit TestAPI通信 -> データ生成のテストにはOHHTTPStubsを利用

Fixture通りのデータが正しく格納されていることと、データを正しく引けてる

ことをことをテストする。

Page 26: Eight meets Realm

Realmに今後期待すること

Nullサポート

モデル毎のデータ変更通知

※いずれも絶賛対応中とのこと!

Page 27: Eight meets Realm

Copyright © Sansan, Inc. All rights reserved.

0

Sansanは一緒に新しい価値を作っていく 仲間をさがしています。

Ruby, Ruby on Rails (Webアプリケーション)

C#,ASP.NET MVC (Webアプリケーション)

iOS / Android アプリ

-  個人向け名刺管理アプリ「Eight」 -  名刺データ化分散処理システム

-  法人向け名刺管理サービス「Sansan」

-  法人向け名刺管理サービス「Sansan」

-  個人向け名刺管理アプリ「Eight」

エンジニア募集中

Sansan 採用 検索

[email protected] まで お気軽にご連絡ください。

興味のある方は

Page 28: Eight meets Realm