Hello Compose Multiplatform

Compose Multiplatform 触ってみたくなったので入門する
ちなみにJetpack Composeも含めてほぼ初見、SwiftUIはやったことある程度のレベル
まずはスタート記事
kdoctorの出力を参考にセットアップ加えていく
テンプレは今は生成サイトから作ると良いらしい
ダウンロードされたテンプレからサクッと起動できた。
Android StudioからiOSの起動もできるんだね。
Jetpack Compose自体の知識はこれをつまみ食いしながら追いかける

とりあえずReactのノリでルーティングしたい
Navigationを使うと良いらしい

Jetpack Composeアーキテクチャ事情がよくわからないので読み物としていくつかつまみ食いしたい
(いやMVVMのMは実質MVCのV以外まるっと全部だからそれ以下をどうするかなんだよーー)ChatGPTに聞いてみた
- 公式的にはMVVMが推奨される
- 他には MVI (Model-View-Intent) や Unidirectional Data Flow (UDF) などがある
- さらにMVIの亜種としてReduxを挙げてきた
- なんだかMVI見覚えあるな
- MVVMのMが雑の点について聞いたら、小中規模なら Repository + UseCase + ViewModel で十分で、大規模ならClean Architectureがよいって言っていた。

さすがにPreviewないとつらいので、使う方法を調べた。
InteliJ IDEA EAP 251 ならできるらしい。
ただInteliJ IDEAで開くだけだとうまくいかなかったのでプラグインインストールとか。
JDKは入れずとも、プラグインのインストールとSDKの不足インストールが終われば、あとはGradle Syncでいけた。

設定値の保存
Platformにこれのプロパティを足しておいてそこから取る。

これはなるほどってなった

DIはJetpackではHiltというのが推奨されているとのこと
ただこれはAndroidでしか使えないので、pure KotlinのKoinを使う。

ライセンス表示を作る方法

iOSのVoiceOver対応は別途なんかやらんといけないかも。

ひとまず目標としていたところまでは到達できたのでこのページはいったんクローズ。
Compose Multiplatformというよりも、Jetpack Composeの入門ができて、雰囲気で読んでいたAndroidの実装がちゃんとできそうな印象になったのが大きな収穫だった。
Xamarin.Formsを触ったときのようなモヤモヤ感もなく、普通にiOSでも動いてくれたのも印象深い。
Flutterも試したけど、よりネイティブAPIに近いので個人的にはKotlin Multiplatformの方が良いというのを再確認した。