【Android-Codelabs】1/36 〜 HelloWorldという文字列を表示させる 〜

2019年にGoogleから，Web上でAndroidを学べるコースが提供されました．([Android Kotlin Fundamentals Course](https://codelabs.developers.google.com/android-kotlin-fundamentals/))
この記事では，そのコースを実際にやってみてアウトプットしてみるといった内容です．
何かツッコミなどあれば編集リクエストかコメントかTwitterでいただければ修正いたします 

#目指す成果物
![helloworld.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/d118eb79-a606-6357-c530-db176e68784e.png)

#ステップ
###1. HelloWorldプロジェクトを作成する
まずAndroid Studioのこのメイン画面で，「Start a new Android Studio project」をクリックします．
![androidstudio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/e348710c-59b3-1b54-6fef-3e6212b4e0cf.png)

「Choose your project」が表示されるので，「Empty Activity」を選択し，「next」をクリックします．
Activityは一つのプロジェクトにつき一つ必要です．javaでいうとmain()的な位置付けです．
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/7067ca85-95cb-810c-fcfb-acbe1c13fd11.png)

「Configure your project」で「Name」に「HelloWorld」と入力します．
「Packege name」は，アプリを一般公開する予定がある場合は会社のドメインを指定します．（android.example.com）
API levelは低いほど，古い端末でも動くアプリが作れる設定にできます．

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/3c93c2d0-ca8d-c2a3-971b-75b7d648cdd4.png)

「Finish」をクリックします．
ここは，アプリに使うandroidのコンポーネントがインストールされるので時間がかかります．

###2. Android Studioの中身をみてみる

アプリフォルダーを調べてみましょう．
次の３つのフォルダが特に重要なので覚えておきましょう．
・manifests
アプリの重要な情報が含まれています．
アプリに必要な権限を定義する場所です．（例えば，電話番号の連絡先を読み取ったり，インターネットに接続したり，カメラなどのハードウェアにアクセスしたり）
また全てのActivityはmanifest内で<acitivty>要素で参照しなければなりません．
・java
Kotlinのコードが含まれています．
（元々androidはjavaで書かれていた背景があるのでこのようなフォルダ名
・res
画面レイアウト，画像，テキスト文字列，スタイルなどのリソースが含まれています．

![５.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/c5c2c190-b7ec-a3db-0d66-4decd139cd84.png)


###4. Gradle Scriptフォルダーをみてみる

Gradleはビルドを自動化してくれます．
特に，「bulid.gradle(app)」はアプリレベルのビルドを変更する時に編集します．主に使うタイミングは次の２つのときです

・アプリがサポートするSDKを変更するとき
・dependenciesセクションで新しいdependencies（依存関係）を宣言するとき

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/007cd43e-104a-5e26-baf8-571d18cae5c6.png)
 
###5. エミュレーターでアプリを実行する

「Run」＞「Run App」を選択してアプリを実行しましょう.

次のように，アプリが表示されます．

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/eca077f8-5178-397b-0c79-af2aed0166bc.png)

#参考資料
###CodeLabs by Google
https://codelabs.developers.google.com/?cat=Android
<img width="1206" alt="スクリーンショット 2020-01-31 3.41.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/e3064461-649d-8535-4fc3-79a68f40709a.png">

###ソースコード
Github:
https://github.com/syuheifujita/android-codelab-fundamental

###言葉の定義
・AndroidX artifacts
古い端末でも動くようにするための，サポートライブラリのこと

・ビルド
ソースコードに問題（バグ）がないか解析を行い、問題がなければ実行できる形のファイルに変換し、組み立てること

・コンパイル
コンパイルはビルド作業の中に含まれる作業の一段階のことで，ソースコードを人間が読んで分かりやすいプログラミング言語から機械が読んで分かりやすい機械語に翻訳を行うこと

・Android SDK(Softwear Development Kit)
パソコンなどでAndroidアプリを開発するために，必要なプログラムやライブラリなどをまとめた開発キットのこと

・AVD(Android Virtual Device)
仮想デバイスのこと

・エミュレーター
仮想デバイスのこと

・dependencies

#まとめ

・新しい依存先を追加するには，build.gradle(app)ファイルを編集する
・japaフォルダには，KotlinかJavaのソースコードがあって，resフォルダには画面レイアるとなどのリソースがある
・権限を付与するときはAndroidManifest.xmlファイルを編集する

#宿題

>
１．　AndroidStudioで新しいプロジェクトを作成する
２．　「HelloWorld」を「Happy Birthday to」に変更し，最近誕生日を迎えた人の名前に変更する

#クイズ
>1問目
メインアクティビティのレイアウトファイルの名前は何ですか？

`MainActivity.java
AndroidManifest.xml
activity_main.xml
build.gradle`

>2問目
アプリの名前を指定する文字列リソースの名前は何ですか？

`app_name
xmlns:app
android:name
applicationId`

>3問目
新しいエミュレーターを作成するには、どのツールを使用しますか？

Androidデバイスモニター
AVDマネージャー
SDKマネージャー