SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Realmという衝撃
t-kashima
Realmとは
Realmとは
モバイルデバイスのデータベース
少ないコード量で高速に動作する
クロスプラットフォームに対応している
Java, Objective-C, Swift
公式のサポートが手厚い
Github、Twitter、offce hours …
Office hours
@kishikawaさんに質問に答えて頂ける
Realmの特徴
データはデータベースへの参照を持つ
言語との親和性が高い
OSSのため開発進 が確認できる
Realmの使い方
Model
public class Dog extends RealmObject {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Insert
Realm realm = Realm.getInstance(getContext());
Dog dog = realm.createObject(Dog.class);
dog.setName("Rex");
realm.commitTransaction();
Query
Realm realm = Realm.getInstance(context);
RealmResults<Dog> dogs = realm.where(Dog.class)
.contains("name", "rex")
.findAll();
Thread
new Thread(new Runnable() {
public void run() {
Realm realm = Realm.getInstance(context);
RealmResults<Dog> dogs = realm.where(Dog.class)
.contains("name", "rex")
.findAll();
}
}).start();
Transaction
Realm realm = Realm.getInstance(getContext());
Dog dog = realm.createObject(Dog.class);
try {
dog.setName("Rex");
realm.commitTransaction();
} catch (Exception e) {
realm.cancelTransaction();
}
Realmの印象
Realmを使って嬉しかったこと
スキーマがクラスなので分かりやすい
クエリがMongo風に発行できて使いやすい
Realm自体の開発が活発である
2か月に1度のメジャーバージョンアップ
問題は特に起きていない
Realmを使って困ったこと
limitやoffsetがないのでSQL脳だとつらい
Realm Browserでクエリの発行ができない
マイグレーション機能がほとんどない
https://github.com/realm/realm-cocoa/issues/947
Realmのマイグレーション
public class Migration implements RealmMigration {
@Override
public long execute(Realm realm, long version) {
if (version == 0) {
realm.getTable(Dog.class)
.addColumn(ColumnType.INTEGER, "age");
version = 1;
}
return version;
}
}
最新になるよう1つずつコードに書いていく
標準のマイグレーション
これつらくないですか?
つらすぎる…
作りました!
Monarch
https://github.com/t-kashima/Monarch/
Monarchとは
Rails風にマイグレーションを行える
マイグレーションファイルを順番に実行する
マイグレーション内容をファイルに書ける
Rails使ったことないけど…
public class Migration implements RealmMigration {
@Override
public long execute(Realm realm, long version) {
if (version == 0) {
realm.getTable(Dog.class)
.addColumn(ColumnType.INTEGER, "age");
version = 1;
}
return version;
}
}
最新になるよう1つずつコードに書いていく
標準のマイグレーション
ファイルに書ける
Monarchの使い方
bundle exec monarch_migration generate addColumnDog age:int
{
"up": [
"addcolumn Dog age:int"
]
}
}
1436076736_add_column_dog.json
マイグレーションファイルの作成
public class Migration implements RealmMigration {
@Override
public long execute(Realm realm, long version) {
HashMap<String, Class> classMap =
new HashMap<String, Class>() {
{
put("Dog", Dog.class);
}
};
return Monarch.migration(getContext(),
realm, version, schemeVersion, classMap);
}
}
マイグレーション
これで実践もつらくない
Realmはモバイルデータベースの救世主
マイグレーションもMonarchで乗り切れ
@kishikawaさん最高!!!
まとめ
😂Realm最高😭

Contenu connexe

Similaire à Realmという衝撃

書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所Yu Sugawara
 
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについてAndroidの通信周りのコーディングについて
Androidの通信周りのコーディングについてShoichi Takagi
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter IntegrationKazuki Nakajima
 
ServiceStackの紹介
ServiceStackの紹介ServiceStackの紹介
ServiceStackの紹介wilfrem
 
Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Shinichi Tomita
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive ExtensionsShin Ise
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発Nomura Yusuke
 
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~decode2016
 
GDG Tokyo Firebaseを使った Androidアプリ開発
GDG Tokyo Firebaseを使った Androidアプリ開発GDG Tokyo Firebaseを使った Androidアプリ開発
GDG Tokyo Firebaseを使った Androidアプリ開発Fumihiko Shiroyama
 

Similaire à Realmという衝撃 (12)

書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
 
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについてAndroidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
 
ServiceStackの紹介
ServiceStackの紹介ServiceStackの紹介
ServiceStackの紹介
 
Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive Extensions
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
 
Heroku Postgres
Heroku PostgresHeroku Postgres
Heroku Postgres
 
Heroku Postgres
Heroku PostgresHeroku Postgres
Heroku Postgres
 
GDG Tokyo Firebaseを使った Androidアプリ開発
GDG Tokyo Firebaseを使った Androidアプリ開発GDG Tokyo Firebaseを使った Androidアプリ開発
GDG Tokyo Firebaseを使った Androidアプリ開発
 
Aizu lt tokyo_luxion
Aizu lt tokyo_luxionAizu lt tokyo_luxion
Aizu lt tokyo_luxion
 

Plus de Takumi KASHIMA

趣味でサービスを作った話
趣味でサービスを作った話趣味でサービスを作った話
趣味でサービスを作った話Takumi KASHIMA
 
ライブラリを作った話
ライブラリを作った話ライブラリを作った話
ライブラリを作った話Takumi KASHIMA
 
UX勉強会(第十五章)
UX勉強会(第十五章)UX勉強会(第十五章)
UX勉強会(第十五章)Takumi KASHIMA
 
UX勉強会(第十章)
UX勉強会(第十章)UX勉強会(第十章)
UX勉強会(第十章)Takumi KASHIMA
 
UX勉強会(第五章)
UX勉強会(第五章)UX勉強会(第五章)
UX勉強会(第五章)Takumi KASHIMA
 
UX勉強会(第四章)
UX勉強会(第四章) UX勉強会(第四章)
UX勉強会(第四章) Takumi KASHIMA
 

Plus de Takumi KASHIMA (8)

趣味でサービスを作った話
趣味でサービスを作った話趣味でサービスを作った話
趣味でサービスを作った話
 
動画のあれこれ
動画のあれこれ動画のあれこれ
動画のあれこれ
 
ライブラリを作った話
ライブラリを作った話ライブラリを作った話
ライブラリを作った話
 
朝活のすすめ
朝活のすすめ朝活のすすめ
朝活のすすめ
 
UX勉強会(第十五章)
UX勉強会(第十五章)UX勉強会(第十五章)
UX勉強会(第十五章)
 
UX勉強会(第十章)
UX勉強会(第十章)UX勉強会(第十章)
UX勉強会(第十章)
 
UX勉強会(第五章)
UX勉強会(第五章)UX勉強会(第五章)
UX勉強会(第五章)
 
UX勉強会(第四章)
UX勉強会(第四章) UX勉強会(第四章)
UX勉強会(第四章)
 

Realmという衝撃