☕
ロジックを共有し UI は native を利用する
手元でKotlin Multiplatformを動かせる環境を整えつつ、KoinでのDIパターンを調べました。
(十割方リンク集です。)
環境
- macOS Sonoma 14.3.1(23D60)
- Android Studio 2023.11.28
- Xcode 15.2 (推奨環境ではありませんが動作確認も兼ねてこのパージョンにしました。)
- JDK build 21.0.2+13-LTS-58
Kotlin Multiplatformのコードシェア範囲
- Share logic and keep UI native
検証内容
- KoinでのDIパターン
KoinでのDIパターン
- ktor-kmm-sse
ktorを利用する際に例として紹介されるリポジトリです。
commonMainで用意したsharedModule(ktorを利用したクライアントの実装)をandroidMainとiosMainでDIしていました。
- BikeShare
commonMainでViewModelを実装し、ViewModelをandroidのネイティブ実装とiosのネイティブ実装でDIしていました。
(androidMainとiosMainではPlatformモジュールとしてcommonMainでまとめられてました。)
所感
環境構築にかなり時間を使いました。多くのリポジトリを読んだことでkoinを利用したDIの利点として、コードシェア範囲を柔軟に明確に決めることができると感じました。
後述のおまけについて
やはり「Share both logic and UI」の用途の方がリポジトリが多く、koinを利用したプロジェクトの例としてかなり参考になったので載せました。
ktorの利用としてServerのリポジトリも多くあり参考になったので載せました。
おまけ:Share both logic and UI
おまけ2:Koin and ktor Server use
最後までお読みいただきありがとうございました。
Discussion