AAC ViewModel is a kludge for Android, I see no reason to proliferate bad patterns. If you have a properly designed data layer, you'll realize you have no use for an AAC ViewModel.https://t.co/HWvs4nSpoL
— Jim Sproch (@JimSproch) August 20, 2022
どの Compose バージョンでもシームレスに動作するマルチプラットフォーム ViewModel のようなものをお考えでしょうか?
AAC ViewModel は Android 用の雑なもので、悪いパターンを増殖させる理由はないと思います。データレイヤーが適切に設計されていれば、AAC ViewModel を使う必要がないことに気づくはずです。
しかし、おそらく一番良いのは、アプリが本物のデータ層(キャッシュ、ネットワーク層など)を持つことです。 ViewModel はデータレイヤーを参照するかもしれませんが、ViewModel 自身はすべてのインタラクションを直接処理するべきではなく、プラットフォームに依存しないデータレイヤーがそれを行うべきです。
@JimSproch
Senior software engineer at Google. Progenitor of Jetpack Compose (May 2017). Now working on giving Compose its next-generation super-power.
👉 Jim Sproch(@JimSproch)さん / Twitter
クラッジ kludge
その場しのぎに間に合わせで採る安易な方法。またそうした問題回避。特にコンピューターのプログラミングやシステム構築で,とりあえず動くが不調和な組み合わせを持ったその場しのぎのもの。
I totally agree with you about the AAC ViewModel. I am glad that Compose was conceived in such a way that made the AAC ViewModel useless.
However, I believe it would be really important for the success of Compose to come up with some multiplatform architecture patterns.— Daniele Baroncelli (@dbaroncellimob) August 20, 2022
AAC ViewModel の件、全く同感です。AAC ViewModel を不要にするような形で Compose が考案されたことは喜ばしいことです。
しかし、Compose の成功のためには、マルチプラットフォームのアーキテクチャパターンをいくつか考え出すことが本当に重要だと思います。
Print it and frame it.
All that's left is to tear its monopoly of the non-config mechanism and give it back to the people. https://t.co/hoyGZ48DyA
— Jake Wharton (@JakeWharton) September 18, 2022
印刷して額に入れよう。
あとは、独占しているコンフィグ不要のしくみを取り除いて、人々に返すだけです。
👉 android:configChanges - Android デベロッパー | Android Developers
A bit more context for those who'll ask "why?"https://t.co/k6b63bU9bd
— Vasiliy Zukanov (@VasiliyZukanov) September 18, 2022
「なぜ?」と思われる方のために、もう少し詳しく説明します。
AndroidのViewModelは不要、その理由は?
ViewModel は Android アプリケーションで最も人気のある構成要素の一つですが、私は自分のプロジェクトでは使っていません。Android 開発者の中には、特に「ViewModel 時代」にキャリアをスタートさせた人にとっては、これはクレイジーに聞こえるかもしれません。
We don't use either of those libraries
— Jake Wharton (@JakeWharton) September 19, 2022
最初の導入時、ViewModel は素晴らしかったのですが、今は Navigation Component があり、それを異なる場所に配置しなければならないので、少し混乱しています。しかし、赤ん坊を風呂の水と一緒に捨てるわけにはいかないと思います。
私達は、これらのライブラリはどちらも使用しません。
throw the baby out with the bath water
意味・対訳
大事なものを無用なものといっしょに捨てる
You don't need one, that's the point of the original tweet. You want a data layer that is specific to the domain, then you can have screen-specific presenters and render layers. You can do this in Compose UI or classic views. AAC ViewModel was always a weird bolt-on solution.
— Jake Wharton (@JakeWharton) September 18, 2022
では、AAC ViewModel の優れた代替手段は何ですか?
必要ない、というのが元のツイートのポイントです。ドメインに特化したデータレイヤーが欲しいなら、画面に特化したプレゼンターとレンダーレイヤーを用意すれば良いです。Compose UI やクラシックビューでやればいい。AAC ViewModelは常に奇妙なボルトオンのソリューションでした。
I want to move a couple of projects to KMM, ditching the AAC ViewModel probably will make the job simpler.
— Orange Power (@sergiocrz3) September 18, 2022
いくつかのプロジェクトをKMMに移行したいのですが、AAC ViewModel を捨てれば、おそらく作業はよりシンプルになると思います。
👉 Android ViewModel が不要である理由
👉 【MVVM】 Kotlin Flow で使える5つの利用パターン