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
150
Running Swift without an OS
kishikawakatsumi
0
960
浮動小数の比較について
kishikawakatsumi
0
580
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
260
愛される翻訳の秘訣
kishikawakatsumi
3
460
Private APIの呼び出し方
kishikawakatsumi
3
1k
iOSでSVG画像を扱う
kishikawakatsumi
0
250
Build your own WebP codec in Swift
kishikawakatsumi
2
2.6k
iOSDC 2024 SMBファイル共有をSwiftで実装する
kishikawakatsumi
1
330
Other Decks in Programming
See All in Programming
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
9
15k
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1k
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
170
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
360
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
380
数百円から始めるRuby電子工作
tarosay
0
110
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
910
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
8
3.4k
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
440
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3k
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
280
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.2k
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Rails Girls Zürich Keynote
gr2m
96
14k
Building Adaptive Systems
keathley
44
3.1k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.6k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
210
Designing for Timeless Needs
cassininazir
1
400
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
230
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Unsuck your backbone
ammeep
672
58k
Darren the Foodie - Storyboard
khoart
PRO
3
3.5k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
180
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
440
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