[Android Studio][初心者向け]画面、ディレクトリを大雑把に説明してみる

#はじめに
　こんにちは。いわっちと申します。
　今回は私が色々と勉強中の、Android Studioについてざっくりご紹介しようと思いまして、投稿させて頂きます。初心者の方向けになってます。実際に触ったことのある方は全然参考にならないかも知れないです。

###主なターゲット層
・プログラミング初心者の方

・Android Studioを使ったことがない人

・スマホアプリの開発に触れたことがない人

###投稿に至った経緯

　私が初めてAndroid Studioに触れたのは去年の夏ぐらいだったのですが、現在情報系学部の4年生でプログラミングに関しては大学1年生からある程度やっていました。去年の夏からといってもそれ以降学校の課題などで忙しく、その次に触ったのは今年の6月なので、実際触っていた期間は3ヶ月くらいです。www

　プログラミングをある程度やっていた僕でも、スマホアプリ開発では色々と躓いたことが多かったです。特にレイアウトだったり色々と考慮する事がありました。
そのため、最初のAndroid Studioの画面でも、どこをどのようにいじればいいかわからず最初は時間がかかりました。

これから、Android Studioに触れる方々のために、開発の画面で特にどこの部分を使用するのか等について紹介して初心者の方にAndroid Studioの最初のハードルを下げようと思い投稿に至りました。

###主な内容

　主にAndroid Studioの画面を用いて特に利用する部分について紹介します。ディレクトリの構造や置いてある様々なファイルの意味など普通に開発していく時に、必ずといっていいほど利用するであろう部分について全体的に紹介します。幅広くざっくりですので、一つ一つの中身が薄い内容になってしまうかもしれないですがご了承ください。

※最初のAndroid Studioのインストール方法や環境の設定、仮想デバイスのインストール方法などは他の様々なサイトでご紹介されていると思うので今回は省きます。

#最初の全体画面について

　まずはAndroid Studioを起動させて新しいプロジェクトを開き、その直後の画面はこのようになっていると思います。

<img width="1440" alt="fullsizeoutput_255.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288250/2c72ddd8-d180-57ef-9c87-e15408425ccc.jpeg">

　この画面では特に赤枠で囲った部分を主にいじることになると思います。順に説明していきます。
番号は以下の通りです。

#####① ディレクトリ
#####② デバッグビュー
#####③ 実行、ビルド

##① ディレクトリ
　他の開発プラットフォームでも必ずあるディレクトリですね。肝心なのは、ディレクトリの中身ですね。プロジェクト作成でフォルダも自動で作成されるのですが、色々と使うファイルがあります。
![fullsizeoutput_256.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288250/b390c51a-c5ae-c996-f07e-e3416ec44c5d.jpeg)
上から順にそれぞれ説明していきます。

######manifestフォルダー

1.) AndroidManifest.xml
　このファイルは「このアプリの大元の設定を記述するファイル」というイメージです。例えば、この作成しているアプリがインターネットに接続する場合には、このファイルでインターネットに接続するという宣言をする必要があります。開発をしていくと必ずいじるファイルだと思います。

######Javaフォルダー

1.) MainActicity
　こちらはスマホの内部処理の部分をいじるファイルです。JavaであればMainActivity.java、KotlinであればMainActivity.ktとなります。プログラミングをするファイルですね。

2.) ExampleInstrumentedTest
　こちらは僕は開発していて、全く使ったことがないのでわかりませんがおそらくテスト用のファイルっぽいですね。初心者の方は特に気にしなくても大丈夫だと思います。

3.)ExmapleUnitTest
　こちらも2.)と同様に、テスト用のファイルです。初心者の方は特に気にしなくても大丈夫だと思います。

######ganeratedJavaフォルダー
　こちらは画像ではフォルダーを開いていないですが、こちらも普段いじっていないので特に気にしなくても大丈夫だと思います。調べたところ、ビルド時にソースファイルからプリコンパイルされたファイルが格納されるらしいです。全て自動生成だそうです。

######resフォルダー
　resフォルダーは主にxmlファイルや画像ファイルが格納されています。このフォルダーはMainActivity並みに、色々といじることになるのでそれぞれのフォルダーの意味を覚えておいたほうがいいです。
色々とフォルダーが存在しているので、順に説明していきます。

1.) drawableフォルダー
　このフォルダーは主に画像ファイルやViewやTextField、Buttonなどのアイテムに対してのレイアウトを保管しておくフォルダーです。自動生成で既に、ic_launcher_backgroundとforegroundが存在していますが、これはアプリのロゴに対してのレイアウトです。APIレベル(Android端末のバージョン)26でロゴの形などを編集することができるようです。そのためのxmlファイルです。

2.) layoutフォルダー
　こちらはアンドロイドの画面に対してのレイアウトのファイルを保管するフォルダーです。アプリが実行された時の最初の画面のファイルや、ボタンが押された時に画面遷移する時の遷移先の画面のファイルなどが置かれます。表示に関してのファイルは、基本全てこのフィルダー内に存在しています。プロジェクト作成時にファイルが一つ自動生成されています。

3.) mipmapフォルダー
　こちらはアプリのロゴの画像ファイルが保管されています。ロゴの変更や編集などは別に設定してここに自動生成されるので、直接フォルダー内をいじることはそんなにないと思います。

4.) valuesフォルダー
　こちらはテキストや色のコードなどを保管しておくフォルダーです。
　例えば、レイアウトで黒色を多く使用するとなると「#000000」の色コードを様々なViewに記述すると思います。その場合に、このフォルダー内のcolor.xmlに「#000000」を"ColorBlack"などと置き換えるように設定することができます。
　それと同様に、長いテキスト文や、多用されるテキスト文などもstring.xml内に置き換えることができます。
　これらを利用することで、このプロジェクトで利用される色データやテキストをわかりやすく管理できるので、作業が捗ったりチーム内での共有も容易になると思います。

こちらのプロジェクトのフォルダーは表示を変えることができます。先ほど、画像ファイルを保管するdrawableフォルダーでしたが本当はdrawableはフォルダーが分けられており、適切な場所に保管しないと画像を取得できなかったりします。今表示しているのは省略されているフォルダーです。
<img width="433" alt="スクリーンショット 2019-08-05 15.42.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288250/cd7ebb4d-24d8-1108-d945-b001e6f57a1b.png">
上のAndroidと書かれている場所をクリックするとバーが表示されます。これのProjectを選択します。
<img width="433" alt="スクリーンショット 2019-08-05 15.44.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288250/63b0d43d-e9c1-b497-4634-ce62d8ff9bc1.png">
　Projectに変更してフォルダーを確認すると、drawableとdrawable-v24と二つのフォルダーが存在していると思います。drawable-v24はAPIレベル(Android端末のバージョン)が24以上で利用できる画像リソースを保管するフォルダーらしいです。普通はdrawableに画像は保管したほうがいいです。
　ProjectじゃないAndroidの表示で画像をdrawableにコピペすると、なぜかdrawable-v24に保管されていて画像が取得できなかった時があり、結構ハマった覚えがありますwww。画像をコピペした時は、ちゃんとdrawable-v24ではなくdrawableに保管されているか確認したほうがいいですw

　また、mipmapにも色々と種類が分けられておりますが、こちらはアプリロゴを大きさの違う複数のピクセルに分けて、保管するためのフォルダーだそうです。詳しい内容は参考文献に載せておきます。

##② デバッグビュー

　こちらは、実行時のエラー文やビルド時のエラーなどを表示する場所です。左側のLogcatはエラーが起きたりアプリが強制終了してしまった時に、エラー文を吐くのでよく利用すると思います。
<img width="1440" alt="スクリーンショット 2019-08-05 15.15.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288250/8c55044f-6b0e-6e9c-78ca-b08a5fdbbae0.png">
　Logcatをクリックすると下に状態が記述されていきます。添付画像の中央部にメニューバーが存在すると思いますが、このメニューバーでLogcatに記述される状態のジャンルを絞り込むことができます。
　例えば、Errorをクリックすると、Logcatにはエラー文しか表示されなくなります。僕は変数の格納の確認に、LogでLogcatに表示させたりします。エラー文は他の種類と比べるとそんなに多くないので、Log.e()で種類をErrorに設定しておいて、実行時にLogcatでErrorに絞り込むと見つけやすくていいです。

##③ 実行, ビルド
　こちらは実行したりビルドしたりする時に利用します。緑の実行ボタンをクリックして、実行するデバイスを選択すると、デバイスの画面上にアプリがインストールされ、実行されます。特に変わったところはないです。

#おわりに

　Android Studioについて特にディレクトリの構造を全体的に、ざっくりと紹介させていただきました。初めてAndroid Studioに触れる方にはディレクトリの構造を見て「なんじゃこりゃ??」ってなるのを、少しでも和らげられたらいいなと思います。
　全体を本当にざっくり紹介しましたが、drawableやmipmap等の各セグメントについての詳細は、他の様々なサイトでご紹介されていたりしますので、ご覧ください。

##参考文献
この記事を作成するにあたり、以下の文献で勉強させていただきました。

AndroidでHelloWorld（その２）: ごまふA
http://gomafuace.seesaa.net/article/300337739.html

アダプティブ アイコン  |  Android Developers
https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive?hl=ja

drawable-v24: 感謝と愚痴と。
https://nis.at.webry.info/201712/article_1.html

Androidのmipmapとdrawableについて - Qiita
https://qiita.com/gamako/items/c6b8aa43660ff6e76c14

【Andorid】アプリアイコンは「mipmap-」というリソースディレクトリに入れるのがいいらしい - Qiita
https://qiita.com/operandoOS/items/53b0f2074a806aacd290