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の動画みるとクリーンアーキテクチャばかりつかってるけど
クリーンアーキテクチャがそんなおすすめなの?
クリーンアーキテクチャがそんなおすすめなの?
レスを投稿する
ニュース
- 【速報】中国、高市氏答弁撤回求め国連に2度目書簡 ★3 [蚤の市★]
- 【テレビ】玉川徹「僕はマイナンバーカードを持っていない。不便だと感じたことは一回もない」「使いたい人だけにすればいい」 [冬月記者★]
- 立憲女性議員「流行語大賞」にツッコミ「いつから『流行させたい語大賞』になったのだろう」に意見続々 [muffin★]
- 買い切りなのに観られくなる?楽天TVが「購入コンテンツ」の販売終了を発表…購入した動画に“視聴期限”設け利用者から反発相次ぐ [muffin★]
- 外国人の労働力「反対」59%…読売・早大共同世論調査 [蚤の市★]
- 【芸能】昭和ボーイが憧れた「ミニコンポ」、土田晃之がケンウッドでもパイオニアでもなく「電音」を選んだワケ [湛然★]
- 【超絶悲報】李在明大統領、統一教会の解散命令を検討。「日本では解散命令が出ている」 [519511584]
- 三省堂書店「神保町本店」、復活!!! ※売場面積4割減 [175344491]
- 絵で抜こうや気持ちいい😎🏡
- なんかガチで中国の台湾武力統一を支持してそうなやつ嫌儲にちらほらいるけど、ガチで「支那人」だったりするの?こわい…😱 [784715804]
- 【悲報】NHK、高市政権発足に忖度し米兵の沖縄での性犯罪報道を延期していた😭 [359965264]
- 【悲報】ユニクロのダウンジャケット、高機能低価格で全てのアパレルブランドを破壊してしまうwwwwwwwwwwwwwwwwwwww [802034645]
