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
次世代MobileデータベースRealm
Search
Kishikawa Katsumi
February 19, 2016
Programming
530
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
次世代MobileデータベースRealm
Developers Summit 2016
Kishikawa Katsumi
February 19, 2016
More Decks by Kishikawa Katsumi
See All by Kishikawa Katsumi
OCRを使ってゲームのアイテムをデータ化する
kishikawakatsumi
0
140
Running Swift without an OS
kishikawakatsumi
0
940
浮動小数の比較について
kishikawakatsumi
0
540
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
250
愛される翻訳の秘訣
kishikawakatsumi
3
450
Private APIの呼び出し方
kishikawakatsumi
3
1k
iOSでSVG画像を扱う
kishikawakatsumi
0
240
Build your own WebP codec in Swift
kishikawakatsumi
2
2.2k
iOSDC 2024 SMBファイル共有をSwiftで実装する
kishikawakatsumi
1
330
Other Decks in Programming
See All in Programming
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
310
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
640
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
130
A2UI という光を覗いてみる
satohjohn
1
120
The NotImplementedError Problem in Ruby
koic
1
660
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.9k
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
230
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
770
RTSPクライアントを自作してみた話
simotin13
0
520
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
110
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
150
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
110
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
480
A Tale of Four Properties
chriscoyier
163
24k
Un-Boring Meetings
codingconduct
0
310
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
The Curse of the Amulet
leimatthew05
1
13k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
GraphQLとの向き合い方2022年版
quramy
50
15k
Faster Mobile Websites
deanohume
310
31k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Transcript
如⚅➿.PCJMFر٦ةك٦أ 3FBMN
IUUQTHJUIVCDPNLJTIJLBXBLBUTVNJ LJTIJLBXBLBUTVNJ IUUQCMPHLJTIJLBXBLBUTVNJDPN 3FBMN 5FDIOJDBM"EWJTPS 3FBMN*OD։
None
3FBMNהכ⡦ַ
ٌغ؎ٕرغ؎أ㼔欽ח倜׃ֻ⡲ر٦ةك٦أ 0CKFDUJWF$䎃剢։ +BWB䎃剢։ 4XJGU䎃剢։ ٌغ؎ٕ欽鷿ח剑黝⻉ׁגְ 鹼䒀ٗ٦س ئٗ؝ؾ٦ ط؎ذ؍ـ٥ؙٔٝ 3FBMNהכ⡦ַ
ؔ٦فٝا٦أ ぐ珏غ؎ٝر؍ؚٝ0CKDUJWF$4XJGU+BWBⰕ׆ ⰻ鿇أزٖ٦آؒٝآٝתזֻⰕ✮㹀 杝荈ؒٝآٝ42-JUF⢪גְזְ 3FBMNהכ⡦ַ
넝鸞ז⹛⡲ 农〾⻉垥彊鄲⪒ وٕثفٓحزؿؓ٦ي J04049"OESPJE +4JOCFUB /&5JODPNJOH 湫䠬涸דءٝفٕז"1* ♨㻝ז؟ه٦ز傈劤铂0, 3FBMNך暴ꞿ
None
3FBMNِ٦ؠ٦
3FBMNָ⢪גְ،فٔ 傈劤穗幥倜耀ꨵ㶨晛 1JOUFSFTU $BNFSBO "8" 薉⽃铂؟فٔ 4ZODCZ8BOUFEMZ $IBUXPSL (SPVQPO GFBUIFSGPS5XJUUFS
5XJUQBOF 'BMDPO1SP "QMPT J$PNJDT &JHIUCZ4BOTBO
넝鸞ז⹛⡲
*OTFSU6QEBUF .7$$،٦ؗذؙثٍ ط؎ذ؍ـ٥ؙٔٝ 2VFSZ ئٗ؝ؾ٦ 鹼䒀ٗ٦س 넝鸞ז⹛⡲
ػؿؓ٦وٝأ嫰鯰
傈劤Ⰻ㕂ך⡝䨽♰⟝嗚稊ׅ،فٔ
HJUIVCDPNLJTIJLBXBLBUTVNJ3FBMN$PSF%BUB1FSGPSNBODF
Realm CoreData શ݅औಘ 0.0004ඵ 8.01ඵ ෦Ұகݕࡧ 0.09ඵ 1.27ඵ ෦Ұகݕࡧʴιʔτ 0.09ඵ
2.23ඵ ♰⟝ך⡝䨽ر٦ةך嗚稊鸞䏝
Realm CoreData શ݅औಘ 12MB 65MB ෦Ұகݕࡧ 12MB 18MB ෦Ұகݕࡧʴιʔτ 12MB
20MB ♰⟝ך⡝䨽ر٦ةך嗚稊ًٌٔ嶊顤
农〾⻉堣腉
let key = NSMutableData(length: 64)! SecRandomCopyBytes(kSecRandomDefault, key.length, UnsafeMutablePointer<UInt8>(key.mutableBytes)) let config
= Realm.Configuration(encryptionKey: key) let realm = try! Realm(configuration: config) 农〾⻉堣腉
إٝءذ؍ـז䞔㜠ך⥂㶷 խ⦐➂䞔㜠ծ،ؕؐٝزز٦ؙٝזו 衼⡲埄זוד⥂隊ׁر٦ة 农〾⻉堣腉
وٕثفٓحزؿؓ٦ي
None
class Article: Object { dynamic var id: Int = 0
dynamic var title: String = "" dynamic var contents: String = "" dynamic var creationDate: NSDate = NSDate() dynamic var modificationDate: NSDate = NSDate() dynamic var deletionDate: NSDate? = nil dynamic var user: User? = nil let comments = List<Comment>() } ٌرٕذ٦ـٕ㹀纏 J04
public class Article extends RealmObject { @PrimaryKey private int id;
private String title; private String contents; private Date creationDate; private Date modificationDate; private Date deletionDate; private User user; private RealmList<Comment> user; } ٌرٕذ٦ـٕ㹀纏 "OESPJE
let realm = try! Realm() // RealmίωΫγϣϯ let article =
Article() article.title = titleTextfield.text article.contents = contentTextfield.text realm.write { // τϥϯβΫγϣϯ realm.add(article) } ر٦ةך⥂㶷 J04
Realm realm = Realm.getInstance(this); // RealmίωΫγϣϯ realm.beginTransaction(); // τϥϯβΫγϣϯ։࢝ Article
article = realm.createObject(Article.class); article.setText(titleTextfield.getText()); article.setContents(contentTextfield.getText()); realm.commitTransaction(); // τϥϯβΫγϣϯऴྃ ر٦ةך⥂㶷 "OESPJE
let realm = try! Realm() letɹarticles = realm .objects(Article) .filter("user
= %@", currentUser) .sorted("modificationDate", ascending: false) ؙؒٔ J04
Realm realm = Realm.getInstance(this); RealmResults<Article> result = realm .where(Article.class) .equalTo("user.id",
currentUser.getId()) .findAll() .sort("modificationDate", Sort.DESCENDING); ؙؒٔ "OESPJE
Storage Engine ObjectStore API Objective-C Binging Java Binging Swift Binging
C++ وٕثفٓحزؿؓ٦ي佄ִ ،٦ؗذؙثٍ
J04"OESPJE⚕倯ד3FBMNָ⢪גְ،فٔ "8" &JHIUCZ4BOTBO 㹺做،ٕغيגי J20/
ٌغ؎ٕرغ؎أפך剑黝⻉ ך➬穈
䗡䎿׃鹼䒀ٗ٦س
颩ְغ؎ٝر؍ؚٝ堣圓ח״䗡䎿׃鹼䒀ٗ٦س فٗػذ؍ח،ؙإأׅתדְַזر٦ة⥂䭯׃זְ 㣐ꆀךر٦ة侧⼧ծ侧涰♰⟝ד넝鸞ח満ًٌٔד⸬桦״ֻ䪔ִ 䗡䎿׃鹼䒀ٗ٦س
పఈͨ͠Ԇϩʔυ articles = realm.objects(Article).filter("user = %@", currentUser)
పఈͨ͠Ԇϩʔυ articles = realm.objects(Article) .filter("user = %@", currentUser)
పఈͨ͠Ԇϩʔυ let allArticles = realm.objects(Article) let articles = allArticles.filter(“user =
%@", currentUser)
పఈͨ͠Ԇϩʔυ let allArticles = realm.objects(Article) let articles = allArticles.filter(“user =
%@", currentUser) 3FTVMUT"SUJDMF 5BCMF"SUJDMF
పఈͨ͠Ԇϩʔυ let allArticles = realm.objects(Article) let articles = allArticles.filter(“user =
%@", currentUser) 3FTVMUT"SUJDMF 5BCMF"SUJDMF 3FTVMUT"SUJDMF 5BCMF"SUJDMF 2VFSZVTFS
పఈͨ͠Ԇϩʔυ let articles = allArticles.filter(“user = %@", currentUser) let count
= articles.count 3FTVMUT"SUJDMF 5BCMF"SUJDMF 2VFSZVTFS 3FTVMUT"SUJDMF 5BCMF"SUJDMF 2VFSZVTFS $PVOU 7JFX
పఈͨ͠Ԇϩʔυ let count = articles.count let article = articles[0] 3FTVMUT"SUJDMF
5BCMF"SUJDMF 2VFSZVTFS $PVOU 7JFX "SUJDMF 3PX*OEFY 3FTVMUT"SUJDMF 5BCMF"SUJDMF 2VFSZVTFS $PVOU 7JFX
పఈͨ͠Ԇϩʔυ let article = articles[0] let title = article.title "SUJDMF
3PX*OEFY 3FTVMUT"SUJDMF 5BCMF"SUJDMF 2VFSZVTFS $PVOU 7JFX "SUJDMF 3PX*OEFY 5JUMF(FUUFS 3FBMN 4USJOH 5JUMF
ئٗ٥؝ؾ٦ ر٦ة♧ⴖ؝ؾ٦׃זְ
.FNPSZNBQQFEؿ؋؎ٕ ًٌٔהر؍أؙ♳דずׄؿؓ٦وحزךر٦ة ׅץגךؙؒٔכؔؿإحزך乼⡲ فٗػذ؍ך،ؙإأדⴱגر٦ة《䖤 ئٗ٥؝ؾ٦
3FBMN ך➭ך03. 㹋ꥷח،ؙإأׅ鿇ⴓ ֽر٦ة铣⳿ׅ ⟝侧ⴓך ؔـآؙؑز ָ⡲
.7$$"SDIJUFDUVSF .VMUJ7FSTJPO$PODVSSFODZ$POUSPM
.VMUJ7FSTJPO$PODVSSFODZ$POUSPM غ٦آّٝ㾶娖ח״زٓٝؠؙءّٝך盖椚 ぐزٓٝؠؙءّٝכծ֮儗挿ךأشحفءّحز 铣鴥כⴽך铣鴥ծ剅ֹ鴥ـٗحؙ׃זְ 剅ֹ鴥כ铣鴥ـٗحؙ׃זְ 剅ֹ鴥ה剅ֹ鴥כـٗحؙׅ .7$$"SDIJUFDUVSF
ꟼ鸬ך؝أزָ㸜ְ ط؎ذ؍ـ٥ؙٔٝ
3FBMNךر٦ة圓鸡כ䊬㣐ז# USFF 㼎ծ㼎㢳ךꟼ鸬荈搫ח邌植דֹ ه؎ٝة籬ּֽծ؝أزך넝ְ+PJOכ♶銲 6*ך鿪さחさׇגر٦ة圓鸡㹀纏׃װְׅ ꟼ鸬ך؝أزָ㸜ְ
ⵖꣲ✲갪חאְג
㛇劤涸ז俑㶵הغ؎زꂁծ傈➰ծ׃ג侧⦼㘗ך ꂁװ鳤剅湫䱸⥂㶷דֹזְ㔐鼘瘻ؔـآؙؑزדٓحفׅ 㼛勻涸חכ㢳圫זر٦ة㘗.BQ4FU 63- 㔿㹀鹌侧 FUD؟ه٦ز ٌرٕךⵖꣲ
䗳׆暴㹀ךؙٓأך؟ـؙٓأדזֽלזזְ 3FBMNؔـآؙؑزכ鹼䒀ٗ٦سך㹋植ךծفٗؗءה׃ג⹛⡲ׅ ךדծ鸐䌢ךؔـآؙؑزה殯ז㜥さָ֮ أٖحس馄ִג3FBMNؔـآؙؑز床ֿׅהָדֹזְ 3FBMNؔـآؙؑزךⵖꣲ
宕竲⻉ׁגְזְ⦼ח㼎ؙׅؒٔכ劢؟ه٦ز ꟼ侧זוד㢌䳔׃⦼勴⟝חׅծ醱侧ךؕٓيךさ鎘⦼勴⟝ח ׅזו 宕竲⻉ׁגְזְ⦼嗚稊穠卓ה׃ג㼪⳿ׅ 䚍ⴽָˏ'ˏה.ד⥂㶷ׁגְהֹծ侧⦼ח㢌䳔׃ג侧ִ ♳־זו ؙؒٔךⵖꣲ
J1IPOFזודכ֮玎䏝⟃♳ךؿ؋؎ٕ؟؎ؤחזהNNBQ ָ㣟 侁ׅؿ؋؎ًٌٕٔחوحؾؚٝדֹזְ رغ؎أ⣛㶷ָծְְ.#։ 㼛勻涸חծًٌٔوحفך眔㔲ⴓⶴֿׅהד㼎䘔✮㹀 ؿ؋؎ٕ؟؎ؤךⵖꣲ
3FBMNחאְג锃ץ 罋项俱
˖ Ⱅ䒭8FC؟؎ز! IUUQTSFBMNJPKQ ˖ (JU)VC IUUQTHJUIVCDPNSFBMNSFBMNDPDPB IUUQTHJUIVCDPNSFBMNSFBMNKBWB
˖ ِ٦ؠ٦ؚٕ٦ف! IUUQTXXXGBDFCPPLDPNHSPVQTSFBMNKQ ˖ ؟ه٦زثٍحز! IUUQTMBDLSFBMNJP ˖ 5XJUUFS! IUUQTUXJUUFSDPNSFBMN+BQBO ˖ ى٦ز،حف! IUUQSFBMNDPOOQBTTDPN 罋项俱
3FBMN+BQBONFFUVQ SFBMNDPOOQBTTDPN
3FBMN+BQBONFFUVQ SFBMNJPKQOFXT
3FBMN+BQBONFFUVQ SFBMNDPOOQBTTDPN ։ه٦ز吳䒭⠓爡銮倜㺊 ։ٖغٖآ٦ؤ吳䒭⠓爡幪靼ؼؕٔؒ ։4BOTBO吳䒭⠓爡邌麣
3FBMNعٝؤؔٝ SFBMNDPOOQBTTDPN ։ٖغٖآ٦ؤ吳䒭⠓爡幪靼ؼؕٔؒ
3FBMN+BQBO6TFS(SPVQ GBDFCPPLDPNHSPVQTSFBMNKQ
1VCMJD3FBMN4MBDL! TMBDLSFBMNJP