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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
50
Other Decks in Technology
See All in Technology
AI時代のPlaywright活用(システムテストを自動化する ー 実行エンジンにPla ywrightを選んだ理由)
ynisqa1988
0
130
AI時代の闇と光
tatsuya1970
0
110
「AIに依存している」と 「AIを使いこなしている」の違い
k8yasuma
0
110
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
マルチアカウント環境でSecurity Hubの運用、その後どうなった? / SRE NEXT 2026 miniLT会
genda
0
100
OPENLOGI Company Profile for engineer
hr01
1
74k
「最後に責任を取るのはチーム」— 人間のPRレビューを最小化してアップデートしたメンタルモデル
jnishime_dresscode
0
880
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
350
LLMやAIエージェントをソフトウェアに組み込むプラクティス
shibuiwilliam
2
420
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
220
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
420
世界、断片、モデル。そして理解
ardbeg1958
1
130
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
870
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Visualization
eitanlees
152
17k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
220
A Soul's Torment
seathinner
6
3.1k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Unsuck your backbone
ammeep
672
58k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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࠷ߴ