Associate Android Developer認定試験 スタディガイド翻訳

# Associate Android Developer - Study Guide の翻訳
AAD認定試験スタディガイド翻訳のQiitaをちまっと投稿していたのですが、各々は短いので1記事にまとめました。

スタディガイド：
　0. [Overview](https://developers.google.com/certification/associate-android-developer/study-guide)
　1. [Android core](https://developers.google.com/certification/associate-android-developer/study-guide/android-core)
　2. [User interface](https://developers.google.com/certification/associate-android-developer/study-guide/user-interface)
　3. [Data management](https://developers.google.com/certification/associate-android-developer/study-guide/data-management)
　4. [Debugging](https://developers.google.com/certification/associate-android-developer/study-guide/debugging)
　5. [Testing](https://developers.google.com/certification/associate-android-developer/study-guide/testing)

## Overview
>Use the study guide to prepare for the Google Associate Android Developer Certification exam. This guide lists the competency areas and individual competencies against which you will be tested. There are also links to suggested web-based study resources. Note that these resources form only a small portion of what is available on the web, and we encourage you to do additional research.

スタディガイドを利用してGoogleアソシエイトAndroid開発者認定試験の準備をしましょう。このガイドは各能力分野と、あなたがテストされる個人技能を一覧にしています。また、Webベースの学習リソースへのリンクも設けてあります。これらのリソースはWebで手に入れることのできるリソースのほんの一部であることに注意し、ぜひとも追加の調査を行ってください。

## Android core
>Android is an operating system based on Linux and designed primarily for mobile devices. Android applications can be multitasking and are written in Java, Kotlin or C++.

AndroidはLinuxベースで主にモバイル端末向けにデザインされたOSです。Anroidアプリはマルチタスクで、Java、Kotlin、またはC++で書くことができます。

>To prepare for the AAD certification exam, Android developers should:

>- Understand the architecture of the Android system
>- Be able to describe the basic building blocks of an Android app
>- Know how to build and run an Android app
>- Display simple messages in a popup using a Toast or a Snackbar
>- Be able to display a message outside your app's UI using Notifications
>- Understand how to localize an app
>- Be able to schedule a background task using JobScheduler

AAD(訳注：アソシエイトAndroid開発者) 認定試験に備え、Android開発者は下記を満たすようにします：

- Androidシステムの構造を理解している
- Androidアプリの基礎的な構成について説明できる
- Androidアプリのビルド、実行方法を知っている
- `Toast`や`Snackbar`を用いたポップアップで簡単なメッセージを表示できる
- `Notifications`を使用してアプリUIの外側でメッセージを表示することができる
- アプリのローカライズ方法を理解している 
- `JobScheduler`を使用してバックグラウンド実行タスクをスケジュールできる

### Resources
訳注：文中で触れられたリソースについてリンクが並んでます。リンク先ページは↑のURLリンクから本家で参照してください

> [Android Developers -> Toasts](https://developer.android.com/guide/topics/ui/notifiers/toasts)（※日本語）

　　Android Developers : トーストの概要

> [Android Developers -> Snackbar](https://developer.android.com/reference/android/support/design/widget/Snackbar)（※英語）
 
　　Android Developers : Snackbar
 
> [Android Developers -> Localize your app](https://developer.android.com/guide/topics/resources/localization)（※日本語）

　　アプリをローカライズする

> [Android Developers -> Application fundamentals](https://developer.android.com/guide/components/fundamentals)（※日本語）

　　アプリの基礎

> [Android Developers -> Create a notification](https://developer.android.com/training/notify-user/build-notification)（※日本語）

　　通知を作成する

> [Android Developers -> AndroidX overview](https://developer.android.com/jetpack/androidx)（※日本語）

　　AndroidXの概要

> [Android Developers -> Getting started with Jetpack](https://developer.android.com/jetpack/docs/getting-started)（※日本語）

　　Android Jetpackを使ってみる

> [Android Developers -> Android KTX (Kotlin)](https://developer.android.com/kotlin/ktx)（※日本語）

　　AndroidKTX（Android Jetpackの一部）

> [Codelabs -> Notifications](https://codelabs.developers.google.com/codelabs/android-training-notifications/index.html#0)（※英語）

> [Codelabs -> JobScheduler](https://codelabs.developers.google.com/codelabs/android-training-job-scheduler/index.html#0)（※英語）

> [Codelabs -> WorkManager (Java)](https://codelabs.developers.google.com/codelabs/android-workmanager/index.html#0)（※英語・なぜかリンク先はKotlinになっている）

> [Codelabs -> WorkManager (Kotlin)](https://codelabs.developers.google.com/codelabs/android-workmanager-kt/index.html#0)（※英語）

## User Interface
>The Android framework enables developers to create useful apps with effective user interfaces. Developers need to understand Android’s activities, views and layouts to create attractive UIs that maximize usability and the overall user experience.

Androidフレームワークにより、効果的なUIを持つ実用的なアプリを作成することができます。使いやすさと全体的なユーザエクスペリエンスを最大限にする魅力的なUIを作成するために、開発者はAndroidのアクティビティ、ビュー、そしてレイアウトを理解する必要があります。

>To prepare for the AAD certification exam, Android developers should:

>- Understand the Android activity lifecycle
>- Be able to create an `Activity` that displays a `Layout`
>- Be able to construct a UI with `ConstraintLayout`
>- Understand how to create a custom `View` class and add it to a `Layout`
>- Know how to implement a custom app theme
>- Be able to add accessibility hooks to a custom `View`
>- Know how to apply content descriptions to views for accessibility
>- Understand how to display items in a `RecyclerView`
>- Be able to bind local data to a `RecyclerView` list using the Paging library
>- Know how to implement menu-based navigation
>- Understand how to implement drawer navigation

AAD認定試験のため、Android開発者には下記の要件が求められます：

- Androidアクティビティのライフサイクルを理解している
- `レイアウト`を表示する`アクティビティ`を作成できる
- `ConstraintLayout`を使用したUIを構築することができる
- カスタム`ビュー`クラスを作成し、レイアウトに追加する方法を理解している
- カスタムアプリテーマの実装のしかたを知っている
- カスタム`ビュー`にaccessibility hooks の適用することができる
- アクセシビリティ向上のためのコンテンツラベルの追加方法を知っている
- `リサイクルビュー`で項目を表示する方法を知っている
- ページングライブラリを使用して`リサイクルビュー`にローカルのデータをバインドすることができる
- メニューベースのナビゲーションの実装方法を知っている
- ナビゲーションドロワーの実装方法を理解している

### Resources
>[Android Developers -> Build a responsive UI with ConstraintLayout](https://developer.android.com/training/constraint-layout/)（※日本語）

Android Developers -> ConstraintLayout でレスポンシブ UI を作成する（Android Jetpackの一部)

>[Android Developers -> Create a list with RecyclerView](https://developer.android.com/guide/topics/ui/layout/recyclerview)（※日本語）

Android Developers -> リサイクルビューでリストを作成する

>[Android Developers -> Create a navigation drawer](https://developer.android.com/guide/navigation/navigation-ui#add_a_navigation_drawer)（※日本語）

Android Developers -> ナビゲーションドロワーを追加する

>[Android Developers -> Custom view components](https://developer.android.com/guide/topics/ui/custom-components)（※日本語）

Android Developers -> カスタムビュー コンポーネント

>[Android Developers -> Build more accessible custom views](https://developer.android.com/guide/topics/ui/accessibility/custom-views)（※日本語）

Android Developers -> カスタムビューのユーザー補助機能を強化する

>[Android Developers -> Styles and themes](https://developer.android.com/guide/topics/ui/look-and-feel/themes)（※日本語）

Android Developers -> スタイルとテーマ

>[Android Developers -> setContentDescription()](https://developer.android.com/reference/android/view/View#setContentDescription(java.lang.CharSequence))（※英語）

Android Developers -> setContentDescription()

>[Android Developers -> Adding accessibility features to apps for blind and visually-impaired users](https://www.youtube.com/watch?v=1by5J7c5Vz4)（※英語動画）

Android Developers -> Youtube：目の不自由なユーザ向けの補助機能をアプリに追加する

>[Android Tool Time - Building interfaces with ConstraintLayout in AS](https://www.youtube.com/watch?v=XamMbnzI5vE)（※英語動画）

Android Developers -> Youtube：ConstraintLayoutでインターフェースを作成する
　
>[Codelabs -> Activities and intents](https://codelabs.developers.google.com/codelabs/android-training-create-an-activity/index.html#0)
>[Codelabs -> Your first interactive UI](https://codelabs.developers.google.com/codelabs/android-training-layout-editor-part-a/index.html#0)
>[Codelabs -> Themes and final touches](https://codelabs.developers.google.com/codelabs/android-training-drawables-styles-and-themes/index.html#0)
>[Codelabs -> RecyclerView](https://codelabs.developers.google.com/codelabs/android-training-create-recycler-view/index.html#0)
>[Codelabs -> Menus and pickers](https://codelabs.developers.google.com/codelabs/android-training-menus-and-pickers/index.html#0)
>[Codelabs -> User navigation](https://codelabs.developers.google.com/codelabs/android-training-provide-user-navigation/index.html#0)
>[Codelabs -> Material Components (Java)](https://codelabs.developers.google.com/codelabs/mdc-101-java/index.html#0)
>[Codelabs -> Material Components (Kotlin)](https://codelabs.developers.google.com/codelabs/mdc-101-kotlin/index.html#0)
>[Codelabs -> Lifecycles](https://codelabs.developers.google.com/codelabs/kotlin-android-training-lifecycles-logging/index.html#0)
>[Codelabs -> Add user interactivity](https://codelabs.developers.google.com/codelabs/kotlin-android-training-constraint-layout/index.html#0)
>[Codelabs -> Constraint layout using the Layout Editor](https://codelabs.developers.google.com/codelabs/kotlin-android-training-interactivity/index.html#0)
>[Codelabs -> RecyclerView fundamentals (Kotlin)](https://codelabs.developers.google.com/codelabs/kotlin-android-training-recyclerview-fundamentals/index.html#0)


## Data management
>Many Android apps store and retrieve user information that persists beyond the life of the app.

多くのアンドロイドアプリは、アプリのライフサイクルを超えて持続的にユーザー情報を収集します。
（訳注：アプリを起動していない時もバックグラウンドで持続的にデータ収集している、の意と解釈）

>To prepare for the AAD certification exam, Android developers should:

>- Understand how to define data using Room entities
>- Be able to access `Room` database with data access object (DAO)
>- Know how to observe and respond to changing data using `LiveData`
>- Understand how to use a Repository to mediate data operations
>- Be able to read and parse raw resources or asset files
>- Be able to create persistent Preference data from user input
>- Understand how to change the behavior of the app based on user preferences

AAD認定試験の準備として、開発者は下記の要件を満たす必要があります：

- Roomエンティティを使用してデータを定義する方法を理解している
- `Room`データベースにDAOで接続することができる
- `LiveData`を使用してデータの変動を観測し対応する方法を知っている
- データ操作の調整のためのRepositoryの使用方法を理解している
- rawリソースやアセットファイルの読み込み、展開ができる
- ユーザーの入力から持続的なプリファレンスデータを作成できる
- ユーザーの好みに合わせアプリの挙動を変更する方法を理解している

### Resources

>[Android Developers -> Shared preferences](https://developer.android.com/training/data-storage/shared-preferences)（※日本語）

Android Developers -> Key-Valueデータを保存する

>[Codelabs -> Room, LiveData and ViewModel](https://codelabs.developers.google.com/codelabs/android-training-livedata-viewmodel/index.html#0)（※英語）
>[Codelabs -> Repository](https://codelabs.developers.google.com/codelabs/android-training-livedata-viewmodel/index.html#0)（※英語）
>[Codelabs -> Drawables, styles, and themes](https://codelabs.developers.google.com/codelabs/android-training-drawables-styles-and-themes/index.html#0)（※英語）
>[Codelabs -> Shared preferences](https://codelabs.developers.google.com/codelabs/android-training-shared-preferences/index.html#0)（※英語）
>[Codelabs -> App settings](https://codelabs.developers.google.com/codelabs/android-training-adding-settings-to-app/index.html#0)（※英語）
>[Codelabs -> ViewModel and ViewModelFactory](https://codelabs.developers.google.com/codelabs/kotlin-android-training-view-model/index.html#0)（※英語）
>[Codelabs -> Room with a View (Java)](https://codelabs.developers.google.com/codelabs/android-room-with-a-view/index.html#0)（※英語）
>[Codelabs -> Room with a View (Kotlin)](https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/index.html#0)（※英語）

## Debugging
>Debugging is the process of isolating and removing defects in software code. By understanding the debugging tools in Android Studio, Android developers can create reliable and robust applications.

デバッグはソフトウェアのコードから欠陥を特定し取り除く過程です。Android Studioのデバッグツールを理解することで、Android開発者は信頼性が高く強固なアプリケーションを作成することができます。

>To prepare for the AAD certification exam, Android developers should:

>- Understand the basic debugging techniques available in Android Studio
>- Know how to debug and fix issues with an app's functional behavior and usability
>- Be able to use the System Log to output debug information
>- Understand how to use breakpoints in Android Studio
>- Know how to inspect variables using Android Studio

AAD認定試験のため、開発者は次の要件を満たす必要があります：

- Android Studioで利用できる基本的なデバッグテクニックを理解している
- アプリの機能的な動作とユーザビリティの問題を検出し修正する方法を知っている
- システムログを使用してデバッグ情報を出力できる
- Android Studio内でのブレークポイントの使い方を理解している
- Android Studioを使用して変数を検査する方法を知っている

### Resources
>[Android Developers -> Debug your app](https://developer.android.com/studio/debug/)（※日本語）

Android Developers -> アプリのデバッグ

>[Android Dev Fundamentals -> Write and view logs with Logcat](https://developer.android.com/studio/debug/am-logcat)（※日本語）

Android Developers -> logcat を使用してログを書き込み、表示する

>[Codelabs -> Android Studio debugger](https://codelabs.developers.google.com/codelabs/android-training-using-debugger/index.html#0)（※英語）
>[Codelabs -> Add log statements to your app](https://codelabs.developers.google.com/codelabs/android-training-hello-world/index.html#7)（※英語）

## Testing

>Software testing is the process of executing a program with the intent of finding errors and abnormal or unexpected behavior. Testing and test-driven development (TDD) is a critically important step of the software development process for all Android developers. It helps to reduce defect rates in commercial and enterprise software.

ソフトウェアテストはエラー検出を目的とした異常な・予測していない操作をもって、プログラムを実行するプロセスです。テストとテスト駆動開発（TDD）はすべてのAndroid開発者にとって、ソフトウェア開発プロセスの中で非常に重要なステップとなります。これによりコンシューマ/エンタープライズソフトウェアの欠陥率を減らすことができます。

>To prepare for the AAD certification exam, Android developers should:

>- Thoroughly understand the fundamentals of testing
>- Be able to write useful local JUnit tests
>- Understand the Espresso UI test framework
>- Know how to write useful automated Android tests

AAD認定試験のため、開発者は次の要件が必要となります：

- テストの基本を徹底的に理解している
- 実用的なローカルJUnitテストを書くことができる
- Espresso UIテスト フレームワークを理解している
- 実用的な自動化Androidテストの書き方がわかる

### Resources
>[Android Developers -> Fundamentals of testing](https://developer.android.com/training/testing/fundamentals)（※日本語）

Android Developers -> テストの基礎

>[Android Dev Fundamentals -> Automate UI tests](https://developer.android.com/training/testing/ui-testing/)（※日本語）

Android Developers -> ユーザー インターフェース テストを自動化する

> [Codelabs -> Unit tests](https://codelabs.developers.google.com/codelabs/android-training-unit-tests/index.html#0)（※英語）
> [Codelabs -> Android Testing -> Unit testing with JUnit and Mockito](https://codelabs.developers.google.com/codelabs/android-testing/index.html#0)（※英語）
> [Codelabs -> Android Testing -> Espresso for UI testing](https://codelabs.developers.google.com/codelabs/android-training-espresso-for-ui-testing/index.html#0)（※英語）


***
スタディガイドは以上となります。
あくまで学ぶべき知識の概要や方針について記載されており、実際の知識は各Resourcesを参照しながら、手を動かして学ぶことになります。

Resourcesのリンク先の英語のみの記事も今後翻訳しようと思います。