このプロジェクトについて
# Realmデータベースについて
Realmは、スマートフォン、タブレット、ウェアラブル端末内で直接動作するモバイルデータベースです。このリポジトリには、iOS、macOS、tvOS、watchOS向けのRealm SwiftおよびRealm Objective-Cのソースコードが含まれています。
## Realmを使う理由
* **開発者にとって直感的:** Realmのオブジェクト指向データモデルは学習が簡単で、ORMを必要とせず、より少ないコードで記述できます。
* **モバイル向けに設計:** Realmはフル機能を備えつつ軽量で、メモリ、ディスク容量、バッテリー寿命を効率的に使用します。
* **オフライン利用向けに設計:** Realmのローカルデータベースはデータをディスクに永続化するため、アプリはオンラインと同様にオフラインでも動作します。
## オブジェクト指向: コードを合理化
Realmはモバイル開発者向けに、シンプルさを念頭に置いて構築されました。慣用的なオブジェクト指向データモデルにより、数千行のコードを節約できます。
```swift
// 通常のSwiftクラスのようにモデルを定義
class Dog: Object {
@Persisted var name: String
@Persisted var age: Int
}
class Person: Object {
@Persisted(primaryKey: true) var _id: String
@Persisted var name: String
@Persisted var age: Int
// Objectフィールドを別のクラスに指すことでリレーションシップを作成
@Persisted var dogs: List<Dog>
}
// 通常のSwiftオブジェクトのように使用
let dog = Dog()
dog.name = "Rex"
dog.age = 1
print("name of dog: \(dog.name)")
// デフォルトのRealmを取得
let realm = try! Realm()
// 書き込みトランザクションで簡単にデータを永続化
try! realm.write {
realm.add(dog)
}
```
## ライブオブジェクト: リアクティブアプリを構築
Realmのライブオブジェクトは、どこかで更新されたデータが自動的にすべての場所で更新されることを意味します。
```swift
// デフォルトのrealmを開く。
let realm = try! Realm()
var token: NotificationToken?
let dog = Dog()
dog.name = "Max"
// realmに犬を作成。
try! realm.write {
realm.add(dog)
}
// リスナーを設定し、オブジェクト通知を監視。
token = dog.observe { change in
switch change {
case .change(let properties):
for property in properties {
print("Property '\(property.name)' changed to '\(property.newValue!)'");
}
case .error(let error):
print("An error occurred: (error)")
case .deleted:
print("The object was deleted.")
}
}
// 犬の名前を更新して効果を確認。
try! realm.write {
dog.name = "Wolfie"
}
```
### SwiftUI
RealmはSwiftUIと直接統合され、ビューを自動的に更新するため、手動での更新は不要です。
```swift
struct ContactsView: View {
@ObservedResults(Person.self) var persons
var body: some View {
List {
ForEach(persons) { person in
Text(person.name)
}
.onMove(perform: $persons.move)
.onDelete(perform: $persons.remove)
}.navigationBarItems(trailing:
Button("Add") {
$persons.append(Person())
}
)
}
}
```
## 完全暗号化
データは転送中および保存時に暗号化でき、最も機密性の高いデータでも安全に保たれます。
```swift
// ランダムな暗号化キーを生成
var key = Data(count: 64)
_ = key.withUnsafeMutableBytes { (pointer: UnsafeMutableRawBufferPointer) in
guard let baseAddress = pointer.baseAddress else {
fatalError("Failed to obtain base address")
}
SecRandomCopyBytes(kSecRandomDefault, 64, baseAddress)
}
// 設定に暗号化キーを追加し、realmを開く
let config = Realm.Configuration(encryptionKey: key)
let realm = try Realm(configuration: config)
// 通常通りRealmを使用
let dogs = realm.objects(Dog.self).filter("name contains 'Fido'")
```
## はじめに
Realmは、Swift Package Manager、CocoaPods、Carthage、または動的XCFrameworkのインポートによりインストールできます。
詳細については、[クイックスタート](docs/guides/quick-start.md)を参照してください。
## ドキュメント
ドキュメントは[docs/](docs/README.md)ディレクトリにあります。
APIリファレンスは、このリポジトリのルートから`sh build.sh docs`を実行することで、[jazzy](https://github.com/realm/jazzy/)を使用してソースから生成できます。
## サポート
- **コードについてのヘルプが必要ですか?**: Stack Overflowで[`realm`タグ](https://stackoverflow.com/questions/tagged/realm?sort=newest)の過去の質問を検索するか、[新しい質問](https://stackoverflow.com/questions/ask?tags=realm)を投稿してください。Stack Overflowには広すぎる一般的な議論については、[コミュニティフォーラム](https://developer.mongodb.com/community/forums/tags/c/realm-sdks/58/swift/)を使用してください。
- **バグを報告しますか?** [GitHub issueを開いてください](https://github.com/realm/realm-swift/issues/new)。可能であれば、Realmのバージョン、完全なログ、Realmファイル、問題を示すプロジェクトを含めてください。
- **機能リクエストがありますか?** [GitHub issueを開いてください](https://github.com/realm/realm-swift/issues/new)。機能が何をすべきか、なぜその機能が必要なのかをお知らせください。
## Realmのビルド
コンパイル済みバージョンを使用したくない場合は、ソースからRealmを自分でビルドできます。
前提条件:
* RealmのビルドにはXcode 15.3以降が必要です。
* Realmドキュメントのビルドには[jazzy](https://github.com/realm/jazzy)が必要です。
必要な前提条件がすべて揃ったら、Realmのビルドは`sh build.sh build`の単一コマンドだけで完了します。初回ビルド時にコアバイナリをダウンロードするため、インターネット接続が必要です。これにより、`build/Release/`にRealm.xcframeworkとRealmSwift.xcframeworkが生成されます。
実行可能なすべてのアクション(ios/osxのビルド、ドキュメント生成、テストなど)を確認するには、`sh build.sh help`を実行してください。
## 貢献
詳細については、[CONTRIBUTING.md](CONTRIBUTING.md)を参照してください。
## 行動規範
このプロジェクトは[MongoDB行動規範](https://www.mongodb.com/community-code-of-conduct)に準拠しています。参加することにより、この規範を守ることが期待されます。受け入れがたい行動は[community-conduct@mongodb.com](mailto:community-conduct@mongodb.com)に報告してください。
## ライセンス
Realm Objective-CおよびRealm SwiftはApache 2.0ライセンスのもとで公開されています。Realm CoreもApache 2.0ライセンスのもとで公開されており、[こちら](https://github.com/realm/realm-core)で入手できます。
## フィードバック
**_Realmを使用して満足している場合は、[@realm](https://twitter.com/realm)に言及したツイートを送信して、あなたの考えを共有することを検討してください!_**
**_また、気に入らない場合は、改善してほしい点をお知らせください。修正します!_**
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.