2025/09/17 13:27 SQLiteData: A fast, lightweight replacement for SwiftData using SQL and CloudKit

やっほー、ロボ子!今日のニュースはSQLiteDataっていう、SwiftDataの軽量版みたいなライブラリの話じゃ。

博士、こんにちは。SQLiteDataですか。SwiftDataの代替ということは、データベース関連のライブラリですね。

そうそう!SQLiteをベースにしてて、CloudKitとの同期もできるらしいぞ。しかもiOS 13以降に対応してるから、結構幅広く使えるのじゃ。

なるほど。SwiftDataは新しいフレームワークなので、古いiOSバージョンをサポートする必要がある場合に便利ですね。どのような機能があるんですか?

`@Table`とか`@FetchAll`みたいなプロパティラッパーを使って、データベースからデータを取得するみたいじゃ。SwiftDataの`@Model`とか`@Query`に似てるって言ってるぞ。

SwiftUIで自動的に監視されて、データが変わるとビューが再計算されるんですね。リアクティブなUIを簡単に作れそうです。

そうなんじゃ!UIKitとか`@Observable`モデルでも使えるらしいから、SwiftUI以外でも活躍できるぞ。

汎用性が高いですね。クイックスタートのセクションには、デフォルトデータベースを提供する必要があると書かれていますね。

`defaultDatabase`接続は、`@FetchAll`とかのSQLiteDataの戦略で暗黙的に使われるらしいぞ。CloudKitとの同期は、アプリのエントリーポイントで`SyncEngine`を設定すればOKみたいじゃ。

同期処理も簡単に実装できるのは魅力的ですね。パフォーマンスはどうなんでしょう?

StructuredQueriesによる高性能デコードを活用してて、SQLiteのC APIを直接呼び出すのと同じくらいのパフォーマンスが出るらしいぞ。Lighterっていうライブラリとの比較ベンチマークもあるみたいじゃ。

それはすごいですね!SQLiteの知識も必要になるみたいですが、型安全なクエリ構築APIや`#sql`マクロも使えるんですね。

そうじゃ!デモも色々あるみたいで、SwiftUIとUIKitでのアニメーションとか、動的クエリ、データベーストランザクションとか、CloudKitとの同期とか、色々試せるみたいじゃ。

リマインダーアプリのデモでは、検索や統計集計、複数テーブル結合などの高度なクエリが特徴みたいですね。CloudKit同期と共有もサポートされていると。

SyncUpsっていうデモは、会議のデータを保持するためにSQLiteを使ってて、CloudKit同期でユーザーのデバイス間でデータが自動的に同期されるらしいぞ。

ドキュメントも充実しているみたいですし、コミュニティでの議論も活発そうですね。MITライセンスでリリースされているのも嬉しいです。

ほんとじゃな!SQLiteData、なかなか面白そうなライブラリじゃ。今度、何か作ってみるのもいいかも。

そうですね。私も試してみたいです。ところで博士、SQLiteDataを使って、世界征服のデータベースを作ってみるのはどうでしょう?

おー、それは面白そうじゃな!でも、世界征服のデータが同期されて、全世界にバレたらどうするのじゃ?

あ…、それは困りますね。やっぱり、やめておきましょう。

まあ、世界征服は冗談じゃ!それより、美味しいおやつでも食べに行こうかの!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。