見出し画像

「COMPOSE を用いた ANDROID アプリ開発の基礎」の学習支援⑫ -ユニット4パスウェイ1

皆さん、こんにちは!又はこんばんは!初めての方は初めまして!
Google Codelabsの「COMPOSE を用いた ANDROID アプリ開発の基礎」コースのお手伝いをする「りおん」です。
今回は、ユニット4「ナビゲーションとアプリアーキテクチャ」の中のパ
スウェイ1「アーキテクチャコンポーネント」です。

補足のため、「COMPOSE を用いた ANDROID アプリ開発の基礎」コースで心配になった時、エラーが起きて詰まった時や、分からないことがあった時、軽く復習したい時に見てください!
また、目次を見て、自分に必要なところだけ見るのをお勧めします!

この記事を作成するにあたり使用しているAndroid StudioのバージョンはGiraffeです。バージョンによってはUIが違ったりもするのでご了承ください。
また、2024年3月14日現在の「COMPOSE を用いた ANDROID アプリ開発の基礎」コースを参考にしています。


学習内容

②アクティビティのライフサイクルのステージ

この章では、Log.d()を追加することでアクティビティのライフサイクルを確認しました。
また、再コンポーズの際に値を保存するrememberに対して、再コンポーズと構成変更時の両方の場合で値を保持するremembersaveableを学習しました。remembersaveableを用いることで、デバイスが回転しても(=onDestroy()が呼び出されその後onCreate()…と再構成されても)値が保持できるようになりました。

アクティビティのライフサイクル

⑤ComposeでのViewModelと状態

状態ホルダーであるViewModelをアプリに追加することで、関心の分離とモデル駆動型UIに則ったアプリを作成することを学びました。

アプリの推奨アーキテクチャ
今回作成したUnscrambleアプリのアーキテクチャ

⑥ViewModelをテストする単体テストを作成する

テストコードはユーザーが使用するものではないため、テストコードに必要な依存関係はtestImplementationを使用することでAPKのサイズを必要以上に大きくしないことを学びました。

今回追加したtestImplementation

また、テストを作成する時の考え方として
1.成功パス:アプリが想定通りに操作された時に正常に動くかテストする
2.エラーパス:エラー状態や無効な入力に対してどの様に応答するかテストする
3.境界ケース:アプリの境界条件時のテストをする(例 今回の単語ゲームは全10問であるため10問目を終えた後の状態をテストする)

良いテストの特徴として
1.範囲が限定的:クラス又はメソッド単位でのテストであること
2.理解しやすい:意図が一目でわかる
3.確定的:コードを変更しない限りテストの合否はかわらない
4.自己完結:人間による操作とセットアップが必要ではない

そして、単体テストがコードの何割をカバーしているかを調べることのできるコードカバレッジ機能について学習しました。

コードカバレッジ機能使用例

用語

②アクティビティのライフサイクルのステージ

エントリポイント

IT用語辞典さんによると、「エントリポイント(entry point)とは、コンピュータプログラムを実行する際に、一番最初に実行することになっている箇所のこと。」

Resumed

アクティビティのライフサイクルのInitialized, Started, Created, Destroyedは知っている方が多いですが、resumedは日常的には見られないので知らない方もいると思います。
resumeの意味は、「再開する」です。
㊟onResume()メソッドは起動時にも呼び出されます。

注意点

②アクティビティのライフサイクルのステージ

Android Studioでスターターコードを開いたらエラーが起きる

エラー文は以下の通り
The project is using an incompatible version (AGP 8.2.2) of the Android Gradle plugin. Latest supported version is AGP 8.1.1

エラー画面

解決方法は、
1つ目はAndroid Studioを最新バージョンにする
2つ目はAGPバージョンを変更する
です。今回は2つ目のAGPバージョンを変更する方を推奨します。
(今後、このようにAndroid Studioを最新バージョンにしなかったために起こるエラーが多く出た場合、最新バージョンへのアップグレード方法の記事とともに修正します。)
方法は、
プロジェクトビューから[build.gradle.kts]を選択し、下の二行のコードを変更します。

//変更するコード
id("com.android.application") version "8.2.2" apply false
id("com.android.library") version "8.2.2" apply false
//変更後
id("com.android.application") version "8.1.1" apply false
id("com.android.library") version "8.1.1" apply false

その後、右上にある[Try again]をクリックします。

さいごに

今回もCodelabsでの学習お疲れさまでした。
今回はアクティビティのライフサイクルとアプリアーキテクチャという今後非常に考慮することになる内容でした。ホーム画面戻ったら記入内容が消えていた(怒)という経験を一度でもされたことがある方は今回の内容がユーザーにとってどれほど大事なものかよくわかると思います。
次回は遂に今回のユニットの主題であるナビゲーションです。次回も頑張っていきましょう!

この記事が気に入ったらサポートをしてみませんか?