前回
前回では見た目を作ってみました。
はじめに
前回までの章で作ったシンプルなTodoアプリのデータをDBに保存して安全に保ちたいのと、データ分析処理を行いたいのでバックエンドに接続したいです。
ただ、無限に選択肢があるので、検討した全てを書きます。
調査
Firebaseは使えるか?
色々あるけど、Firestoreで実装できたら楽ですね。
ネイティブから直接DBにアクセスできるし、トリガーでfunctionsを呼んでデータ分析を行ったり便利ですからね。
良いライブラリはある?
現状のcompose multiplatformの状況から確認するとKotlinでFirebaseの接続をサポートするライブラリはあります。
これですね。
ただ、これってDesktopで使えるとは書いてあるものの、少し怪しいです。
ここの会話を見ると、これはnativeのFirebase SDKsのwrapperであり、java client sdk for firebaseがないらしいんですよねぇ。もしやりたかったらRESt APIを直接叩けとのこと。
どうなんだろう、実装してから動かなかったら無駄足になっちゃうのでライブラリをちょっとみてみましょう。
READMEを見たら英語だったので
ChatGPTに
上記のREADMEの中でcompose multiplatformのデスクトップアプリへの対応状況について書かれている箇所を抜き出して、解説お願いします。
と聞いてみたら以下のような回答をいただきました。
このREADME文書の中で、Compose Multiplatformのデスクトップアプリケーションへの対応状況に関する記述は、Firebase Kotlin SDKが多様なプラットフォームをサポートしていることを強調しています。具体的には、Firebase Kotlin SDKが「Kotlin-first」のアプローチを採用し、FirebaseをAndroid、iOS、デスクトップ、ウェブ向けの共通ソースコードから直接使用できるようにしている点です。
Compose Multiplatformへの言及は、このSDKがFirebaseをCompose Multiplatformプロジェクトのバックエンドとして使用できることを示唆しています。Compose Multiplatformは、異なるプラットフォーム(Android、デスクトップ、ウェブなど)で共通のUIコードを使用できるJetBrainsのフレームワークです。Firebase Kotlin SDKの多様なプラットフォームサポートにより、開発者はCompose Multiplatformを使用して作成したデスクトップアプリケーションにFirebaseの機能を統合しやすくなっています。
このREADMEには、Compose Multiplatformを利用した具体的な実装例やデスクトップアプリケーションへの具体的な対応状況についての詳細は記載されていませんが、Firebase Kotlin SDKの多様なプラットフォーム対応が、デスクトップアプリケーションの開発において有用であることを示唆しています。
一応ソースコードを見ると
今回使うFirestoreと今後使うFirebase authenticationの箇所は
firebase-auth/src
firebase-firestore/src
ですね。
その下にはjvmTestはありますね。
ということはデスクトップにも対応していそう?
でもjvmMainはないなぁ。
ってことは、対応していない?
と思って、それぞれのライブラリをみていたら普通に対応プラットフォームのことが書いてありました。
https://central.sonatype.com/artifact/dev.gitlive/firebase-firestore/1.10.4?smo=true#:~:text=common%20source%20targeting-,iOS%2C%20Android%20or%20JS.,-Snippets
desktopアプリには対応していないようですね。残念。
まぁAndroidとiOSのためにこのライブラリを利用して、Desktopは別のコードで実装しても良いのですが
今回はcompose multiplatformのチュートリアルなので全部一つのコードで実装したいです。
HTTPリクエストすることは可能ですが、一度Firebaseでの実装は考えないでおきます。
Supabaseは使えるか?
最近、私の中で評価が高いSupabaseも見にいきます。
ほぼfirebaseと同じことができるのでsupabaseでも良いです。
良いライブラリはあるか?
ありましたー!
https://github.com/supabase-community/supabase-kt/tree/master/Postgrest
しかも全てのプラットフォームに対応している!
最高ですね。
ドキュメントもしっかりしている。
Supabaseでいきましょう!
結論
compose multiplatformで、AndroidとiOS以外のプラットフォームに対応するならバックエンドはsupabase!
次
次の記事はsupabaseの準備です。