2類5類相当とか法改正するよりも、反科学を刑事罰に問う法改正のほうがずっとずっと人の命を救う。頼むよ政治家の皆さん。
StateFlowの深堀り、SharedFlowとの違いとstateIn【kotlin coroutines flow】 StateFlowはkotlin corouteinsの1.3.6で追加された状態管理用の特別なFlowです。 以前、「StateFlowのドキュメントを読み込む」という記事を書きましたが、その後SharedFlowが追加され、若干実装に変更がありました。 また、新たにstateInというoperatorも追加されています。 今回はそれらを含めたStateFlowの詳細な仕様に関して深堀りしていきたいと思います。 Flow, SharedFlow, StateFlowの比較はこちらの記事を、SharedFlowの深堀りはこちらの記事を参考にしてください。 StateFlowの基本的な使い方StateFlowは状態管理に特化したFlowです。 StateFlowはMuta
宣言的UIの考え方はReact、Flutter、SwiftUI、Jetpack Composeと広がり、ほぼ全てのプラットフォームで利用できるようになりました。 今までのHTMLやXMLに対して命令的に処理を書くのに対し、宣言的UIはUIの構築や更新を圧倒的に簡素にしてくれます。 また、差分更新の仕組みを備えているものも多く、パフォーマンスの向上も見込めます。 今回はいくつかある宣言的UIのツール群の中から、代表的なJetpack Compose、React、Flutter、SwiftUIを個人的な見解も含めて比較していきます。 コンポーネントの記述宣言的UIの大きなメリットの一つに、再利用可能なコンポーネントが挙げられるでしょう。 StatelessコンポーネントとStatefulコンポーネントそれぞれについて比較を行います。 SwiftUI Statelessコンポーネントまずは状態を
Jetpack Composeの大きな特徴として、再利用可能なコンポーネントを作りやすくなったことがあるでしょう。 細かい単位でComposable関数に切り出すことで、同じUIを共通化できるだけでなく、今後の仕様追加/変更の際にもスムーズにコンポーネントを再利用できるでしょう。 一方で、再利用可能なコンポーネントの実現にはいくつか注意すべき点があります。 今回は公式から述べられている注意事項や、自分が書いていて注意していることについて紹介します。 その前に:再利用しない選択肢再利用の話に入る前に、再利用しない選択肢について書かせてください。 同じコードを何度も再利用することができれば、変更時に一箇所だけ変更すれば良くなりますし、何より楽です。 一方で、共通化することにより予期していなかった問題が発生することはよくあります。 一般的にUIの変更は多く、コンポーネントの切り出しの難易度は高い
Kotlin Coroutinesの進化はすざましく、とどまるところを知りません。 状態やイベントを扱いやすくなったStateFlowやSharedFlowが登場し、さらには、Lifecycleをより扱いやすくなったLifecycleOwner.addRepeatingJobやLifecycleOwner.repeatOnLifecycle、Flow.flowWithLifecycleが追加されました。 RoomやDataStore等Jetpackの各種ライブラリでもCoroutinesが使われており、Jetpack Composeでも様々なところでCoroutinesが活用されています。 そういった中で、一部LiveDataやRxJavaからCoroutinesに書き直す動きが見られ、多少混乱を招いていると感じています。 結論から言うと、現時点において積極的にCoroutinesに移行す
まず、Flowの定義はこのようになっています。 今回は型のみを重視するため、一旦メンバに関しては考慮しません。 public interface Flow<out T> 次にSharedFlowです。 public interface SharedFlow<out T> : Flow<T> Flowを継承していることがわかると思います。 また、書き換え可能なSharedFlowである、MutableSharedFlowの定義はこうです。 public interface MutableSharedFlow<T> : SharedFlow<T>, FlowCollector<T>SharedFlowを継承しており、またFlowCollectorという型も継承しています。 FlowCollectorはこのような定義になっています。 public interface FlowCollector<
誰かに対して誹謗中傷を行うことについて,ネットで話題になっています。何が意見で何が中傷なのか,ということについても,さまざまな見解を見ることができます。 このあたり,似た言葉がいくつかあります。 誹謗は「他人の悪口を言うこと」であり,中傷は「根拠のない悪口を言い,他人の名誉を傷つけること」とされます。非難は「相手のミスや欠点などを一方的に責めること」を指す言葉です。 また批判は「善悪や可否について検討して判断すること」という意味もありますし「よくない点をあげつらうこと」という意味もあります。そして意見は「あることに対する考え」や「好ましくない行いに対する注意や忠告」のことを指します。 しかし,それらの意味の境目は曖昧です。私たちは,いちいち言葉の意味を正確に理解した上で使うのではなく,だいたいの感覚で使います。ですので,「これは単なる意見だ」という人と「これは誹謗中傷だ」という人がいたとし
この記事は Android Advent Calendar 2021 の13日目の記事です。 Jetpack Composeは内部でもKotlin Coroutinesを多く使っており、非常に相性が良いです。 今回はJetpack ComposeとKotlin Coroutinesを組み合わせて使ういくつかの方法について紹介します。 collectAsStateJetpack Composeでは、Stateの値を変化させることで画面更新をさせることができます。 ViewModel等でStateFlowを使っている場合、collectsState を使うことでStateに変換することができ、Composeに反映させることができるようになります。 @Composable fun Sample( viewModel: SampleViewModel = viewModel() ) { val c
Kotlin Android Extensionは現在2つ機能があり、findViewByIdを省略できる views とParcelableの実装を楽にしてくれる parcelize があります。 特に views は非常に便利で、僕自身もよく使っていました。(今後、Kotlin Android Extensionsと書いた場合はviewsの方を示します) 一方、ViewBindingというものも登場し、DataBindingの軽量版みたいな立ち位置で、こちらもfindViewByIdを省略することができます。 Kotlin Android ExtensionとViewBinding、DataBindingを比較し、使い分けについて議論したいと思います。 -2020/12/08追記- kotlin 1.4.20からandroid-kotlin-extensionsはdeprecatedに
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く