【Kotlin】Compose Multiplatform 1at TECH
【Kotlin】Compose Multiplatform 1 - 暇つぶし2ch1:デフォルトの名無しさん
24/06/20 23:47:17.52 vbElSNSS.net
iOS、Android、デスクトップ、Webに対応したUIフレームワークで手軽にアプリを作りましょう!
・各種プラットフォーム間でコードを共有可能
・宣言型UIによる最大100%のコードベース
・Kotlin Multiplatform (KMP) & Jetpack Composeベース

2:デフォルトの名無しさん
24/06/20 23:47:44.97 vbElSNSS.net
公式
URLリンク(www.jetbrains.com)

3:デフォルトの名無しさん
24/06/20 23:57:21.20 wkeLzLVS.net
KMP対応Composeライブラリ一覧
URLリンク(github.com)

4:デフォルトの名無しさん
24/06/21 04:25:54.59 jKJT7aI8.net
これってなんなの?GUI部分しか作れないの?

5:デフォルトの名無しさん
24/06/21 06:37:17.02 XqVI1f39.net
ビジネスロジック、GUIともにKotlinでコードを書けるよ

6:デフォルトの名無しさん
24/06/21 07:04:42.89 Atsq9vif.net
Kotlinは書いてて楽しいからすき

7:デフォルトの名無しさん
24/06/21 07:21:00.38 Rhs7e8T4.net
Jetpack Composeやってるけど特に状態まわりでFlutterより書きやすい

8:デフォルトの名無しさん
24/06/21 07:34:20.22 6EoJ4PVu.net
お、ついにComposeのスレが立ったか!
みんなKotlinのComposeやろうぜ!!

9:デフォルトの名無しさん
24/06/21 07:53:39.59 59+ROyU+.net
うおおおやるか

10:デフォルトの名無しさん
24/06/24 02:08:16.72 LPHYNtWT.net
Kotlin Fest 2024のメモまとめ
URLリンク(qiita.com)

11:デフォルトの名無しさん
24/06/29 11:04:50.57 CFjt49h3.net
久しぶりに調べたけど
DataStore,RoomやLifeCycleやViewModelもKMPいけるのか?
NavigationもJetbrainsから出るの?
そろそろ感じやな

12:デフォルトの名無しさん
24/06/29 21:55:39.44 ootEijyj.net
SQLiteに関してはSQLDelightはちょっと使いにくいと感じてたからRoomのKMP対応は素直に嬉しい
あと最新SQLite3.46.0バイナリを同梱したドライバを泥のRoomで使えるようになったからON CONFLICTとかを書けるようになって便利

13:デフォルトの名無しさん
24/06/30 11:47:30.99 V38GczC3.net
クライアントアプリのORMはRoomみたく
FlowみたくDBをwatchする機能ないとつらいよな
たいていリアクティブにつくってるからな
つか、最新のしたら大量アイテムのリストのスクロール
かなり速くなってるけど
デバッグ時はクソ重くてつらい
プロファイルリリースだと速いが

14:デフォルトの名無しさん
24/06/30 12:16:20.73 V38GczC3.net
ナビゲーションをまじめにやろうとしてるけど
どすればいいんだ?
Androidの場合、Activityと便利なサブコンポーネントFragment
でそろぞれ、バックスタックがあって作りやすいけど
Flutterの場合もナビゲーションをネストすれば画面とそのFragmentに
あたるWidgetそれぞれでバックスタックあってナビゲーヨンできるけど

15:デフォルトの名無しさん
24/06/30 12:38:20.77 V38GczC3.net
Androidの場合、ViewModelをActivityやFragmentにそれぞれ結びつけることで
UIの状態の管理が楽だったけど同じようにやりたい
まずActivityに相当するコンポーザブルにそれぞれViewModel結び付けて
さらにFragmentに相当するコンポーザブルにもそれぞれViewModel結び付けて
管理したい
でも例えば
URLリンク(zenn.dev)
だと、1Activity内で画面切り替えてるだけだからViewModelのスコープが望ましくない

16:デフォルトの名無しさん
24/06/30 13:17:38.17 0SycvWcc.net
androidx.lifecycle.viewmodel.composeのviewModel()を使えばコンポーザブルの中でViewModelを宣言できるようになる

17:デフォルトの名無しさん
24/06/30 13:32:40.23 0SycvWcc.net
コンポーザブルの中で画面ごとにViewModelを宣言しちゃうなんてライフライクル管理は大丈夫なの?っていう疑問はあると思うけど、ちゃんと
androidx.navigation:navigation-compose
がきっちり解決してくれてる
蛇足だけど内部実装ロジックについては
「navigation-compose は ViewModel のライフサイクルをどう管理しているのか」
URLリンク(y-anz-m.blogspot.com)
の解説記事が参考になる

18:デフォルトの名無しさん
24/06/30 13:33:32.26 V38GczC3.net
つか、そもそもなぜAAC ViewModelを使いたいのかというと画面回転などの構成変更
でもUIの状態を保持できるからなんだけどそれは基本従来のViewベースのときに
Activityを再作成するからだよね
Jetpack Composeベースの時は基本、画面回転でもActivity再作成しないから
別にViewModel使う必要ねぇのか..
壮大な勘違いをしていたかも

19:デフォルトの名無しさん
24/06/30 13:35:59.53 V38GczC3.net
>>17
解説記事読んでみます

20:デフォルトの名無しさん
24/06/30 13:36:45.55 0SycvWcc.net
>>18
画面回転したら再生成されちゃう
rememberSaveable使えばいけるけど面倒くさいから結局ViewModel使うかってなる

21:デフォルトの名無しさん
24/06/30 13:44:53.22 V38GczC3.net
>LocalViewModelStoreOwner には MainActivity ではなく NavBackStackEntry が入っていることがわかりました。
あぁ、なるほど
navigation-compose使うとViewModelがMainActivityではなくNavBackStackEntryに紐づくのではないのですね
大変参考になりました

22:デフォルトの名無しさん
24/06/30 13:49:03.15 V38GczC3.net
>>20
ごめんなさい。間違ってました。
今、新規の空のCompose Empty Activity作ってマニュフェストのActivityの設定みたら
android:configChangesに何も設定されていませんでしたね
てっきり、ここにorientationとか設定されているのかと思いました

23:デフォルトの名無しさん
24/06/30 14:27:03.12 V38GczC3.net
>NavBackStackEntryに紐づくのではないのですね
NavBackStackEntryに紐づくのですね

24:デフォルトの名無しさん
24/07/05 10:54:08.96 OeiRQJMt.net
Room絡みのKMP対応が進んでるけど
それにあわせてSqlDriver?
これでBundledDriverみたいなのあるけど
これってKMPじゃなくて普通のAndroidプロジェクトでも使えるのかな?
普通のAndroidプロジェクトでも最新のSqlite使いたい

25:デフォルトの名無しさん
24/07/05 14:41:50.48 4QgwhxP+.net
>>24
使えるで
URLリンク(qiita.com)
この記事はRoomでBundledSQLiteDriverしてUPSERT使っててGitHubに泥アプリのサンプルあげてるみたい

26:デフォルトの名無しさん
24/07/05 20:29:17.42 OeiRQJMt.net
>>25
おお、ありがとう
そのついでにBundled版だけでいいからSqliteのウンコ実装も治ってくれると
いいんだが
巨大なBlob挿入するとBlobTooBigExceptionみたいな例外でたり(2MBまで?)
CursorWindowとか勝手に内部でページングしてひどいことしてる
ほんとうにひどい実装になってるからな

これはandroidのプロセス間通信の制限かなんかでなってるのかしらんが

27:デフォルトの名無しさん
24/07/08 20:01:44.64 2ykBkBhu.net
Model層ではFlow使って、ViewModelではStateを使ってるけど
ViewModelのStateとFlowを合成したいんだけどStateってどうやってListenするの?
もしくはStateをFlowに変換できませんか?
class ViewModel {
 var state by mutableStateOf()
 fun watch() {
  // stateの変化をリッスンしてモデル層のFlowと合成してcollectしたい
 }
最初からStateFlowを使えばいいのかもしれんが、なるべくViewModelではStateで統一したい

28:デフォルトの名無しさん
24/07/08 20:22:25.79 2ykBkBhu.net
つか、ちょっと気になった
class HogeViewModel {
 @set:JvmName("privateSetHogeState")
 var hogeState by mutableStateOf
  private set //
 fun setHogeState(newValue)
  // validationなどのロジック
  hogeState = newValue
 }
}
名前がぶつかるんだな..
ということでアノテーションつけたけど
これJvm依存か?

29:デフォルトの名無しさん
24/09/23 22:23:25.10 oqrINLn7.net
derivedStateOfに関する記事、オーバーヘッドが大きいことなど書かれてて興味深い
How derivedStateOf works: a deep d(er)ive
URLリンク(blog.zachklipp.com)

30:デフォルトの名無しさん
24/09/25 22:51:12.35 5Vhwl/nZ.net
Composeの動画みるとクリーンアーキテクチャばかりつかってるけど
クリーンアーキテクチャがそんなおすすめなの?

31:デフォルトの名無しさん
24/09/26 11:43:08.40 cTJXoivB.net
>>30
クリーンアーキテクチャは
・テストしやすい
・認知されていて誰が見てもわかりやすい
からチーム開発のプロジェクトで人気のアーキテクチャだね
ComposeならクリーンアーキテクチャのMVVMが主流、最近はMVVMのViewModelをPresenterに置き換えたMVPも注目されてる
参考
・クリーンアーキテクチャMVVMのアプリ
URLリンク(github.com)
・クリーンアーキテクチャMVPのアプリ
URLリンク(github.com)

32:デフォルトの名無しさん
24/09/26 21:37:18.69 zQWFDqrj.net
URLリンク(qiita.com)
ほう

33:デフォルトの名無しさん
24/09/26 22:10:51.19 cTJXoivB.net
>>32
いい感じね

34:デフォルトの名無しさん
24/10/16 20:52:08.67 mtIOo0k6.net
CMP 1.7.0きたね

35:デフォルトの名無しさん
24/10/18 22:21:01.68 vKy5WG2W.net
デスクトップのドラッグ アンド ドロップできるようになるのか

36:デフォルトの名無しさん
24/10/19 09:36:06.80 PrnduITI.net
デスクトップ向け配布ってどうなるのこれ
Javaが必要なんだろ
巨大でいいから.netみたく1パッケージでできるのかな

37:デフォルトの名無しさん
24/10/19 10:43:52.14 tkdgpds2.net
デスクトップアプリなら、
CMPで用意されてるgradleコマンドのpackageDistributionForCurrentOS、
あるいはJava標準のjpackageでいけるで
ちゃんとJavaランタイムを同梱した実行可能形式でビルドしてくれる

38:デフォルトの名無しさん
24/10/19 11:00:27.57 PrnduITI.net
できるのか
ありがとう
デスクトップアプリを作りたいんだがずっと漂流してて
Flutterはマルチウインドウがまだだし、キーボードフォーカスとか微妙というか変というか
その点Composeの方が新しいからもっと微妙かもしれんけど

39:デフォルトの名無しさん
24/10/19 13:33:04.37 tkdgpds2.net
>>38
Flutterのことはよく知らないけど、
ComposeのデスクトップはJavaのSwingの上にComposeをグラフィックする仕組みで動いてるから、
ウィンドウまわりはかなり安定してるよ
JavaのSwingはJavaで昔からよく使われてきたデスクトップアプリ向けフレームワークね

40:デフォルトの名無しさん
25/01/17 22:39:39.55 EniXNQz7.net
これは期待

Support multiplatform BackHandler/PredictiveBackHandler. #1771
URLリンク(github.com)

41:デフォルトの名無しさん
25/01/25 16:23:27.78 uQrxkE+r.net
マルチプラットホームで予測型戻るジェスチャが使えるようになるんけ

42:デフォルトの名無しさん
25/02/14 07:40:09.72 NkJp8mwO.net
アルファ版きちゃー

compose multiplatform 1.8.0-alpha03

43:デフォルトの名無しさん
25/02/14 07:40:45.00 NkJp8mwO.net
>>42一応リンク
URLリンク(github.com)

44:デフォルトの名無しさん
25/02/14 11:17:50.64 iwocV+lv.net
ロードマップからなんか遅れてるよな

45:デフォルトの名無しさん
25/02/14 13:36:34.18 ZSXOxhZn.net
予測型戻るジェスチャ機能の追加されたバージョンが出たのか

46:デフォルトの名無しさん
25/02/21 14:59:59.28 jOnV3c4B.net
iOS向けで、
CMPにおいて戻るジェスチャーが標準でiOSネイティブライクな感じになるようだ
着々とiOSへの対応が公式側で進んでる

Implement iOS default NavHost transition animation close to native. #1861
URLリンク(github.com)

47:デフォルトの名無しさん
25/02/22 09:43:36.74 obzCo2Dh.net
CMPでホットリロードを可能にするツールを開発中とのこと
すばらしい

URLリンク(github.com)
URLリンク(github.com)

48:デフォルトの名無しさん
25/02/22 10:26:57.78 snifUi+R.net
超期待

49:デフォルトの名無しさん
25/02/22 14:22:25.72 s8vQEMuz.net
flutterはmacrosでズッコケたからな

50:デフォルトの名無しさん
25/04/26 11:36:35.34 4Jf0lHWD.net
地味アップグレードきたな

51:デフォルトの名無しさん
25/07/01 10:15:12.87 1KZwEDte.net
JetbrainsのCompose MultiplatformとAndroidX Jetpack Composeの統合がついに開始されたね
例えばJetpack Composeのruntimeは統合が完了してクロスプラットフォーム対応になった

52:デフォルトの名無しさん
25/07/01 19:20:22.36 j9smP3T2.net
具体的に何するの?

53:デフォルトの名無しさん
25/07/01 19:21:56.74 j9smP3T2.net
ごめん。例えばって書いてあったね。

54:デフォルトの名無しさん
25/08/08 06:52:11.68 Fdw9apw5.net
ComposeにRetainScopesっていうViewModelのライフサイクルを継承したremember関数が実装されるもよう

URLリンク(android-review.googlesource.com)
`retain { }` API を追加
このCLは、Composeランタイムに`retain { ... }を追加します。
再コンポジションをまたいで値を保持するという点でRememberに似ていますが、保持された値はコンポジション階層の破棄と再作成後も保持できます。これにより、ViewModelやFragmentと同様のスコープが実現されます。

55:デフォルトの名無しさん
25/08/08 11:21:09.01 7cylvkQs.net
これはQtの対抗馬になりうるの? まだ発展段階だよね
これじゃなくてKotlin/nativeでGUI使うのに成功した人いる?

56:デフォルトの名無しさん
25/08/08 19:12:05.27 1+ZsQpkg.net
QtはUIライブラリがショボいからな

57:デフォルトの名無しさん
25/08/13 09:41:09.21 pILUZJEv.net
Kotlin/NativeでComposeのGUIを作製できる対象プラットフォームはいまのところiOSのみで先日安定版に到達した
ComposeのGUIの各プラットフォームでのKotlin/Nativeへの対応はiOSを除けばJVMベースで対応可能ということで後回しになっている

一応、ComposeのGUIを描画するSkiaのKotlinラッパーライブラリのskikoの各プラットフォームでのKotlin/Nativeへの対応はAndroidを除いて完了しているからComposeのGUIは脱JVMへの舵をきれる状態ではある

そのうえで、クロスプラットフォーム対応のGUIフレームワークはどれも一長一短なので、Qt、Compose、Flutter、ウェブ系など好みのものを使えば良い

ただしKotlinで開発するうえで直面していたIDEの選択肢が少ない問題はKotlin LSPのVSCode対応により解決する見込みである

58:デフォルトの名無しさん
25/08/13 14:04:11.88 OAhd0lCG.net
KMPはNativeで今のところ共有できないやろ?

Flutterなら例えば複数のOSで同じ共有ライブラリ使えるならFFI経由で共通に出きるけど

59:デフォルトの名無しさん
25/08/13 14:34:25.64 pILUZJEv.net
>>58
JNIを経由すればよい
公式のSQLiteのKMP実装が参考になる
URLリンク(github.com)

60:デフォルトの名無しさん
25/08/13 15:38:02.61 OAhd0lCG.net
JNIってJVM環境でないiOSでつかえるのかね..

Flutterならandroidだとうがiosだろうが直接ネいティブの共有ライブラリ呼べるし楽

61:デフォルトの名無しさん
25/08/13 15:44:50.61 OAhd0lCG.net
もちろんそんなケース稀かもしれんが
dartならFFIで直接共有ライブラリ関数にバインドできて
c言語介さず呼べるし(osごとのライブラリ名ぐらいは調整して)

dartで最大の不満だった共有メモリマルチスレッドできないのも実験が進んでるっぽいし

62:デフォルトの名無しさん
25/08/13 15:51:08.49 OAhd0lCG.net
UIフレームワーク自体はComposeのほうがいいけど
デフォルトでstateクラスがあって、極力
状態の管理を外だしと徹底してる(例えばメニューの表示/非表示も自分で制御)

63:デフォルトの名無しさん
25/08/13 15:58:07.01 OAhd0lCG.net
>Kotlin/Nativeへの対応はAndroidを除いて完了しているからComposeのGUIは脱JVMへの舵をきれる状態ではある
ここは期待したいけど
そもそもandroidアプリはデフォルトがJVM環境だから脱しなくてもいいけど
デスクトップ向けでJVM要求されるのがうっとおしい

64:デフォルトの名無しさん
25/08/13 18:30:40.15 pILUZJEv.net
KMPに関することでありComposeとかけ離れた話になってるからKotlinスレで議論したほうがよいのでしょうけど一応

>>60,61
・59ではJNIによるラップをCで書いているがこれ自体をCではなくKotlin/Nativeで書くことも可能
・Kotlin/Nativeはcinteropを書いて
URLリンク(github.com)
ヘッダーファイルのC関数をKotlinで直接呼べる
URLリンク(github.com)
>>63
・KMPでJVM向けアプリケーションを実行形式にビルドするとJavaランタイムを同梱してくれるのでアプリケーションの利用者にJVM環境を求めない

これでよかったでしょうか
ComposeやKMPのことで他に疑問があれば答えられます

65:デフォルトの名無しさん
25/08/13 19:12:56.84 pILUZJEv.net
>>64に追記で、
JNIによるラップをKotlin/Nativeで書くことができるので、
Cコードの呼び出し等をnativeMainで書いて、それをjniMain(各自命名)で継承し、
そこでnativeMainのKotlin/NativeコードをJNIラップしてやればよい
こういったテクニックを駆使すればC呼び出しを含むコードでも十分に共通化できる

66:デフォルトの名無しさん
25/08/14 17:44:14.36 g00bnU7h.net
1.9キター
ってロードマップ更新しろよ

67:デフォルトの名無しさん
25/08/14 22:45:55.02 mhSblWPk.net
1.9で追加されたrememberSerializableが便利だ

68:デフォルトの名無しさん
25/08/18 19:15:11.61 Gfjo7mYU.net
今年もDroidKaigiの季節がやってきたね
今年もViewModel不採用のアーキテクチャ
URLリンク(github.com)

69:デフォルトの名無しさん
25/08/18 19:40:31.95 /HMywgCQ.net
MVVMでいいと思う
最大の問題は大きなメリットもないのにflutterとかUIフレームワークごとに
別のアーキテクチャ覚えさせるの?
まさしく時間の無駄だし

70:デフォルトの名無しさん
25/08/19 00:25:37.02 9Ur9ADeh.net
>>69
68のはMVVMを捨ててReactでよく使われるようなMVPに近づけて、むしろWeb系フレンドリーを目指してるから受け入れられやすい

71:デフォルトの名無しさん
25/08/19 00:33:32.73 9Ur9ADeh.net
世界で一番多いフロントエンジニアはWeb系だからそれらの書き方に似せるのは賢いなと思った

72:デフォルトの名無しさん
25/08/19 08:08:45.09 9Ur9ADeh.net
>>69
追記で
ComposeフレームワークはUIレンダリングとしての役割のほかに状態管理ランタイムとしての役割も有していて
ViewModelによる状態管理がComposeフレームワーク上で不要なのではと言われている
参考記事
URLリンク(zenn.dev)

具体的には
Composeアプリ開発におけるViewModelはandroidx.lifecycle.ViewModelライブラリとしての独自の特殊なライフサイクルを有していて
Composeと異なるライフサイクルのため
ViewModelとComposeのそれぞれで状態管理をしていて状態の保持が点在する問題があって
この問題を解決するためにViewModel自体をComposableに書き直してしまおうとなり
それならViewModelよりPresenterで状態管理するほうが自然に書けるねってなった

ComposeではAndroidにおけるアクティビティの再生成による状態のリセットの特殊性が健在でFlutterとは事情が異なる

73:デフォルトの名無しさん
25/08/19 15:40:18.83 9Ur9ADeh.net
droidkaigi2025デスクトップアプリを起動してみたがボトムバーがiOS26のタブバーのような見た目だ
今後はこういうフローティングバーが流行るのだろうか
URLリンク(i.imgur.com)

74:デフォルトの名無しさん
25/08/19 15:42:19.75 OfjY9UJ1.net
material expressiveのフローティングツールバーでしょ

75:デフォルトの名無しさん
25/08/19 20:55:56.18 9Ur9ADeh.net
それはツールバーっしょ
m3exressiveのナビゲーションバーはドックのしかない

76:デフォルトの名無しさん
25/09/02 23:42:25.29 BG74jSL6.net
たまたまiOSライクなフローティングタブバーのComposeの実装例を見つけたから貼っとくぞ
URLリンク(github.com)
URLリンク(raw.githubusercontent.com)

77:デフォルトの名無しさん
25/09/06 12:49:25.12 fnthT/PT.net
普及なかなか進んでないな

78:デフォルトの名無しさん
25/09/06 13:14:37.72 rmxBGTZh.net
AmazonがComposeを好んで一部製品に使ってアピールしてるから、普及はこれからな気もする
ReactNativeで良い感は否めないけど

79:デフォルトの名無しさん
25/09/13 16:45:04.92 suFi3JuE.net
>>78
何に使ってるの?

80:デフォルトの名無しさん
25/09/13 21:35:32.73 bqa2q9pe.net
>>79
URLリンク(amzn.github.io)

81:デフォルトの名無しさん
25/09/14 20:47:10.07 GM0TlpuE.net
>>80
なるほどねー

82:「肉」語源は「人」が2つ入っており「人肉」
25/09/16 11:26:53.93 1AtlUxAK.net
「クライシスアクター」「宮本晴代」「豊島保養所」「ケムトレイル」「マグナBSP」「アドレノクロム」←画像検索&拡散!!
「ムサシ 不正選挙」←要検索!!!ちなみにアメリカは「ドミニオン」な

インドの対日レアアース輸出禁止・インドの航空機事故・インドの新幹線導入はリンクしています。
爬虫類(レプティリアン/DS)金融ヤクザ天〇財閥・tsmc浙江財閥等の中華系爬虫類組織をぶっ潰しましょう。

イラン国内のモサド工作員 ≒ イラン在住のレプ
レプ(DS)の地下施設に突撃!!!!

www.youtube.com/watch?v=UzEhzJw69KM www.youtube.com/watch?v=fsG76Mo5ZTs
www.youtube.com/watch?v=V1SXb3tIk8U www.youtube.com/watch?v=fa8ZfKL7TZ4
www.youtube.com/watch?v=EuQWR0cl7es www.youtube.com/watch?v=daApYtbhUbQ
www.youtube.com/watch?v=83ZMb2vK_dI www.youtube.com/watch?v=DlIqow9MnxQ
www.youtube.com/watch?v=ETlSW0OiB5U www.youtube.com/watch?v=xfW4ha_Bfrs
www.youtube.com/watch?v=HBL5oidtCpw www.youtube.com/watch?v=R6FLwGhZ4xY

あなたの周りにも存在し、自分たちの種族に敵対的な存在に対して集団ストーカー等を仕掛ける痛い下等種族です。

ユダヤ系住民がタムラへの攻撃を喜び、「村が燃えますように」と叫ぶ様子
↑人間同士の対立を煽るこいつがレプやでーーーーーーーーーー!

83:デフォルトの名無しさん
25/09/16 23:29:19.23 cWls4qHP.net
v1.9.0きた
URLリンク(github.com)
URLリンク(www.jetbrains.com)

84:デフォルトの名無しさん
25/09/17 12:57:54.32 lZFOLn6g.net
>>83
そろそろ使うか

85:デフォルトの名無しさん
25/09/17 14:47:30.36 cprQK5IX.net
男は黙って2.0になってからやろ

86:デフォルトの名無しさん
25/09/17 15:29:43.99 V91Sukbk.net
バージョン2.0になるのはJetBrainsのComposeMultiplatformがGoogleのJetpackComposeと完全に統合するときかな
早くて来年のGoogle I/Oに合わせてメジャーアップデートと予想

87:デフォルトの名無しさん
25/09/19 21:26:30.12 kwj0OC91.net
今年のDroidKaigiを漁ってたら興味深いアーカイブがあった
Composeはそれ自体が状態管理に特化したフレームワークの側面もあることがよく分かる

DroidKaigi 2025 - [JA] UIだけじゃないComposeの可能性 ━ 宣言的に奏でるメロディ | usuiat
URLリンク(youtu.be)

88:デフォルトの名無しさん
25/10/08 21:39:05.46 RMEC36C6.net
v1.10.0-alpha02きた
URLリンク(github.com)
Jetbrains版のNavigation3も1.0.0-alpha02がChangelogに書いてないけどきててMultiplatformにほぼ対応した

89:デフォルトの名無しさん
25/10/08 22:44:00.41 mMNcv0n1.net
一通りそろうのまだ先そうだな

90:デフォルトの名無しさん
25/10/21 20:13:44.52 iI6Ys8s+.net
ViewModelにonClearedはあるけど何でLifecycleのonStopやonStart用意してくれないの
アタオカやろ

91:デフォルトの名無しさん
25/10/21 20:15:57.68 iI6Ys8s+.net
onClearedはViewModelOwnerが呼んでくれてstopやstopはLifecycleOwnerの役目だから?

92:デフォルトの名無しさん
25/10/21 23:55:58.40 H1vV3rf4.net
AAC ViewModel(MVVMのViewModelのことではない)はAndroid用の状態のホルダーでしかなくて、
UI側にあたるLifecycleはAAC ViewModelとほぼ関係ないからねえ
Lifecycleを監視したいならUI側から持ってきたらいい

ComposeならLifecycleStartEffectでViewModelのコルーチンジョブを起動してonStopOrDisposeでコルーチンジョブのキャンセルを呼び出せる便利なもんがあるし

93:デフォルトの名無しさん
25/11/20 13:23:44.39 SBKyF0LW.net
AndroidXのNavigation3が安定版になった

Overview
URLリンク(developer.android.com)
Migrate from Navigation 2 to Navigation 3
URLリンク(developer.android.com)

94:デフォルトの名無しさん
25/11/29 14:14:20.16 rsFRibOo.net
Compose Hot Reloadが安定版1.0.0になってた
URLリンク(github.com)

95:デフォルトの名無しさん
25/12/04 08:25:23.33 4AXNkZVF.net
AndroidXでCompose 1.10安定版きた
URLリンク(android-developers.googleblog.com)

96:デフォルトの名無しさん
25/12/06 10:05:19.54 qd+N/v5m.net
ロードマップの更新を完全放置してるから何に注力してるのか1mmもわからない

97:デフォルトの名無しさん
25/12/06 14:50:40.64 pnyZifP7.net
AndroidチームはNavigation3の安定版のリリースを終えて、XRやWearのような他のAndroidデバイスのアプリ開発用フレームワークに関する作業に注力している。
あとはMaterial3Expressiveやアダプティブレイアウトに関する作業も。
そんでJetpackComposeについては基礎部分の開発やパフォーマンスの向上をほぼ完了し、JetBrainsチーム側のComposeのマルチプラットフォーム対応の完了を待っている状態であり、大きな方針転換もないから、継続的な開発ということで、JetpackComposeのロードマップを変える必要がないのでしょうね。

98:デフォルトの名無しさん
25/12/06 15:06:24.10 pnyZifP7.net
ま、Google IO 2025での発表が実質的なロードマップよ
URLリンク(youtu.be)

99:デフォルトの名無しさん
25/12/06 15:13:10.89 qd+N/v5m.net
URLリンク(developer.android.com)

これ更新してくれるだけでいいのに
更新ないから全然進んでないのかと思っちゃう

100:デフォルトの名無しさん
25/12/06 15:20:44.09 pnyZifP7.net
同じふうに思ってる人は他にもいるっぽい
スルー決め込まれてるけど
URLリンク(issuetracker.google.com)

101:デフォルトの名無しさん
25/12/07 14:03:31.55 5Yo38QWL.net
rustは着実に広がりを見せてるがkotlinひいてはkmp,cmpはいまいちやな

102:デフォルトの名無しさん
25/12/07 14:32:40.80 LdyLc81y.net
>>101
Rustがどういった用途で使われてるか分かるかな?

103:デフォルトの名無しさん
25/12/07 14:49:48.92 LdyLc81y.net
スレ違いだがKotlinのKoogっていうAIエージェントは使いやすいから人気出ると思ってる
GUIフレームワークとしてのKotlinのCMPは低需要で伸び悩んでるのはその通り

104:デフォルトの名無しさん
25/12/07 16:01:37.94 5Yo38QWL.net
rustはgpui componentsとかおしゃれそうなのも出てきてるんだわ
いい意味で変態プログラマが多いとエコシステムが広がる

105:デフォルトの名無しさん
25/12/07 16:06:04.53 5Yo38QWL.net
ただ使うだけのプログラマよりPluginとかを積極的に開発する変態さんがたを取り込めるかが勝負だな
そこらへんRustは魅力的なのかもな
Flutter/Dartはそこら辺の人材流出してそう

106:デフォルトの名無しさん
25/12/07 17:35:14.48 LdyLc81y.net
そもそもがGUIの需要が減ってきてるのにRustがそれに力を入れる意味無いよ

107:デフォルトの名無しさん
25/12/07 18:32:56.16 7zKaE9+j.net
いまからアプリの開発をゼロからやるならReactを習得してラインミニアプリをやったほうがマシだよ

108:デフォルトの名無しさん
25/12/08 11:39:20.39 39vEb8S3.net
>>105
プラグイン?それよかAIコーディングとの親和性を高めるほうが大事

109:デフォルトの名無しさん
25/12/08 11:41:27.17 39vEb8S3.net
>>107
せやねUIはウェブ系で十分

110:デフォルトの名無しさん
25/12/08 11:47:40.44 39vEb8S3.net
ちなみにKotlinはJavaScriptにトランスパイルできるからウェブ系でもKotlinをそのまま使える

111:デフォルトの名無しさん
25/12/08 11:51:28.44 39vEb8S3.net
あまり知られてないことだけどKotlinはReactを公式サポートしてる
URLリンク(github.com)

112:デフォルトの名無しさん
25/12/25 19:21:13.24 /t08zh7f.net
Viewベースのとき

113:デフォルトの名無しさん
26/01/14 00:29:31.39 ZFIYiui+.net
CMP v1.10
URLリンク(github.com)

114:デフォルトの名無しさん
26/01/15 14:31:55.38 zfMQwSjX.net
アプリ戦略の空白を埋める。今、大手企業がLINEミニアプリに注目する理由 求められているのはユーザー起点の導線設計 | PRESIDENT Online(プレジデントオンライン)
URLリンク(president.jp)

115:デフォルトの名無しさん
26/01/15 16:03:17.87 jqvztDTz.net
>>114
LIFE(LINE Front-end Framework)が基盤でWASMを使えるから、CMPを活用できる

116:デフォルトの名無しさん
26/01/29 00:36:56.90 CAhrqMCb.net
マジでこの言語醜くすぎて嫌い
例えば型をコロン付きの後置にしたせいで仮引数の並びが
引数: 型, 引数: 型とかいう非常に見辛いものになってる
C++のように生まれた瞬間から洗練された言語から見ると
あちこち継ぎ接ぎして作られたフランケンシュタインのようなものだよ

117:デフォルトの名無しさん
26/01/29 12:24:35.85 eWR6HABE.net
C++はヴァンパイアだろ

118:デフォルトの名無しさん
26/01/29 16:54:40.07 5MazGTVx.net
>>116
他は?

119:デフォルトの名無しさん
26/01/29 19:12:00.97 uoz9QpIp.net
comoposeもチンタラ気味だからflutterにも頑張ってもらわんと

120:デフォルトの名無しさん
26/01/30 08:33:36.37 Bpdo0YGM.net
2月 flutter 3.41
5月 Google IO 2026
flutter 4.0
プライマリコンストラクタ、マルチウィンドウ対応
Direct Interlop?、限定共有メモリマルチスレッド?、materialなどのデザインパッケージをぶんり開始?
うーん

121:デフォルトの名無しさん
26/01/31 01:18:42.25 YU2n1fZA.net
Geminiが高速モードでもKotlinとComposeのコードを書くの上手くて永遠にバイブコーディングしていられる
可読性を重視して書いてもらうとKotlin特有の拡張関数を沢山使ってくれるからありがたい

122:デフォルトの名無しさん
26/01/31 09:49:36.88 YU2n1fZA.net
いつの間にかAAC ViewModelのライフサイクルに相当する状態保持をComposeでできるようになってる

Compose における状態の有効期間
URLリンク(developer.android.com)

123:デフォルトの名無しさん
26/02/01 18:04:23.46 7rDQJ34L.net
エコシステム的にFlutterは一日の長あるよな
CMPはJVM環境ならJavaのライブラリがあるけどそれ以外はだるい
pure kotlinで書かれたライブラリとか増えたりしないとな

124:デフォルトの名無しさん
26/02/02 22:01:30.79 g8y7RFR2.net
FlutterにあってKMPにないエコシステムってなんか残ってるか?
だいぶ網羅されてると思うが

125:デフォルトの名無しさん
26/02/02 23:15:29.55 sK9HLFoe.net
Flutterチームでメンテされてる動画プレーヤーから始めてcamera系、動画はffmpeg系もある。workmanager,connection infoとかハードウェア情報取得、OS機能のPDF、PDfium系のPDF。UIでTableView形式やマークダウン表示系とか

ユーザー数が違うと思うしpub.devでしっかり一元管理

126:デフォルトの名無しさん
26/02/02 23:20:03.22 sK9HLFoe.net
KMP/CMPはawesome何とかcurated listとかサイトとかのあってそこまで知らんけどflutterのエコシステムは楽

127:デフォルトの名無しさん
26/02/02 23:37:20.27 sK9HLFoe.net
WebViewもあったな。これはCMPにもありそうだけど
FlutterチームでメンテされてるWebView(ただしWindowsは..)
つか、ファイルパス系(path_porovider)やファイル選択ダイアログ(file_selector)みたいなのはjetbrainsが用意するとかしてない?

128:デフォルトの名無しさん
26/02/03 22:10:06.43 ZEt129c3.net
>>125
横からだがどれもプラットフォームそれぞれに実装済みで定型文だからライブラリを使わずにAIに書かせればいいかな

よってReact+ネイティブコードで十分
KotlinはAndroidのネイティブだからKMPとしてReactの裏のドメイン層の共通のビジネスロジックのために採用を検討してもいい
Swiftで共通ロジックにするのはAndroidに取り込むのに結局JNIを使うことになるんだからそれならGoかRustで共通にすりゃいいよねって話
DartはiOSネイティブでもAndroidネイティブでもないただのゴミ、C#のがマシ

129:デフォルトの名無しさん
26/02/05 18:14:23.36 L7zgOfr4.net
つまりReactはKotlinで書けるから全部Kotlinでいいな

130:デフォルトの名無しさん
26/02/10 10:45:10.94 28FyfaoA.net
JNIは高速だがとりあえず動けばいいならWASMをKMPのランタイムで動かすという選択肢もあるぞ
Flutter/DartのWASMランタイムはここ数年保守されてないがKMPのほうは保守されてる
URLリンク(github.com)

バイナリがWASM形式で配布されてればKMPのプロジェクトにそのまま使えるメリットがある
専用ビルド用プラグインでWASMのモジュールの関数をKotlinに自動でマッピングしてくれる

というかAndroidもiOSもOSレベルでWASMくらい対応しろ

131:デフォルトの名無しさん
26/02/10 18:50:01.56 M/JuZJKb.net
Flutter/DartのWASMランタイムって何よ?
dart/sdkのgitのcommitでwasmとかついたやつ見かけるけどこれと違うのけ?

132:デフォルトの名無しさん
26/02/10 19:53:35.77 28FyfaoA.net
WASMランタイムは文字通りネイティブ上でWASMを動かすための舞台装置のことね
分かりやすい例はWebView
131はDartをWASMにコンパイルするのと勘違いしてる

133:デフォルトの名無しさん
26/02/10 23:52:15.03 /4U8kiho.net
スマホで速度欲しいならARMバイナリ使うだろ
なぜKMP上のWASMなんてニッチな物を出してくるんだよ意味不明すぎて笑える

134:デフォルトの名無しさん
26/02/11 07:29:38.95 gGHzY7a9.net
とりあえず動けばいいならって前置きしたじゃん
JNIを使わずに全プラットフォームで共通のバイナリを使う方法はWASMに頼ることだけ
別にJNIを使うのに躊躇いがないなら従来の単なるバイナリでいい

135:デフォルトの名無しさん
26/02/12 21:37:50.62 0oA83+50.net
がっかりflutter 3.41

136:デフォルトの名無しさん
26/02/12 21:37:51.91 0oA83+50.net
がっかりflutter 3.41

137:デフォルトの名無しさん
26/02/14 08:48:26.13 atvRMLaF.net
WASMと騒いでる奴はWASMガイジってことでいいか?

138:デフォルトの名無しさん
26/02/14 10:38:58.91 9MdxuCbz.net
何を一人でプンプンしてるのかこいつは

139:デフォルトの名無しさん
26/02/14 11:52:27.55 TXI4eVNP.net
WASMだとIMEキー動かない聞いてたけど
大丈夫になったの?

140:デフォルトの名無しさん
26/02/15 17:06:20.96 JIB4MRNx.net
不正選挙の実態 (日本の政治家は天皇に支配されている)
www.youtube.com/watch?v=xqYAz5geOxs
不正選挙の可能性~邪悪に気づく重要性~
www.youtube.com/watch?v=5raGhtKw1xs
311テ□前後のディープステートの動きを振り返る
www.youtube.com/watch?v=XozPC4H33Ko
160709 【ダイジェスト版】大阪における「不正選挙」疑惑追及者Aさんインタビューダイジェスト版(聞き手:IWJ記者
www.youtube.com/watch?v=T8i4rNuPjiU
選挙不正調査チーム インタビュー カーター・フライ氏
www.youtube.com/watch?v=vy50Ij-6Qi4
不正選挙 をなくさなければ、日本の未来はない。(犬丸勝子さん)
www.youtube.com/watch?v=iPiKOjoYNGU

141:デフォルトの名無しさん
26/03/11 21:57:42.62 TL/6G4c6.net
久しぶりにCMPどうなってらるかWindowsアプリ動かしてみたら

でかすぎー。キモー。だわ
まぁこれはCMPというよりMaterialライブラリの問題だが
DPIとか考慮してこんなでかくなるのか
俺のデスクトップモニタぎFHDとはいえ

142:デフォルトの名無しさん
26/03/13 23:46:01.91 Ipf4Uq4E.net
room 3 !!!

143:デフォルトの名無しさん
26/04/02 21:43:42.97 Om4682VC.net
URLリンク(www1.daiwair.jp)


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch