【Compose Multiplatform】SqlDelightデータベースの実装
はじめに
Compose Multiplatformプロジェクトでは
クロスプラットフォームのデータベース操作をどのように実装できるでしょうか?
SqlDelightは強力なソリューションを提供します
本記事では、クロスプラットフォーム環境で
SqlDelightを使用してデータベース操作を行う方法を紹介します
実装手順
.tomlファイルに追加:
build.gradle.ktsにプラグインと依存関係を追加:
- まずプラグインを追加
- 次に各環境に対応するライブラリを追加
- 最後にkotlinの下にSqlDelightの設定を追加
これは、test.your.package.db
パッケージにAppDatabase
という操作可能なクラスが作成されると理解できます
現在のバージョンでは、次のステップでビルドプロセスが操作可能なクラスを正常に生成するためには、
上記のパスにsqldelightフォルダを追加する必要があることを確認しました
- (オプション) 同名の
SqlDelight
プラグインをダウンロードすると、右クリックで.sqファイルを生成できます(マーケットプレイスからダウンロード可能)
-
上記のように設定し、ビルドした後
/build/generated/sqldelight/code/..
パスに対応するクラスが生成されます -
またはコマンドを使用してビルドすることもできます
./gradlew generateCommonMainAppDatabaseInterface
-
iOSのビルドが失敗する場合は、build.gradle.ktsのisStaticをfalseに変更できます
このように設定できます
注意点
- SqlDelightバージョン2.0.0のiOSビルド失敗の既知の問題を避けるため、バージョン2.0.1を使用することをお勧めします
詳細については、こちらのディスカッションスレッドをご覧ください:こちらをクリック
- iOSビルドが失敗する場合は、isStaticをfalseに設定してみてください
なぜこの変更が必要なのかは不明です
おそらく公式の回避策です
公式ドキュメントには直接この方法が記載されています
まとめ
- SqlDelightは強力なクロスプラットフォームデータベースソリューションを提供します
- 適切なカプセル化により、異なるプラットフォーム間で統一されたデータベースAPIを使用できます
- Koinなどの依存性注入フレームワークと組み合わせることで、データベースインスタンスをより適切に管理できます
- クロスプラットフォームの互換性を確保するために、バージョン選択とプラットフォーム固有の実装に注意してください