Sponsor Link
環境&対象
- macOS14.6
- Xcode 16.1 Beta
- iOS 17.5
- Swift 5.9
SwiftPackage 設定
Swift Package Manager 経由で プロジェクトに追加するのが簡単です。
RealmSwift の github は、こちら
- 適当に プロジェクトを作成する(UnitTest を含めて作成すると、設定後の動作確認まで 記事に沿って試せます。)
- “File”-“Add Package Dependencies…” を選択
- 右上のフィールドに、”https://github.com/realm/realm-swift” を入力
- 中央のリポジトリリストに、realm-swift が表示されるので、選択
- Dependency Rule を “Up to Next Major Version” にする
- バージョン番号は、最新リリースにするのが、公式のおすすめ
具体的なバージョン番号の確認は こちら - Package Product 選択画面では、”Swift で使用する” なら、RealmSwift を 自分のターゲット(アプリ)に追加する。(Realm は追加しない)
上記で、使用開始できますが、Realm 側が提供する Privacy Manifest を使用するためには、以下の追加設定が必要です。
- プロジェクトナビゲータでプロジェクトファイルを選択し、ターゲットからアプリを選択する
- General タブで、Frameworks, Libraries, and Embedded Content セクションにある RealmSwift を見つける
- “Do Not Embeded” を “Embed & Sign” に変更する
Realm が提供する Privacy Manifest は、こちらで確認することができます。
(使用は必須ではありませんが、該当部分含めアプリ分を自分で作成することが必要になります)
モデル定義
せっかくなので(?)、モデルを作って 保存するところまで作ってみます。
Fighter という名前で以下の属性値を持つ要素を作成します。
・id(UUID, unique)
・name(String)
・hitPoint(Int)
Realm で上記モデルを定義すると以下のようになります。
import Foundation
import RealmSwift
class Fighter: Object {
@Persisted(primaryKey: true) var id: UUID
@Persisted var name: String = ""
@Persisted var hitPoint: Int = 100
}
詳細は、Realm のドキュメントを確認する必要がありますが、ざっくり説明は以下です。
・RealmSwift を使うために、import する必要がある
・Realm に保存するためのオブジェクトは、Object を継承する必要がある
・オブジェクトとして保存するプロパティは、@Persisted をつける必要がある
・あとから キーとして検索するプロパティは、primaryKey を指定しておくと良い
保存してみる
アプリを作って、要素を作成・保存しようとすると いろいろな UI を作らなければいけないので、UnitTest を使って試してみます。
UnitTest で、RealmSwift を使うためには、UnitTest にも ライブラリとして RealmSwift を追加することが必要です。
- プロジェクトナビゲータでプロジェクトを選択し、TARGETS で UnitTest を選択する
- Build Phases で、”Link Binary With Libraries” で、”+” ボタンを押下し、RealmSwift を追加する
先ほど定義した Fighter を 生成し、Realm に保存するコードは以下です。
//
// RealmNotificationCheckTests.swift
//
// Created by : Tomoaki Yagishita on 2024/09/11
// © 2024 SmallDeskSoftware
//
import XCTest
import RealmSwift
@testable import RealmNotificationCheck
final class RealmNotificationCheckTests: XCTestCase {
@MainActor
func test_create() async throws {
let fighter = Fighter()
fighter.name = "R01"
let realm = try! await Realm()
try realm.write {
realm.add(fighter)
}
print(realm.configuration.fileURL ?? "noFile")
}
}
最後の print 文は、デフォルトで作成された Realm ファイルの位置を表示しています。
自環境では、以下のような位置でした。
file:///Users/<ユーザー名>/Library/Containers/<アプリID>/Data/Library/Application%20Support/default.realm
Realm は、上記のテストを実行するたびに、realm ファイルに要素を “追加” していきます。
3回実行すると要素が3つ追加されるということです。
ファイルを削除してから実行すると、新規ファイルを作成して追加します。
RealmStudio で確認
Realm には、RealmStudio というツールが用意されていて、Realm の保存ファイルを開いて確認/編集することができます。
RealmStudio のページは こちら
使用している OS 向けの RealmStudio をダウンロードして用意してください。
自分がプロジェクトに指定したバージョンに対応する RealmStudio 使用することが必要です。
アプリを立ち上げて、先ほどの print 文で表示されたファイルを開くと、要素が保存されていることが確認できます。
(途中でいろいろと許諾を聞いてきますので、適切に回答してください)
RealmStudio で開くことで、要素が生成されて保存されていることが確認できます。
まとめ
Realm を使ったプロジェクトセットアップを確認しました。
- SwiftPackage(https://github.com/realm/realm-swift) を使用するのが簡単
- 公式では最新版を “Up to Next Major Version” して使用するのが推奨
- Swift で使うだけなら、RealmSwift “のみ” をプロジェクトに追加する
- Realm の Privacy Manifest を使用するなら、”Do Not Embeded” を “Embed & Sign” に変更する
- RealmStudio を使用すると 保存されたファイルの中身を確認できて便利
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
SwiftUI おすすめ本
SwiftUI を理解するには、以下の本がおすすめです。
SwiftUI ViewMatery
SwiftUI で開発していくときに、ViewやLayoutのための適切なmodifierを探すのが大変です。
英語での説明になってしまいますが、以下の”SwiftUI Views Mastery Bundle”という本がビジュアル的に確認して探せるので、便利です。
英語ではありますが、1ページに コードと画面が並んでいるので、非常にわかりやすいです。
View に適用できる modifier もわかりやすく説明されているので、ビューの理解だけではなく、どのような装飾ができるかも簡単にわかります。
超便利です
販売元のページは、こちらです。
SwiftUI 徹底入門
# SwiftUI は、毎年大きく改善されていますので、少し古くなってしまいましたが、いまでも 定番本です。
Swift学習におすすめの本
詳解Swift
Swift の学習には、詳解 Swift という書籍が、おすすめです。
著者は、Swift の初期から書籍を出していますし、Swift の前に主力言語だった Objective-C という言語についても同様の書籍を出しています。
最新版を購入するのがおすすめです。
現時点では、上記の Swift 5 に対応した第5版が最新版です。
Sponsor Link