きっかけ
以前から jetpack compose に関するコードや記事を書いてきた
ところが最近、アプリを制作しても具体的にどうやって実装すれば良いかが見えてこなくて悩んでいる。
やり直す前
なぜ実装方法が見えていないのかを自分なりに考えてみた。
すると、自分の現状が基礎を理解していない状態であることがわかった。
- そもそも
@Composable
ってどういう役割だっけ? - Android View から移行すると何が良かったんだっけ?
- 基本的な文法があやふや
- そう言った状況だからアプリ制作が進まない
そこで、 Android Developer サイトにある Jetpack Compose のチュートリアルをはじめからやり直すことにした。
今回はその中で一番最初のコースを行う。
チュートリアルで分かった機能など
チュートリアルをやっていく中で、こんな機能が jetpack compose にあるとわかったので、拾えた範囲でシェアしたい。
あくまでもこれは参考程度に。詳しくは各自でチュートリアルを確認を。
-
@Composable
はコンパイラに「これはJetpack Compose で使う部品だ」と伝えるもの -
Composable 関数の中にパラメータを変える物を入れることは非推奨
-
変化があった関数だけ作動するようになっており、そうでないものはスキップされる
-
Button
のonClick
でフラグを変化させるとpadding
を操作してセルの展開、収縮を行うことができる -
for 文を使用してデータ文だけ Column にデータを追加できる(lazyColumn の方がシンプルに記述できる)
-
lazyColumn
のitems
で簡単にスクロールリストを作成できる -
preview は Preview したい関数の上に2行書いて darkMode ありと比較できる
-
セルの展開、折りたたみにアニメーションをつけられる
- 今回行ったのはバネのようなアニメーションが展開時につけられるもの
-
rememberSaveable
はremember
をより強力にしたもの- 画面回転しても値を保持する
-
onContinueClicked を使って他の関数でクリックされたのを感知してフラグを変更できる
-
検索バーの虫眼鏡はマテリアルデザイン(プリセット)ですでにある
-
丸アイコン→
ContentScale.crop
+clip(CircleShape)
-
surfaceVariant
color でコンポーネントをシックに仕上げる -
Surface の
shape.medium
で角を取る -
Button コンポーネントの
enable
に条件式を書けばボタンが活性化する条件を指定できる- 例
enable = { count > 0 }
- 例
-
mutableStateOf(initialState:Boolean)
とandroidx.compose.runtime.getValue
,setValue
のライブラリ導入で状態の変更を保存するコードを短く記述できる- viewModel を利用する時に便利
やってみてどうだったか
今回 essentials という一番最初のコースを1巡した。
最初に思ったことが、
「基礎を知っているか否かでその後が大きく変わる」
ということを実感した。
基本的な機能でも jetpack compose は多数の機能を搭載しており、なかなか一発で理解して利用することが難しい。
しかし、その基本的な機能の重なりによってアプリができているため、複雑な機能を実装する上でもこの知識は大いに役に立つと今回の学習を通じて確信した。
また、essentials の最後には viewModel や状態変化検知フローなどアーキテクチャの部分が含まれている。
こちらが理解し実装することに一番苦労した箇所だった。
ただ、やっていく中でそれぞれのメソッドの関係や役割などが見えはじめ、学習する前よりも確実に力が身についたと実感している。
行き詰まったら初歩に立ち返ることも選択肢の一つ
わたしは、これまでアプリ制作に行き詰まりすっかりやる気を無くしてしばらくIDEなどを立ち上げていなかった。
しかし、今回の学習を通して成果物とはならなくても、自分の中で分かったことが増やしていくことはやる気を復活させる特効薬であると考えるようになった。
もし、あなたが最近開発でわからないことが増えて困っていると感じている場合は、それぞれのツールのチュートリアルなどをやり直して、足りない知識などを確認してみるのも一つの手になる。
急がば回れ