Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Realmという衝撃
Search
Takumi KASHIMA
August 27, 2015
Technology
0
38
Realmという衝撃
テックランチ
Takumi KASHIMA
August 27, 2015
Tweet
Share
More Decks by Takumi KASHIMA
See All by Takumi KASHIMA
Firebase Cloud Functionsを使ってみた話
kashima
0
3.1k
趣味でサービスを作った話
kashima
1
89
動画のあれこれ
kashima
0
77
ライブラリを作った話
kashima
0
66
朝活のすすめ
kashima
0
42
Other Decks in Technology
See All in Technology
コンパウンド組織のCRE #cre_meetup
layerx
PRO
1
280
serverless team topology
_kensh
3
240
AI-Readyを目指した非構造化データのメダリオンアーキテクチャ
r_miura
1
340
AIプロダクトのプロンプト実践テクニック / Practical Techniques for AI Product Prompts
saka2jp
0
110
Okta Identity Governanceで実現する最小権限の原則
demaecan
0
150
マルチエージェントのチームビルディング_2025-10-25
shinoyamada
0
200
デザインとエンジニアリングの架け橋を目指す OPTiMのデザインシステム「nucleus」の軌跡と広げ方
optim
0
120
だいたい分かった気になる 『SREの知識地図』 / introduction-to-sre-knowledge-map-book
katsuhisa91
PRO
3
1.5k
AIでデータ活用を加速させる取り組み / Leveraging AI to accelerate data utilization
okiyuki99
4
1.2k
頭部ふわふわ浄酔器
uyupun
0
230
クラウドとリアルの融合により、製造業はどう変わるのか?〜クラスメソッドの製造業への取組と共に〜
hamadakoji
0
450
「タコピーの原罪」から学ぶ間違った”支援” / the bad support of Takopii
piyonakajima
0
150
Featured
See All Featured
How GitHub (no longer) Works
holman
315
140k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Side Projects
sachag
455
43k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Music & Morning Musume
bryan
46
6.9k
Context Engineering - Making Every Token Count
addyosmani
8
300
Building Flexible Design Systems
yeseniaperezcruz
329
39k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
The Straight Up "How To Draw Better" Workshop
denniskardys
238
140k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Building Adaptive Systems
keathley
44
2.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Transcript
Realmͱ͍͏িܸ t-kashima
Realmͱ
None
None
None
Realmͱ ϞόΠϧσόΠεͷσʔλϕʔε গͳ͍ίʔυྔͰߴʹಈ࡞͢Δ ΫϩεϓϥοτϑΥʔϜʹରԠ͍ͯ͠Δ +BWB 0CKFDUJWF$ 4XJGU ެࣜͷαϙʔτ͕खް͍ (JUIVCɺ5XJUUFSɺP⒎DFIPVSTʜ
Office hours !LJTIJLBXB͞Μʹ࣭ʹ͚͑ͯΔ
Realmͷಛ σʔλσʔλϕʔεͷࢀরΛ࣋ͭ ݴޠͱͷੑ͕ߴ͍ 044ͷͨΊ։ൃਐḿ͕֬ೝͰ͖Δ
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Λͬͯخ͔ͬͨ͜͠ͱ εΩʔϚ͕ΫϥεͳͷͰ͔Γ͍͢ ΫΤϦ͕.POHP෩ʹൃߦͰ͖͍͍ͯ͢ 3FBMNࣗମͷ։ൃ͕׆ൃͰ͋Δ ͔݄ʹͷϝδϟʔόʔδϣϯΞοϓ ಛʹى͖͍ͯͳ͍
RealmΛͬͯࠔͬͨ͜ͱ MJNJUP⒎TFU͕ͳ͍ͷͰ42-ͩͱͭΒ͍ 3FBMN#SPXTFSͰΫΤϦͷൃߦ͕Ͱ͖ͳ͍ ϚΠάϨʔγϣϯػೳ͕΄ͱΜͲͳ͍ IUUQTHJUIVCDPNSFBMNSFBMNDPDPBJTTVFT
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; } } ࠷৽ʹͳΔΑ͏ͭͣͭίʔυʹॻ͍͍ͯ͘ ඪ४ͷϚΠάϨʔγϣϯ
͜ΕͭΒ͘ͳ͍Ͱ͔͢ʁ
ͭΒ͗͢Δ…
࡞Γ·ͨ͠ʂ
Monarch IUUQTHJUIVCDPNULBTIJNB.POBSDI
Monarchͱ 3BJMT෩ʹϚΠάϨʔγϣϯΛߦ͑Δ ϚΠάϨʔγϣϯϑΝΠϧΛॱ൪ʹ࣮ߦ͢Δ ϚΠάϨʔγϣϯ༰ΛϑΝΠϧʹॻ͚Δ 3BJMTͬͨ͜ͱͳ͍͚Ͳʜ
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; } } ࠷৽ʹͳΔΑ͏ͭͣͭίʔυʹॻ͍͍ͯ͘ ඪ४ͷϚΠάϨʔγϣϯ ϑΝΠϧʹॻ͚Δ
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); } } ϚΠάϨʔγϣϯ
͜ΕͰ࣮ફͭΒ͘ͳ͍
3FBMNϞόΠϧσʔλϕʔεͷٹੈओ ϚΠάϨʔγϣϯ.POBSDIͰΓΕ !LJTIJLBXB͞Μ࠷ߴ ·ͱΊ
Realm࠷ߴ