Kotlin Multiplatform (KMP) の使い方やお勧めのライブラリの紹介
概要
先日、K2コンパイラを搭載したKotlin2.0がリリースされました。 K2コンパイラは、根本からマルチプラットフォームに対応し、コンパイル速度を 2 倍に高めるようです。
この記事では Kotlin Multiplatform (KMP) の使い方やお勧めのライブラリを紹介します。
Kotlin Multiplatform プロジェクト作成
以下のウィザードでプロジェクトを作成します。
https://kmp.jetbrains.com/ (opens in a new tab)
チュートリアル
公式の以下のチュートリアルが参考になります。
- Get started with Compose Multiplatform — tutorial (opens in a new tab) (Compose Multiplatform のサンプル)
- Create a multiplatform app using Ktor and SQLDelight (opens in a new tab) (Compose Multiplatform は使っていないが、実践的なサンプル)
ナビゲーション
ナビゲーションライブラリはVoyager (opens in a new tab)を利用するのがお勧めです。タブナビゲーションなども実装出来ます。
また、Compose Multiplatform 1.6.10-beta01 から実験的にナビゲーションライブラリが追加されたので、そちらの方法でやることもできます。
参考: Navigation and routing (opens in a new tab)
アイコン
androidx.compose.material.icons (opens in a new tab)に用意されているアイコンであれば、以下のように使用できます。
Icon(Icons.Default.PlayArrow, contentDescription = "play")
画像が用意されていない場合は、commonMain/composeResources/drawable
ディレクトリ以下に、vector形式のxmlを配置すれば使用できます。
vector形式のxmlは以下の方法で作成できます。
- AndroidStudioで androidMain/res/drawable ディレクトリを右クリック > New > Vector Asset
- Asset Typeを Clip Artにして、適当なClip Artを選択して作成する。
- xmlファイルが作成されるので、commonMain/composeResources/drawable 以下に移動する。
そして、以下のように使用します。
Icon(painterResource(Res.drawable.text_to_speech), contentDescription = "text_to_speech")
ファイル操作
Okio (opens in a new tab)を使うとsharedからファイルの操作が可能です。 zipの解凍も可能ですが、zip圧縮はできません。
ネットワーク
ネットワークライブラリは、チュートリアル (opens in a new tab)でも紹介されている Ktor (opens in a new tab)一択です。
データベース
将来性はGoogle製のRoom (Kotlin Multiplatform) (opens in a new tab)が一番あると思いますが、まだalpha版なので致命的なバグが残っています。 以下は、ARM32 のAndroid端末でクラッシュするバグで、私が発見して報告しました。
BundledSQLiteDriver: couldn't find "libsqliteJni.so" (opens in a new tab)
少なくともこのバグが直ってからでないと、本番環境でリリースすることは出来ません。 2024/6/13追記: 2.5.0-alpha04 (opens in a new tab)で修正されました。
枯れたライブラリを使いたい場合は、チュートリアル (opens in a new tab)でも使われているSQLDelight (opens in a new tab)を使うのが良いと思います。
SharedPreferences, NSUserDefaults
私は russhwolf/multiplatform-settings (opens in a new tab) というライブラリで共通化しています。
© 品川アプリ.RSS