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
奥村元春
January 18, 2024
Programming
1
55
自主勉強会_Realm
HOPTER TECH SCHOOLにて開催された学生自主勉強会(Realm)にて使用した資料です。
奥村元春
January 18, 2024
Tweet
Share
More Decks by 奥村元春
See All by 奥村元春
Lightning Talk Battle #2 230106
mshr1106
0
170
ミスランカー
mshr1106
0
250
Other Decks in Programming
See All in Programming
CSC305 Lecture 04
javiergs
PRO
0
250
そのpreloadは必要?見過ごされたpreloadが技術的負債として爆発した日
mugitti9
2
3k
詳しくない分野でのVibe Codingで困ったことと学び/vibe-coding-in-unfamiliar-area
shibayu36
3
4.4k
CSC509 Lecture 05
javiergs
PRO
0
290
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
naofumi
4
3.5k
開発者への寄付をアプリ内課金として実装する時の気の使いどころ
ski
0
350
2分台で1500examples完走!爆速CIを支える環境構築術 - Kaigi on Rails 2025
falcon8823
3
3.1k
LLMとPlaywright/reg-suitを活用した jQueryリファクタリングの実際
kinocoboy2
4
670
育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
fujidomoe
1
150
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
natmark
2
450
iOSアプリの信頼性を向上させる取り組み/ios-app-improve-reliability
shino8rayu9
0
150
CSC509 Lecture 02
javiergs
PRO
0
400
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
5
180
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
580
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
A designer walks into a library…
pauljervisheath
209
24k
How to Ace a Technical Interview
jacobian
280
24k
Site-Speed That Sticks
csswizardry
11
880
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Building Applications with DynamoDB
mza
96
6.6k
Making Projects Easy
brettharned
119
6.4k
Transcript
学生自主勉強会 Realm 奥村 元春
Realmはオープンソースのローカルデータベース 現在下記の言語に対応 • Objective-C • Swift • Java (Androidのみ) •
Kotlin (Androidのみ) • C# (Xamarin, Win32, UWP) • JavaScript (Node.js, React Native) • C++ • Dart (Flutter) Realmとは 2019年春頃にMongoDBが買収。2023年9月26日にRealmからAtlas Device SDKに名称変更。
•SQLiteや純正のCore Dataよりも高速 •クラス定義がそのままテーブル定義となる •プライマリキー(主キー)が指定できる •オートインクリメントを設定できない 特徴(RealmSwift)
SQLiteや純正のCore Dataよりも高速 特徴(RealmSwift) 1秒間で20,000件のレコードがインサート可能 1秒間で約50件条件に合うレコードを 取り出すクエリを捌ける
プライマリキー(主キー)が指定できる 特徴(RealmSwift) テーブル内でレコードを一意(重複しない)に識別することができるように 指定される項目(カラム) 指定したカラムに対してデータが追加されると、 自動的に1ずつ値を付与してくれる機能。 オートインクリメントを設定できない
ターミナル CocoaPods導入 sudo gem install cocoapods うまくいかない場合 sudo gem install
-n /usr/local/bin cocoapods インストール終了後 pod setup
Xcodeのプロジェクトを新規作成し、作成したプロジェクトファイルにターミナルで移動 RealmSwift導入 cd 【プロジェクトファイルのパス】 Xcodeを終了し、その場所で pod init ディレクトリにPodfileが出現
ディレクトリに生成されたPodfileを開いて RealmSwift導入 target ‘【プロジェクト名】’ do end 上記が書いてある場所の間に pod 'RealmSwift' もしくは
pod 'RealmSwift', ‘【バージョン】’
注意 RealmSwift導入 Xcodeのバージョンによって、導入できるRealmのバージョンが異なります。 RealmSwift v10.31.0 ~ 10.33.0 ⇨ Xcode v13.1~14.1 RealmSwift v10.34.0
~ 10.37.2 ⇨ Xcode v13.3~14.2 RealmSwift v10.38.0 ~ 10.39.1 ⇨ Xcode v13.4~14.3 RealmSwift v10.41.0 ~ 10.45.2 ⇨ Xcode v14.1~15.1.0 RealmSwift v10.45.3 ~ ~ ~ ~ ⇨ Xcode v14.2~15.2.0 対応バージョンまとめ https://github.com/realm/realm-swift/releases
保存後、さっきと同じプロジェクトファイルの場所で RealmSwift導入 pod install インストール終了後、画像のようになっていれば成功 【プロジェクト名】.xcworkspaceでXcodeを起動
実装:テーブルの作成 上のメニューバーの File ⇨ New ⇨ File ⇨ SwiftFile ⇨
名前をRealmData.Swift ⇨ Create RealmData.Swiftに import RealmSwift class Hoge: Object { @Persisted var name: String = "" // 名前 @Persisted(primaryKey: true) var id: Int = 0 // id(プライマリキー) } ViewController.Swiftに import RealmSwift
実装:データの追加 ViewController.SwiftのviewDidLoad()内に let realm = try! Realm() for i in
1...5 { let hogeAdd = Hoge() hogeAdd.name = "岐阜 \(i)郎" hogeAdd.id = i try! realm.write { realm.add(hogeAdd,update:.modified) } }
実装:データの取得 ViewController.Swiftのデータ追加の後ろに let hogesRead = realm.objects(Hoge.self) for hoge in hogesRead
{ print("name: \(hoge.name)") } 実行して、デバッグログに下記のように表示されれば成功
実装:データの更新 ViewController.Swiftのデータ取得の後ろに for i in 1...hogesRead.count { try! realm.write {
hogesRead[i - 1].name = "岐阜 \(i)郎太" } } for hoge in hogesRead { print("更新後name: \(hoge.name)") }
実装:データの更新 実行して、デバッグログに下記のように表示されれば成功
実装:データの削除 ViewController.Swiftのデータ更新の後ろに if let hoge = hogesRead.first { try! realm.write
{ realm.delete(hoge) } } for hoge in hogesRead { print("削除後name: \(hoge.name)") }
実装:データの削除 実行して、デバッグログに下記のように表示されれば成功
Welcome to the Atlas Device SDK Docs 参考URL https://www.mongodb.com/docs/realm/ https://en.wikipedia.org/wiki/Realm_(database)
Realm (database) Realm is Now Atlas Device SDKs https://www.mongodb.com/blog/post/realm-now-part-atlas-platform? _ga=2.126710021.983132505.1701072256-17544333.1701072256 Realmについて知る① https://qiita.com/reo0612/items/ed72bd6b5c9e60d6cd82
爆速な “Realm” は本番投入に値するか 参考URL https://medium.com/eureka-engineering/%E7%88%86%E9%80%9F%E3%81%AA-realm- %E3%81%AF%E6%9C%AC%E7%95%AA%E6%8A%95%E5%85%A5%E3%81%AB%E5%80%A4%E 3%81%99%E3%82%8B%E3%81%8B-6cdc4a3f2828 Releases - realm/realm-swift
https://github.com/realm/realm-swift/releases 【Swift】CocoaPodsでRealmをインストールする方法 & importできないときの対処法。 https://qiita.com/chan_naruwo/items/798e30d840bdca3edd8c