iOS、Android、デスクトップ、Webに対応したUIフレームワークで手軽にアプリを作りましょう!
・各種プラットフォーム間でコードを共有可能
・宣言型UIによる最大100%のコードベース
・Kotlin Multiplatform (KMP) & Jetpack Composeベース
【Kotlin】Compose Multiplatform 1
1デフォルトの名無しさん
2024/06/20(木) 23:47:17.52ID:vbElSNSS2デフォルトの名無しさん
2024/06/20(木) 23:47:44.97ID:vbElSNSS3デフォルトの名無しさん
2024/06/20(木) 23:57:21.20ID:wkeLzLVS KMP対応Composeライブラリ一覧
ttps://github.com/terrakok/kmp-awesome
ttps://github.com/terrakok/kmp-awesome
2024/06/21(金) 04:25:54.59ID:jKJT7aI8
これってなんなの?GUI部分しか作れないの?
5デフォルトの名無しさん
2024/06/21(金) 06:37:17.02ID:XqVI1f39 ビジネスロジック、GUIともにKotlinでコードを書けるよ
2024/06/21(金) 07:04:42.89ID:Atsq9vif
Kotlinは書いてて楽しいからすき
2024/06/21(金) 07:21:00.38ID:Rhs7e8T4
Jetpack Composeやってるけど特に状態まわりでFlutterより書きやすい
2024/06/21(金) 07:34:20.22ID:6EoJ4PVu
お、ついにComposeのスレが立ったか!
みんなKotlinのComposeやろうぜ!!
みんなKotlinのComposeやろうぜ!!
2024/06/21(金) 07:53:39.59ID:59+ROyU+
うおおおやるか
2024/06/24(月) 02:08:16.72ID:LPHYNtWT
Kotlin Fest 2024のメモまとめ
ttps://qiita.com/FalconFlat/items/7f802d95d6e1a686fb96
ttps://qiita.com/FalconFlat/items/7f802d95d6e1a686fb96
2024/06/29(土) 11:04:50.57ID:CFjt49h3
久しぶりに調べたけど
DataStore,RoomやLifeCycleやViewModelもKMPいけるのか?
NavigationもJetbrainsから出るの?
そろそろ感じやな
DataStore,RoomやLifeCycleやViewModelもKMPいけるのか?
NavigationもJetbrainsから出るの?
そろそろ感じやな
2024/06/29(土) 21:55:39.44ID:ootEijyj
SQLiteに関してはSQLDelightはちょっと使いにくいと感じてたからRoomのKMP対応は素直に嬉しい
あと最新SQLite3.46.0バイナリを同梱したドライバを泥のRoomで使えるようになったからON CONFLICTとかを書けるようになって便利
あと最新SQLite3.46.0バイナリを同梱したドライバを泥のRoomで使えるようになったからON CONFLICTとかを書けるようになって便利
2024/06/30(日) 11:47:30.99ID:V38GczC3
クライアントアプリのORMはRoomみたく
FlowみたくDBをwatchする機能ないとつらいよな
たいていリアクティブにつくってるからな
つか、最新のしたら大量アイテムのリストのスクロール
かなり速くなってるけど
デバッグ時はクソ重くてつらい
プロファイルリリースだと速いが
FlowみたくDBをwatchする機能ないとつらいよな
たいていリアクティブにつくってるからな
つか、最新のしたら大量アイテムのリストのスクロール
かなり速くなってるけど
デバッグ時はクソ重くてつらい
プロファイルリリースだと速いが
2024/06/30(日) 12:16:20.73ID:V38GczC3
ナビゲーションをまじめにやろうとしてるけど
どすればいいんだ?
Androidの場合、Activityと便利なサブコンポーネントFragment
でそろぞれ、バックスタックがあって作りやすいけど
Flutterの場合もナビゲーションをネストすれば画面とそのFragmentに
あたるWidgetそれぞれでバックスタックあってナビゲーヨンできるけど
どすればいいんだ?
Androidの場合、Activityと便利なサブコンポーネントFragment
でそろぞれ、バックスタックがあって作りやすいけど
Flutterの場合もナビゲーションをネストすれば画面とそのFragmentに
あたるWidgetそれぞれでバックスタックあってナビゲーヨンできるけど
2024/06/30(日) 12:38:20.77ID:V38GczC3
Androidの場合、ViewModelをActivityやFragmentにそれぞれ結びつけることで
UIの状態の管理が楽だったけど同じようにやりたい
まずActivityに相当するコンポーザブルにそれぞれViewModel結び付けて
さらにFragmentに相当するコンポーザブルにもそれぞれViewModel結び付けて
管理したい
でも例えば
https://zenn.dev/joo_hashi/books/f646fb076f58dc/viewer/42fdf7
だと、1Activity内で画面切り替えてるだけだからViewModelのスコープが望ましくない
UIの状態の管理が楽だったけど同じようにやりたい
まずActivityに相当するコンポーザブルにそれぞれViewModel結び付けて
さらにFragmentに相当するコンポーザブルにもそれぞれViewModel結び付けて
管理したい
でも例えば
https://zenn.dev/joo_hashi/books/f646fb076f58dc/viewer/42fdf7
だと、1Activity内で画面切り替えてるだけだからViewModelのスコープが望ましくない
2024/06/30(日) 13:17:38.17ID:0SycvWcc
androidx.lifecycle.viewmodel.composeのviewModel()を使えばコンポーザブルの中でViewModelを宣言できるようになる
17デフォルトの名無しさん
2024/06/30(日) 13:32:40.23ID:0SycvWcc コンポーザブルの中で画面ごとにViewModelを宣言しちゃうなんてライフライクル管理は大丈夫なの?っていう疑問はあると思うけど、ちゃんと
androidx.navigation:navigation-compose
がきっちり解決してくれてる
蛇足だけど内部実装ロジックについては
「navigation-compose は ViewModel のライフサイクルをどう管理しているのか」
https://y-anz-m.blogspot.com/2021/08/navigation-compose-viewmodel.html
の解説記事が参考になる
androidx.navigation:navigation-compose
がきっちり解決してくれてる
蛇足だけど内部実装ロジックについては
「navigation-compose は ViewModel のライフサイクルをどう管理しているのか」
https://y-anz-m.blogspot.com/2021/08/navigation-compose-viewmodel.html
の解説記事が参考になる
2024/06/30(日) 13:33:32.26ID:V38GczC3
つか、そもそもなぜAAC ViewModelを使いたいのかというと画面回転などの構成変更
でもUIの状態を保持できるからなんだけどそれは基本従来のViewベースのときに
Activityを再作成するからだよね
Jetpack Composeベースの時は基本、画面回転でもActivity再作成しないから
別にViewModel使う必要ねぇのか..
壮大な勘違いをしていたかも
でもUIの状態を保持できるからなんだけどそれは基本従来のViewベースのときに
Activityを再作成するからだよね
Jetpack Composeベースの時は基本、画面回転でもActivity再作成しないから
別にViewModel使う必要ねぇのか..
壮大な勘違いをしていたかも
2024/06/30(日) 13:35:59.53ID:V38GczC3
>>17
解説記事読んでみます
解説記事読んでみます
2024/06/30(日) 13:36:45.55ID:0SycvWcc
2024/06/30(日) 13:44:53.22ID:V38GczC3
>LocalViewModelStoreOwner には MainActivity ではなく NavBackStackEntry が入っていることがわかりました。
あぁ、なるほど
navigation-compose使うとViewModelがMainActivityではなくNavBackStackEntryに紐づくのではないのですね
大変参考になりました
あぁ、なるほど
navigation-compose使うとViewModelがMainActivityではなくNavBackStackEntryに紐づくのではないのですね
大変参考になりました
2024/06/30(日) 13:49:03.15ID:V38GczC3
>>20
ごめんなさい。間違ってました。
今、新規の空のCompose Empty Activity作ってマニュフェストのActivityの設定みたら
android:configChangesに何も設定されていませんでしたね
てっきり、ここにorientationとか設定されているのかと思いました
ごめんなさい。間違ってました。
今、新規の空のCompose Empty Activity作ってマニュフェストのActivityの設定みたら
android:configChangesに何も設定されていませんでしたね
てっきり、ここにorientationとか設定されているのかと思いました
2024/06/30(日) 14:27:03.12ID:V38GczC3
>NavBackStackEntryに紐づくのではないのですね
NavBackStackEntryに紐づくのですね
NavBackStackEntryに紐づくのですね
2024/07/05(金) 10:54:08.96ID:OeiRQJMt
Room絡みのKMP対応が進んでるけど
それにあわせてSqlDriver?
これでBundledDriverみたいなのあるけど
これってKMPじゃなくて普通のAndroidプロジェクトでも使えるのかな?
普通のAndroidプロジェクトでも最新のSqlite使いたい
それにあわせてSqlDriver?
これでBundledDriverみたいなのあるけど
これってKMPじゃなくて普通のAndroidプロジェクトでも使えるのかな?
普通のAndroidプロジェクトでも最新のSqlite使いたい
2024/07/05(金) 14:41:50.48ID:4QgwhxP+
>>24
使えるで
ttps://qiita.com/yuya2011/items/c3baea9a2fc4a6fce970
この記事はRoomでBundledSQLiteDriverしてUPSERT使っててGitHubに泥アプリのサンプルあげてるみたい
使えるで
ttps://qiita.com/yuya2011/items/c3baea9a2fc4a6fce970
この記事はRoomでBundledSQLiteDriverしてUPSERT使っててGitHubに泥アプリのサンプルあげてるみたい
2024/07/05(金) 20:29:17.42ID:OeiRQJMt
>>25
おお、ありがとう
そのついでにBundled版だけでいいからSqliteのウンコ実装も治ってくれると
いいんだが
巨大なBlob挿入するとBlobTooBigExceptionみたいな例外でたり(2MBまで?)
CursorWindowとか勝手に内部でページングしてひどいことしてる
ほんとうにひどい実装になってるからな
これはandroidのプロセス間通信の制限かなんかでなってるのかしらんが
おお、ありがとう
そのついでにBundled版だけでいいからSqliteのウンコ実装も治ってくれると
いいんだが
巨大なBlob挿入するとBlobTooBigExceptionみたいな例外でたり(2MBまで?)
CursorWindowとか勝手に内部でページングしてひどいことしてる
ほんとうにひどい実装になってるからな
これはandroidのプロセス間通信の制限かなんかでなってるのかしらんが
2024/07/08(月) 20:01:44.64ID:2ykBkBhu
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で統一したい
ViewModelのStateとFlowを合成したいんだけどStateってどうやってListenするの?
もしくはStateをFlowに変換できませんか?
class ViewModel {
var state by mutableStateOf()
fun watch() {
// stateの変化をリッスンしてモデル層のFlowと合成してcollectしたい
}
最初からStateFlowを使えばいいのかもしれんが、なるべくViewModelではStateで統一したい
2024/07/08(月) 20:22:25.79ID:2ykBkBhu
つか、ちょっと気になった
class HogeViewModel {
@set:JvmName("privateSetHogeState")
var hogeState by mutableStateOf
private set //
fun setHogeState(newValue)
// validationなどのロジック
hogeState = newValue
}
}
名前がぶつかるんだな..
ということでアノテーションつけたけど
これJvm依存か?
class HogeViewModel {
@set:JvmName("privateSetHogeState")
var hogeState by mutableStateOf
private set //
fun setHogeState(newValue)
// validationなどのロジック
hogeState = newValue
}
}
名前がぶつかるんだな..
ということでアノテーションつけたけど
これJvm依存か?
2024/09/23(月) 22:23:25.10ID:oqrINLn7
derivedStateOfに関する記事、オーバーヘッドが大きいことなど書かれてて興味深い
How derivedStateOf works: a deep d(er)ive
https://blog.zachklipp.com/how-derivedstateof-works-a-deep-d-er-ive/
How derivedStateOf works: a deep d(er)ive
https://blog.zachklipp.com/how-derivedstateof-works-a-deep-d-er-ive/
2024/09/25(水) 22:51:12.35ID:5Vhwl/nZ
Composeの動画みるとクリーンアーキテクチャばかりつかってるけど
クリーンアーキテクチャがそんなおすすめなの?
クリーンアーキテクチャがそんなおすすめなの?
2024/09/26(木) 11:43:08.40ID:cTJXoivB
>>30
クリーンアーキテクチャは
・テストしやすい
・認知されていて誰が見てもわかりやすい
からチーム開発のプロジェクトで人気のアーキテクチャだね
ComposeならクリーンアーキテクチャのMVVMが主流、最近はMVVMのViewModelをPresenterに置き換えたMVPも注目されてる
参考
・クリーンアーキテクチャMVVMのアプリ
https://github.com/DroidKaigi/conference-app-2023
・クリーンアーキテクチャMVPのアプリ
https://github.com/DroidKaigi/conference-app-2024
クリーンアーキテクチャは
・テストしやすい
・認知されていて誰が見てもわかりやすい
からチーム開発のプロジェクトで人気のアーキテクチャだね
ComposeならクリーンアーキテクチャのMVVMが主流、最近はMVVMのViewModelをPresenterに置き換えたMVPも注目されてる
参考
・クリーンアーキテクチャMVVMのアプリ
https://github.com/DroidKaigi/conference-app-2023
・クリーンアーキテクチャMVPのアプリ
https://github.com/DroidKaigi/conference-app-2024
2024/09/26(木) 21:37:18.69ID:zQWFDqrj
2024/09/26(木) 22:10:51.19ID:cTJXoivB
>>32
いい感じね
いい感じね
2024/10/16(水) 20:52:08.67ID:mtIOo0k6
CMP 1.7.0きたね
2024/10/18(金) 22:21:01.68ID:vKy5WG2W
デスクトップのドラッグ アンド ドロップできるようになるのか
2024/10/19(土) 09:36:06.80ID:PrnduITI
デスクトップ向け配布ってどうなるのこれ
Javaが必要なんだろ
巨大でいいから.netみたく1パッケージでできるのかな
Javaが必要なんだろ
巨大でいいから.netみたく1パッケージでできるのかな
2024/10/19(土) 10:43:52.14ID:tkdgpds2
デスクトップアプリなら、
CMPで用意されてるgradleコマンドのpackageDistributionForCurrentOS、
あるいはJava標準のjpackageでいけるで
ちゃんとJavaランタイムを同梱した実行可能形式でビルドしてくれる
CMPで用意されてるgradleコマンドのpackageDistributionForCurrentOS、
あるいはJava標準のjpackageでいけるで
ちゃんとJavaランタイムを同梱した実行可能形式でビルドしてくれる
2024/10/19(土) 11:00:27.57ID:PrnduITI
できるのか
ありがとう
デスクトップアプリを作りたいんだがずっと漂流してて
Flutterはマルチウインドウがまだだし、キーボードフォーカスとか微妙というか変というか
その点Composeの方が新しいからもっと微妙かもしれんけど
ありがとう
デスクトップアプリを作りたいんだがずっと漂流してて
Flutterはマルチウインドウがまだだし、キーボードフォーカスとか微妙というか変というか
その点Composeの方が新しいからもっと微妙かもしれんけど
2024/10/19(土) 13:33:04.37ID:tkdgpds2
>>38
Flutterのことはよく知らないけど、
ComposeのデスクトップはJavaのSwingの上にComposeをグラフィックする仕組みで動いてるから、
ウィンドウまわりはかなり安定してるよ
JavaのSwingはJavaで昔からよく使われてきたデスクトップアプリ向けフレームワークね
Flutterのことはよく知らないけど、
ComposeのデスクトップはJavaのSwingの上にComposeをグラフィックする仕組みで動いてるから、
ウィンドウまわりはかなり安定してるよ
JavaのSwingはJavaで昔からよく使われてきたデスクトップアプリ向けフレームワークね
2025/01/17(金) 22:39:39.55ID:EniXNQz7
これは期待
Support multiplatform BackHandler/PredictiveBackHandler. #1771
https://github.com/JetBrains/compose-multiplatform-core/pull/1771
Support multiplatform BackHandler/PredictiveBackHandler. #1771
https://github.com/JetBrains/compose-multiplatform-core/pull/1771
2025/01/25(土) 16:23:27.78ID:uQrxkE+r
マルチプラットホームで予測型戻るジェスチャが使えるようになるんけ
2025/02/14(金) 07:40:09.72ID:NkJp8mwO
アルファ版きちゃー
compose multiplatform 1.8.0-alpha03
compose multiplatform 1.8.0-alpha03
2025/02/14(金) 07:40:45.00ID:NkJp8mwO
2025/02/14(金) 11:17:50.64ID:iwocV+lv
ロードマップからなんか遅れてるよな
2025/02/14(金) 13:36:34.18ID:ZSXOxhZn
予測型戻るジェスチャ機能の追加されたバージョンが出たのか
2025/02/21(金) 14:59:59.28ID:jOnV3c4B
iOS向けで、
CMPにおいて戻るジェスチャーが標準でiOSネイティブライクな感じになるようだ
着々とiOSへの対応が公式側で進んでる
Implement iOS default NavHost transition animation close to native. #1861
https://github.com/JetBrains/compose-multiplatform-core/pull/1861
CMPにおいて戻るジェスチャーが標準でiOSネイティブライクな感じになるようだ
着々とiOSへの対応が公式側で進んでる
Implement iOS default NavHost transition animation close to native. #1861
https://github.com/JetBrains/compose-multiplatform-core/pull/1861
2025/02/22(土) 09:43:36.74ID:obzCo2Dh
CMPでホットリロードを可能にするツールを開発中とのこと
すばらしい
https://github.com/JetBrains/compose-hot-reload
https://github.com/JetBrains/compose-hot-reload/releases/tag/v1.0.0-dev-62
すばらしい
https://github.com/JetBrains/compose-hot-reload
https://github.com/JetBrains/compose-hot-reload/releases/tag/v1.0.0-dev-62
2025/02/22(土) 10:26:57.78ID:snifUi+R
超期待
2025/02/22(土) 14:22:25.72ID:s8vQEMuz
flutterはmacrosでズッコケたからな
2025/04/26(土) 11:36:35.34ID:4Jf0lHWD
地味アップグレードきたな
51デフォルトの名無しさん
2025/07/01(火) 10:15:12.87ID:1KZwEDte JetbrainsのCompose MultiplatformとAndroidX Jetpack Composeの統合がついに開始されたね
例えばJetpack Composeのruntimeは統合が完了してクロスプラットフォーム対応になった
例えばJetpack Composeのruntimeは統合が完了してクロスプラットフォーム対応になった
2025/07/01(火) 19:20:22.36ID:j9smP3T2
具体的に何するの?
2025/07/01(火) 19:21:56.74ID:j9smP3T2
ごめん。例えばって書いてあったね。
54デフォルトの名無しさん
2025/08/08(金) 06:52:11.68ID:Fdw9apw5 ComposeにRetainScopesっていうViewModelのライフサイクルを継承したremember関数が実装されるもよう
https://android-review.googlesource.com/c/platform/frameworks/support/+/3452915
`retain { }` API を追加
このCLは、Composeランタイムに`retain { ... }を追加します。
再コンポジションをまたいで値を保持するという点でRememberに似ていますが、保持された値はコンポジション階層の破棄と再作成後も保持できます。これにより、ViewModelやFragmentと同様のスコープが実現されます。
https://android-review.googlesource.com/c/platform/frameworks/support/+/3452915
`retain { }` API を追加
このCLは、Composeランタイムに`retain { ... }を追加します。
再コンポジションをまたいで値を保持するという点でRememberに似ていますが、保持された値はコンポジション階層の破棄と再作成後も保持できます。これにより、ViewModelやFragmentと同様のスコープが実現されます。
2025/08/08(金) 11:21:09.01ID:7cylvkQs
これはQtの対抗馬になりうるの? まだ発展段階だよね
これじゃなくてKotlin/nativeでGUI使うのに成功した人いる?
これじゃなくてKotlin/nativeでGUI使うのに成功した人いる?
2025/08/08(金) 19:12:05.27ID:1+ZsQpkg
QtはUIライブラリがショボいからな
57デフォルトの名無しさん
2025/08/13(水) 09:41:09.21ID:pILUZJEv 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対応により解決する見込みである
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対応により解決する見込みである
2025/08/13(水) 14:04:11.88ID:OAhd0lCG
KMPはNativeで今のところ共有できないやろ?
Flutterなら例えば複数のOSで同じ共有ライブラリ使えるならFFI経由で共通に出きるけど
Flutterなら例えば複数のOSで同じ共有ライブラリ使えるならFFI経由で共通に出きるけど
59デフォルトの名無しさん
2025/08/13(水) 14:34:25.64ID:pILUZJEv >>58
JNIを経由すればよい
公式のSQLiteのKMP実装が参考になる
https://github.com/androidx/androidx/tree/androidx-main/sqlite/sqlite-bundled
JNIを経由すればよい
公式のSQLiteのKMP実装が参考になる
https://github.com/androidx/androidx/tree/androidx-main/sqlite/sqlite-bundled
2025/08/13(水) 15:38:02.61ID:OAhd0lCG
JNIってJVM環境でないiOSでつかえるのかね..
Flutterならandroidだとうがiosだろうが直接ネいティブの共有ライブラリ呼べるし楽
Flutterならandroidだとうがiosだろうが直接ネいティブの共有ライブラリ呼べるし楽
2025/08/13(水) 15:44:50.61ID:OAhd0lCG
もちろんそんなケース稀かもしれんが
dartならFFIで直接共有ライブラリ関数にバインドできて
c言語介さず呼べるし(osごとのライブラリ名ぐらいは調整して)
dartで最大の不満だった共有メモリマルチスレッドできないのも実験が進んでるっぽいし
dartならFFIで直接共有ライブラリ関数にバインドできて
c言語介さず呼べるし(osごとのライブラリ名ぐらいは調整して)
dartで最大の不満だった共有メモリマルチスレッドできないのも実験が進んでるっぽいし
2025/08/13(水) 15:51:08.49ID:OAhd0lCG
UIフレームワーク自体はComposeのほうがいいけど
デフォルトでstateクラスがあって、極力
状態の管理を外だしと徹底してる(例えばメニューの表示/非表示も自分で制御)
デフォルトでstateクラスがあって、極力
状態の管理を外だしと徹底してる(例えばメニューの表示/非表示も自分で制御)
2025/08/13(水) 15:58:07.01ID:OAhd0lCG
>Kotlin/Nativeへの対応はAndroidを除いて完了しているからComposeのGUIは脱JVMへの舵をきれる状態ではある
ここは期待したいけど
そもそもandroidアプリはデフォルトがJVM環境だから脱しなくてもいいけど
デスクトップ向けでJVM要求されるのがうっとおしい
ここは期待したいけど
そもそもandroidアプリはデフォルトがJVM環境だから脱しなくてもいいけど
デスクトップ向けでJVM要求されるのがうっとおしい
64デフォルトの名無しさん
2025/08/13(水) 18:30:40.15ID:pILUZJEv KMPに関することでありComposeとかけ離れた話になってるからKotlinスレで議論したほうがよいのでしょうけど一応
>>60,61
・59ではJNIによるラップをCで書いているがこれ自体をCではなくKotlin/Nativeで書くことも可能
・Kotlin/Nativeはcinteropを書いて
https://github.com/androidx/androidx/tree/androidx-main/sqlite/sqlite-framework/src/nativeInterop/cinterop
ヘッダーファイルのC関数をKotlinで直接呼べる
https://github.com/androidx/androidx/blob/androidx-main/sqlite/sqlite-framework/src/nativeMain/kotlin/androidx/sqlite/driver/NativeSQLiteStatement.kt
>>63
・KMPでJVM向けアプリケーションを実行形式にビルドするとJavaランタイムを同梱してくれるのでアプリケーションの利用者にJVM環境を求めない
これでよかったでしょうか
ComposeやKMPのことで他に疑問があれば答えられます
>>60,61
・59ではJNIによるラップをCで書いているがこれ自体をCではなくKotlin/Nativeで書くことも可能
・Kotlin/Nativeはcinteropを書いて
https://github.com/androidx/androidx/tree/androidx-main/sqlite/sqlite-framework/src/nativeInterop/cinterop
ヘッダーファイルのC関数をKotlinで直接呼べる
https://github.com/androidx/androidx/blob/androidx-main/sqlite/sqlite-framework/src/nativeMain/kotlin/androidx/sqlite/driver/NativeSQLiteStatement.kt
>>63
・KMPでJVM向けアプリケーションを実行形式にビルドするとJavaランタイムを同梱してくれるのでアプリケーションの利用者にJVM環境を求めない
これでよかったでしょうか
ComposeやKMPのことで他に疑問があれば答えられます
65デフォルトの名無しさん
2025/08/13(水) 19:12:56.84ID:pILUZJEv >>64に追記で、
JNIによるラップをKotlin/Nativeで書くことができるので、
Cコードの呼び出し等をnativeMainで書いて、それをjniMain(各自命名)で継承し、
そこでnativeMainのKotlin/NativeコードをJNIラップしてやればよい
こういったテクニックを駆使すればC呼び出しを含むコードでも十分に共通化できる
JNIによるラップをKotlin/Nativeで書くことができるので、
Cコードの呼び出し等をnativeMainで書いて、それをjniMain(各自命名)で継承し、
そこでnativeMainのKotlin/NativeコードをJNIラップしてやればよい
こういったテクニックを駆使すればC呼び出しを含むコードでも十分に共通化できる
2025/08/14(木) 17:44:14.36ID:g00bnU7h
1.9キター
ってロードマップ更新しろよ
ってロードマップ更新しろよ
67デフォルトの名無しさん
2025/08/14(木) 22:45:55.02ID:mhSblWPk 1.9で追加されたrememberSerializableが便利だ
68デフォルトの名無しさん
2025/08/18(月) 19:15:11.61ID:Gfjo7mYU2025/08/18(月) 19:40:31.95ID:/HMywgCQ
MVVMでいいと思う
最大の問題は大きなメリットもないのにflutterとかUIフレームワークごとに
別のアーキテクチャ覚えさせるの?
まさしく時間の無駄だし
最大の問題は大きなメリットもないのにflutterとかUIフレームワークごとに
別のアーキテクチャ覚えさせるの?
まさしく時間の無駄だし
70デフォルトの名無しさん
2025/08/19(火) 00:25:37.02ID:9Ur9ADeh >>69
68のはMVVMを捨ててReactでよく使われるようなMVPに近づけて、むしろWeb系フレンドリーを目指してるから受け入れられやすい
68のはMVVMを捨ててReactでよく使われるようなMVPに近づけて、むしろWeb系フレンドリーを目指してるから受け入れられやすい
71デフォルトの名無しさん
2025/08/19(火) 00:33:32.73ID:9Ur9ADeh 世界で一番多いフロントエンジニアはWeb系だからそれらの書き方に似せるのは賢いなと思った
72デフォルトの名無しさん
2025/08/19(火) 08:08:45.09ID:9Ur9ADeh >>69
追記で
ComposeフレームワークはUIレンダリングとしての役割のほかに状態管理ランタイムとしての役割も有していて
ViewModelによる状態管理がComposeフレームワーク上で不要なのではと言われている
参考記事
https://zenn.dev/rockname/articles/2a7db5ac4bb516
具体的には
Composeアプリ開発におけるViewModelはandroidx.lifecycle.ViewModelライブラリとしての独自の特殊なライフサイクルを有していて
Composeと異なるライフサイクルのため
ViewModelとComposeのそれぞれで状態管理をしていて状態の保持が点在する問題があって
この問題を解決するためにViewModel自体をComposableに書き直してしまおうとなり
それならViewModelよりPresenterで状態管理するほうが自然に書けるねってなった
ComposeではAndroidにおけるアクティビティの再生成による状態のリセットの特殊性が健在でFlutterとは事情が異なる
追記で
ComposeフレームワークはUIレンダリングとしての役割のほかに状態管理ランタイムとしての役割も有していて
ViewModelによる状態管理がComposeフレームワーク上で不要なのではと言われている
参考記事
https://zenn.dev/rockname/articles/2a7db5ac4bb516
具体的には
Composeアプリ開発におけるViewModelはandroidx.lifecycle.ViewModelライブラリとしての独自の特殊なライフサイクルを有していて
Composeと異なるライフサイクルのため
ViewModelとComposeのそれぞれで状態管理をしていて状態の保持が点在する問題があって
この問題を解決するためにViewModel自体をComposableに書き直してしまおうとなり
それならViewModelよりPresenterで状態管理するほうが自然に書けるねってなった
ComposeではAndroidにおけるアクティビティの再生成による状態のリセットの特殊性が健在でFlutterとは事情が異なる
73デフォルトの名無しさん
2025/08/19(火) 15:40:18.83ID:9Ur9ADeh droidkaigi2025デスクトップアプリを起動してみたがボトムバーがiOS26のタブバーのような見た目だ
今後はこういうフローティングバーが流行るのだろうか
https://i.imgur.com/u4aobGF.jpeg
今後はこういうフローティングバーが流行るのだろうか
https://i.imgur.com/u4aobGF.jpeg
2025/08/19(火) 15:42:19.75ID:OfjY9UJ1
material expressiveのフローティングツールバーでしょ
75デフォルトの名無しさん
2025/08/19(火) 20:55:56.18ID:9Ur9ADeh それはツールバーっしょ
m3exressiveのナビゲーションバーはドックのしかない
m3exressiveのナビゲーションバーはドックのしかない
76デフォルトの名無しさん
2025/09/02(火) 23:42:25.29ID:BG74jSL6 たまたまiOSライクなフローティングタブバーのComposeの実装例を見つけたから貼っとくぞ
https://github.com/elyesmansour/compose-floating-tab-bar
https://raw.githubusercontent.com/elyesmansour/compose-floating-tab-bar/main/assets/demo.gif
https://github.com/elyesmansour/compose-floating-tab-bar
https://raw.githubusercontent.com/elyesmansour/compose-floating-tab-bar/main/assets/demo.gif
2025/09/06(土) 12:49:25.12ID:fnthT/PT
普及なかなか進んでないな
78デフォルトの名無しさん
2025/09/06(土) 13:14:37.72ID:rmxBGTZh AmazonがComposeを好んで一部製品に使ってアピールしてるから、普及はこれからな気もする
ReactNativeで良い感は否めないけど
ReactNativeで良い感は否めないけど
2025/09/13(土) 16:45:04.92ID:suFi3JuE
>>78
何に使ってるの?
何に使ってるの?
80デフォルトの名無しさん
2025/09/13(土) 21:35:32.73ID:bqa2q9pe2025/09/14(日) 20:47:10.07ID:GM0TlpuE
>>80
なるほどねー
なるほどねー
2025/09/16(火) 11:26:53.93ID:1AtlUxAK
「クライシスアクター」「宮本晴代」「豊島保養所」「ケムトレイル」「マグナ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
あなたの周りにも存在し、自分たちの種族に敵対的な存在に対して集団ストーカー等を仕掛ける痛い下等種族です。
ユダヤ系住民がタムラへの攻撃を喜び、「村が燃えますように」と叫ぶ様子
↑人間同士の対立を煽るこいつがレプやでーーーーーーーーーー!
「ムサシ 不正選挙」←要検索!!!ちなみにアメリカは「ドミニオン」な
インドの対日レアアース輸出禁止・インドの航空機事故・インドの新幹線導入はリンクしています。
爬虫類(レプティリアン/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デフォルトの名無しさん
2025/09/16(火) 23:29:19.23ID:cWls4qHPレスを投稿する
ニュース
- 【TV】ファン5万人がガチで投票! プロ野球総選挙、栄えある1位は [牛丼★]
- 【速報】政府、与党がNISA未成年解禁を検討 ★2 [蚤の市★]
- 【*彡】巨人・坂本勇人 『流れ星に何を願うか』の質問に「結婚相手」と即答、結婚願望告白 女性ファンから歓声と悲鳴 [鉄チーズ烏★]
- へずまりゅう氏が言葉失う 街中で女性から「息子はあなたみたいな人間に育たぬよう教育しています」 [jinjin★]
- 「まだ朝7時に通勤してるんですか?」人気VTuberが語った“働き方への提言”に議論沸騰 [夜のけいちゃん★]
- 【おこめ】ベトナムから密輸のコメを「国産」と偽り販売容疑、ベトナム人ら2人追送検…300トン売って1億3000万円稼いだか 大阪 ★2 [ぐれ★]
- 高市早苗「いいから黙って全部アタシに投資しなさい!」国際金融会議で発言し周囲ドン引き [165981677]
- 俺の親に当たる人は子供が出来なかったんだ
- 高市シンパ「時の総理を非難するのは非国民ダァ!」👈つまり石破辞めろと叩いてたこいつら非国民? [931948549]
- 【悲報】台湾有事で米中衝突、最悪のシナリオは日本人死者「4,662人」 [237216734]
- レタスやキャベツ食って野菜摂取した気になってる奴www
- プラトンの「哲人政治」は正しかったのでは? アホな大衆に政治家を選ばせるとロクなことにならない [653462351]
