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
35
Realmという衝撃
テックランチ
Takumi KASHIMA
August 27, 2015
Tweet
Share
More Decks by Takumi KASHIMA
See All by Takumi KASHIMA
Firebase Cloud Functionsを使ってみた話
kashima
0
2.9k
趣味でサービスを作った話
kashima
1
79
動画のあれこれ
kashima
0
63
ライブラリを作った話
kashima
0
50
朝活のすすめ
kashima
0
36
Other Decks in Technology
See All in Technology
Improve Your Development Workflow with Gemini Code Assist
meteatamel
0
120
Android Target SDK 35 (Android 15) 対応の概要
akkie76
0
140
GrafanaMeetup_AmazonManagedGrafanaのアクセス制御機能とマルチテナント環境下でのアクセス制御について
daitak
0
380
AOAI をきっかけに 社内の Azure 管理を見直した話
recruitengineers
PRO
1
430
JSON攻略法.pdf
miyakemito
8
5.2k
Gitlab本から学んだこと - そーだいなるプレイバック / gitlab-book
soudai
7
1.3k
ServiceNow Now Platform 最新版Washington, D.C.リリース
manarobot
0
100
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
900
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
4
17k
開発生産性大幅アップ!Postman VS Code拡張機能
nagix
3
620
Amplify 🩷 Bedrock 〜生成AI入門〜
minorun365
PRO
7
350
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
690
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Designing on Purpose - Digital PM Summit 2013
jponch
111
6.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
Designing for Performance
lara
602
67k
GitHub's CSS Performance
jonrohan
1025
450k
What's in a price? How to price your products and services
michaelherold
238
11k
What's new in Ruby 2.0
geeforr
337
31k
Optimising Largest Contentful Paint
csswizardry
12
2.4k
The Cult of Friendly URLs
andyhume
74
5.7k
Embracing the Ebb and Flow
colly
80
4.2k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.2k
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࠷ߴ