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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
950
浮動小数の比較について
kishikawakatsumi
0
560
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
260
愛される翻訳の秘訣
kishikawakatsumi
3
460
Private APIの呼び出し方
kishikawakatsumi
3
1k
iOSでSVG画像を扱う
kishikawakatsumi
0
240
Build your own WebP codec in Swift
kishikawakatsumi
2
2.3k
iOSDC 2024 SMBファイル共有をSwiftで実装する
kishikawakatsumi
1
330
Other Decks in Programming
See All in Programming
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.6k
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.6k
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
150
スマートグラスで並列バイブコーディング
hyshu
0
270
Inside Stream API
skrb
1
810
さぁV100、メモリをお食べ・・・
nilpe
0
160
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
280
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
6.6k
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
810
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
430
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
420
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
230
Chasing Engaging Ingredients in Design
codingconduct
0
230
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
210
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
A Tale of Four Properties
chriscoyier
163
24k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
340
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Become a Pro
speakerdeck
PRO
31
6k
Utilizing Notion as your number one productivity tool
mfonobong
4
330
The agentic SEO stack - context over prompts
schlessera
0
830
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
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