Realm meetup #17 に参加してきました!
はじめに
こんばんは!朝のコーヒーが欠かせない田宮です。 2016/07/20、東京・渋谷区のSansan株式会社様にて、Realm meetup #17が行われました。
Realm meetupとは
Realmユーザー、これからRealmを使ってみようという人、その他Realmのテクノロジーに興味のあるひとの情報共有を目的とした会です。
定期的にミートアップやハンズオンなどを開催する予定です。
引用元 - Realm meetup #17 - connpass
Realm Recent Updates
Presented by: 山﨑誠さん (@zaki50) @ Realm
Realm Java 1.1.0 における修正点のオーバービューについて説明がありました。
RxRealm(RealmをRxSwiftに対応させるライブラリ)について
Presented by: 岸川克己さん (@k_katsumi) @ Realm
Realm Objective-C/Swift 1.0.2 における修正点のオーバービューについて説明がありました。
- プロパティが存在しないクラスを保存しようとすると例外に
- かつては、無効だが保存可能だった
- write(_:)メソッドのブロック内でthrowできるようになった
- バイナリサイズが少し減少
- addNotificationBlock(_:, change:)で初回の呼び出しは、必ず.Initialが呼ばれるように
- いきなりInitialを飛ばして change:が呼ばれることは今後はない
- 逆方向の関連が変更になる場合に通知が呼ばれない問題を修正
Already compatible with Swift 3 & Xcode 8
- https://github.com/realm/realm-cocoa/issues/3796
Protip for Xcode 8 beta 3 and Carthage
Xcode 8 beta 3 で、Carthageを使う
$ echo SWIFT_VERSION=\"3.0\">swift3.xcconfig $ XCODE_XCCONFIG_FILE='pwd'/swift3.xcconfig \ carthage update --platform iOS --no-use-binaries
RxSwift & Realm
- What's Rx?
- [1, 2, 3, 4, 5, 6].filter {$0 % 2 == 0}
- 配列を偶数のみに
- [1, 2, 3, 4, 5, 6].map {$0 * 5}
- 配列の各要素を、元の値の5倍に
- [1, 2, 3, 4, 5, 6].filter {$0 % 2 == 0}
- Array\
=> Observable\ - RXRealm
- https://github.com/RxSwiftCommunity/RxRealm
- RXSwiftとRealmを一緒に使う
- pod 'RxSwift'
- pod 'RxCocoa'
- pod 'RealmSwift'
- pod 'RxRealm'
- RXSwiftとRealmを一緒に使う
- https://github.com/RxSwiftCommunity/RxRealm
- RXRealm
RXSwift を使って、Realmの処理を行う実際的なサンプルコードが、披露されました。
実務業務をモデルにしたRealmの運用、確認方法
Presented by: 永田大祐さん @ ポテパン(フリーランス)
サンプルデモ
- ボタンタップをトリガーとして、以下処理(UIと連動して、テキストボックスに書き込まれたデータを書き込む処理を、10,000回繰り返すデモ
let obj: Array = [usernameOutlet.text!, ageOutlet.test!, passwordOutlet.text!] for _ in 1...10000 { try! realm.write { let object = obj realm.create(RealmObject.self, value: object) } }
データ容量を調べる
- Realm Browserを使う
- print(Realm.Configuration.defaultConfiguration)
- 取得したRealmFilePathと保存先のFilePath
- iOSシミュレータからString型のデータを10,000 回書き込む処理を行い、Realm Browserで表示するデモ
- default.realmを開く
- ファイル容量をFinderで確認できる
岸川さんインタビュー - Realmの基礎知識
Realm の 岸川さんに、Realmが、どのような場面で役立っているのか、分かりやすく解説いただきました。
ー Realm とは、具体的にどんなところで役立っているのですか?
岸川さん(以下敬称略): AVA, Periscope, Yahoo, Money Forward, Wantedly, 日経, SanSanの各モバイルアプリ等でも使われています。
ー 一般の方が疑問に思われると思うのは、ネットワークから持ってくる情報を、なぜローカルで持っておく必要があるのか、ということだと思うのですが、その辺りについて教えて頂けますか?
岸川: 大抵、ネットワークだけではうまくいかないんですね。ネットが使えない、スピードが遅い場合もある。日本だと分かりにくいですが、常にネットが繋がっていない国・地域がある。
ー 日本はネットに恵まれているんですね。
岸川: ダウンロードしたデータをそのまま表示するといったことは、実は少なくて、検索などで加工してデータを表示するとか、例えばいいねが沢山付いている数で並び順を変えるなど、という場合など。並び替えや検索を使う場合は、(Realmを含む)データベースを使った方がよいです。
モバイルデータベースはいくつかの種類がありますが、やはりRealmを使うのが簡単です。
ー そして高速であると。
岸川: そうですね。大抵は、データの量を気にしなくても高速です。
ー 今回WWDCでサンフランシスコに行った際、(日本に比べて)通信の遅さにビックリしました(笑)
岸川: (笑)。画像とか、ツイッターとか、ゆっくりでてきますよね。
ー 画像とかローカルに(うまい形で)持っていると全然違うんだろうなと思いました。
岸川: そうですね。ダウンロードしている間に、何かができるのが重要かなと思います。
対応言語が増え、.NETでもRealmは使えるので、これからUnityへの対応も視野に入っていますし、将来的にはデスクトップの.NETが使えるようになると、サーバーサイドでも使える可能性が出てきます。jsも同様です。
- realm/realm-dotnet: Realm is a mobile database: a replacement for SQLite & ORMs
-
realm/realm-js: Realm is a mobile database: an alternative to SQLite & key-value stores
ー (今後は)モバイルに限らないということですね。
岸川: そうですね。一方で、ローカルじゃないと困る場合があって、普通のアプリなら、データをネットワークから落として、それをキャッシュしてですけど、例えば、Apple Watch のアプリケーションとかだと、データが生まれるのがココ(Apple Watch)なんですよね。なので、ワークアウトやヘルスケアのデータは、まずApple Watchローカルに保持されて、それをAPIを使って(iOSデバイス側に)呼び出して使うことになる。
こうした場合など、(Realmのような)組み込みのデータベースの重要度は高くなると思います。
ー ありがとうございます!
次回Realm Meetup予定!
- 8/16〜8/18 19:30〜
- SanSan株式会社
- Tim Oliver さんも参加予定
おわりに
Realmは、データベースの技術を提供するにとどまらず、情報発信を積極的に行い、ユーザーとのコミュニケーションが密な企業です。Realm Meetupはすでに17回目を数え、またWebサイトでも、有用な情報を積極的に提供されています。Realmには、今後も要注目ですね!