Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Realmという衝撃
Search
Takumi KASHIMA
August 27, 2015
Technology
45
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Realmという衝撃
テックランチ
Takumi KASHIMA
August 27, 2015
More Decks by Takumi KASHIMA
See All by Takumi KASHIMA
Firebase Cloud Functionsを使ってみた話
kashima
0
3.2k
趣味でサービスを作った話
kashima
1
96
動画のあれこれ
kashima
0
86
ライブラリを作った話
kashima
0
71
朝活のすすめ
kashima
0
51
Other Decks in Technology
See All in Technology
Genieを崇めよ
kameitomohiro
0
170
Goodbye ShellScript, Hello File-based App
shunsock
0
400
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
0
320
「守り」で活用するオンデバイスLLM 〜写ってはいけないを総力戦で防ぐ〜 / iOSDC Japan 2026
nakamuuu
0
180
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
180
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
0
200
beyond jj: config & tools ecosystem
indirect
0
5.4k
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
140
人間はどの意思決定を手放せるのか
kawasima
15
7.5k
`t*(42&t>>10)`だけで音楽が鳴る、Swiftで実装するBytebeat / iOSDC Japan 2026
yutailang0119
0
120
HHKBエバンジェリストになる方法
941
0
110
「どのログを見ればいい?」 から始めた サーバーレス障害解析
y_waka1
1
110
Featured
See All Featured
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
250
Deep Space Network (abreviated)
tonyrice
0
310
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
810
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
440
How to train your dragon (web standard)
notwaldorf
97
6.8k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
700
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
700
Balancing Empowerment & Direction
lara
6
1.3k
Six Lessons from altMBA
skipperchong
29
4.5k
A Tale of Four Properties
chriscoyier
163
24k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
460
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
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࠷ߴ