Androidアプリ開発 環境のインストールとプロジェクトの作成

知人にアプリ開発を本格的に教えるかもしれないので、方法を少しずつまとめておく。

まず、Androidアプリの開発環境であるAndroid Studioをダウンロードしてインストールする
https://developer.android.com/studio/install?hl=ja

インストール中の設定などは基本的に **デフォルトでも問題ない**
Android Studioを起動すると、直前に開かれていたプロジェクトでもない限りはこんな感じのスタート画面になる。
<img width="889" alt="Screen Shot 2018-08-11 at 21.43.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/245077/fcbc1980-e518-7a64-d219-866c372fbebb.png">
今まで作業していたプロジェクトがあれば左に作業履歴が表示される。
今回選ぶのは 「**Start a new Android Studio project**」 (プロジェクトの新規作成)
<img width="1012" alt="Screen Shot 2018-08-11 at 22.59.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/245077/188c161a-062f-d7c3-e3fd-250872d7621b.png">
**Application name**: アプリの名前
**Company domain**: 開発元(の会社名等
**Project location**: このプロジェクトがパソコン上のどこのフォルダに保存されるか
**Package name**: パッケージ名。これは**アプリの識別する為の固有IDみたいなもの**で、Google Playに登録する時にも使われる。基本的にパッケージ名はユニーク(**他のアプリのパッケージ名と重複しない**)である必要があるので必要に応じてEditを押して編集する。個人用とか、アプリをストアに公開する予定がなければ深く考えなくても問題ない。
**Include C++ support**: アプリをC++で作る場合にチェックを入れる
**Include Kotlin support**: アプリをKotlinで作る場合にチェックを入れる。個人的には**Kotlinで書けるならKotlinで作る**ことをオススメする
<img width="1012" alt="Screen Shot 2018-08-11 at 23.24.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/245077/11a4e506-365a-a358-5fa5-03fc2f25967f.png">
ここでは**どのAndroid端末をターゲットにするか**を選ぶ。多くの場合は「Phone and Tablet」(電話とタブレット) だと思うが、WearOS by Googleや、Android TV(だっけか？)等、他のデバイス向けにも作りたい場合はここでチェックを入れる。

**API枠**はどの**Androidバージョンをターゲットにするか**の指定になる。Androidの場合、iOSと違って**かなり古いバージョンを使っている人もいる**ので、どこまで考慮するかになる。古いOSをサポートすることで非常に多くの端末にインストールができるようになるが
**・OSのバージョンアップによって一部の機能の仕様が変わった場合、その箇所でOSバージョンを判定して処理を分ける手間が発生する** (例: Android6.0からアプリのパーミッションがインストール時ではなく、インストール後使う時に許可を求める仕様になって、**デンジャラス**に部類するパーミッションについては特に気を付けなきゃ行けなくなった)
**・最小のバージョンが低いとバージョンアップによって新しく追加された新APIが使えない**
**・新しい書き方があっても、古い書き方を維持しなきゃいけない事がある**
等のデメリットがある。だからと言って最新版だけに絞るとインストールできる端末がごく一部に限られちゃうので(Androidで最新OSを使ってる人はいつも全体の1%程度だったはず)、作りたい物とターゲット層に応じて考えよう。最小のAPIは後から変更することも可能。
<img width="1012" alt="Screen Shot 2018-08-11 at 23.55.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/245077/de89dc5a-681d-d4c5-dd5d-d461d4f2494d.png">
ここで追加するActivityを選ぶ。**Activityはアプリを動かす為の仕組みが詰まったベースのプログラム**みたいなもの。ここでは追加しないことも出来る。
ここで機能別に用意されたActivityを選ぶとそれぞれの機能の雛形のようなActivityが出来る。ここで雛形を選ばなくても自分でコードを書いて実装することも出来るので、自分で実装するか雛形を利用するかは好み次第。

ここではEmpty Activityを選んだ。
<img width="1012" alt="Screen Shot 2018-08-12 at 0.51.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/245077/2dbd06a0-675d-56b5-7512-6dbaa90e14a7.png">
Activity名とLayout名を指定する。Layoutはアプリの画面を作るファイル。このままの名前でも問題はない。Layoutはここで作らないようにも出来るし、後から追加することも出来るが、基本的にはここで一緒に作った方がいいので作る。

プロジェクトが作成されるとこんな感じの画面に変わる。左にあるapp階層とGradle Scripts階層は展開しとくのをオススメ。
<img width="889" alt="Project Created copy.png" src="https://qiita-image-store.s3.amazonaws.com/0/245077/183e045b-6a88-82c7-4aed-a961ff71acfb.png">
Empty Activityを選んだのでこの時点ではほぼ何も実装されていないが、とりあえず、新規にプロジェクトを作成する流れはこんな感じ。


今後説明予定だが、この段階でもMainActivity以外に着目しといた方がいい点がいくつかあって
・**AndroidManifest.xml**: アプリのオプションやパーミッション、Activityとかの構成を書いておく場所。**もしActivityを追加する時があれば、ちゃんとこれに書いておかないと追加したActivityが認識されない**
・res階層の**layoutフォルダ**: ここにアプリで使うレイアウトを置いておく。作り方にもよるが、Activity等のクラスに対してlayoutはペアに近いところがある。
・res階層valuesの**strings.xml**: アプリ内で使う文字列をまとめておく場所。特にレイアウトファイルでは直接文字をベタがき(直接”test”みたいに書く)すると、文字列はstrings.xmlから参照しろと注意される。
・Gradle Scripts階層の**build.gradle**: 二つとも。主に使うライブラリ・SDKのバージョン・詳細設定をまとめておくところ