Android開発初心者が2週間でアプリをリリースするまでにやったこと

#概要
先日以下のようなアプリをリリースさせていただきました！

>○近隣飲食店検索
[https://play.google.com/store/apps/details?id=com.tsuda.getnearbyshop](https://play.google.com/store/apps/details?id=com.tsuda.getnearbyshop)

<img width="40%" alt="近隣飲食店検索" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469694/ba576ca4-3dc3-483a-92d3-10aecb0a147b.png"> <img width="40%" alt="近隣飲食店検索" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469694/0d4ce771-f149-1b0b-4a23-d5623e047db2.png">

アプリの機能としては、検索ボタンを押下することで現在位置の緯度経度を取得し、それをホットペッパーAPIに渡し、近隣にある飲食店を検索するというものです。
検索した結果については画像をタップすることでホットペッパーのホームページにアクセスする仕様になっています。

私はAndroidアプリの開発をするのが初めてだったのですが、今ではなんとか自分のアプリをリリースできた喜びを感じております！
今回の制作期間としては、仕事終わりと土日でちょこちょこ開発を進めておりまして、約2週間での完成となりました！
その中でたくさんのことが勉強になりましたので、今回の開発で行ったことや学んだことを記事にしようと思います。

#AndroidStudioをインストールする
まずは何と言っても開発環境を整えないことには始まりません。
ですので、アプリ作成開始１日目はまずAndroidStudioをインストールするところからはじめました。
インストールするに当たって以下のサイトを参考にさせていただきました。

・[【Mac】Android Studioのインストール方法](https://qiita.com/yacchi1123/items/75303c0ad05a188a28eb)

#HelloWorldを表示する
私の場合、最初からすごいものを作ろうとするとかなり肩に力が入ってしまうタイプですので、次はHelloWorldだけ表示させてみようと思いました。
表示に当たりまして、以下のサイトを参考にさせていただきました。

・[Android Studio をインストールしてHelloWorldする（Mac）](https://qiita.com/mojogeek666/items/9cc7e4e7e8390bf1d104)

私はMacを使用していますが、Windowsを使用している方向けには以下のサイトが参考になりそうだと思いました！(試してはいません！申し訳ないです）

・[[Android] Android Studio をインストールする手順（Windows）](https://akira-watson.com/android/adt-windows.html)
・[[Android] 簡単なHello worldアプリをAndroid Studioで作成](https://akira-watson.com/android/helloworld.html)

とりあえずHelloWorldが表示できていれば、環境構築はほぼできたといって間違いないでしょう。
これからは楽しいコーディングの時間です！

#アプリのコンセプトを考える
しかし、ただ闇雲にコーディングするわけにはいきません。コーディングを行うにはアプリの仕様を決定する必要があります。
仕様といっても、私の場合はかなり漠然としたものをイメージしていました。最初はとりあえず「ボタンを押したら近隣の飲食店が表示されたらいいな」くらいに考えていました。
***むしろ細かい仕様はコーディングを行いながら考えていった感じです。***
ですが、おかげで楽しくアプリ開発を行うことができました。
作っていくうちに色々こだわりたいところがでてきて、やはり***楽しく勉強することは大事だと実感しました！***
後は日々生活する中で「ここはこうしたいな」など思いついたところは随時箇条書きでメモしていっていました。

しかし、途中で色々やりたいことが増えすぎて、メモの中がいっぱいになってしまいました。
そこで、Androidアプリの開発は初めてでしたし、今回は勉強の一環ということもあって、***まずは簡単なアプリを完成まで持っていこうと思いました。***
ですので、***とりあえずシンプルに１機能を備えたアプリを作ることに決めました。***

#コーディングを行う
上記でもう言ってしまいましたが、最初は漠然としたイメージだけ決めて、私の場合すぐにコーディング作業に入ってしまいました。
おかげで途中、コード自体を大幅に変更せざる得ない状況にもなりましたが、漠然に、そして***シンプルな仕様のイメージを持っていたおかげで修正範囲を抑えることができました。***

方向性としては、まず性能やデザインは度外視して、***自分の実現したい機能を実装することを目標としていました。***
やはり早い段階で形ができていると、後の細かい修正などの作業は集中して行うことができました。
ただ、あまりにコーディング量が多いと、後で重大なミスに気づいてしまったときに取り返しのつかないことになってしまいますので***バランスは大事***だと思いました（というより、面倒臭がらずにgitを使えば良かったと後になって思いました！）。

#デザインを決める
今回の開発では機能が単一ということもありまして、***なるべくシンプルになるようにデザインを心がけました。***
飽くまで私の考え方ですが、以下のようなポイントに気をつけていました。

● 色はなるべく抑える
● ユーザが操作をイメージしやすいような設計をする。

ですので、トップの画像を見ていただけるとわかりますが、まず画面下に**ドン**と大きなボタンを配置し、真ん中に**バン**とするべきことを表示しました(「検索を押下してください」の部分)。
こうすることで、***ユーザが迷うことなく下のボタンを押下できると考えました。***

「色を抑える」の部分は正直私の好みです。
色を抑えることでなんとなくシックでスッキリとした印象を与えるため、私はよくモノトーンのデザインで何でも作ってしまうことが多いです(後、色を気にしなくていいので実装が早くなるため、やってしまうというところもあります汗)。

#アイコンを作成する
私はグラフィックデザインの知識もないですし、特別なソフトも持っていません。
ですので、今回はMacのプレビューのみを用いて以下のようなアイコンを作成してみました。

<img width="30%" alt="近隣飲食店検索" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469694/078359bb-491f-61a9-f4f8-954a94b2396c.png">

アイコンは自分にできる範囲で、なるべくわかりやすく、アプリの特徴を表せるように心がけて作成してみました。
アイコンはかなり簡易なものとなりましたが、これが実際に自分の端末に表示されたときは感動しました。

<img width="80%" alt="アイコン" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469694/eb41285d-7dac-4d5d-02e2-eb23ce846e33.png">

実はアイコンを作成する前に「アイコンをアプリ用に色々設定したりするのが大変そう」など思っていたのですが、色々調べてみると、***案外簡単にアイコンを設定することができるとわかりました。***
アイコンの設定についてはAndroidStudio側がツールを用意してくれていて、上記のような丸型の画像さえ用意すれば、***後はツールが基本的な設定を全てやってくれました。***
アイコンの設定方法やツールの使い方については以下のサイトを参考にさせていただきました。

・[[Android] アイコンを簡単作成できる Image Asset](https://akira-watson.com/android/adaptive-icons.html)

ちなみに、以前作成したサイトでも同じようなアイコンに同じようなデザインで作成しております(汗)

・[コーディング雑記](http://hedge-hog-dad.com)


#完成度を高める
上記まででアプリの大体の外観ができていましたが、最後に完成度を高める作業を行いました！

###様々なサイズの端末で動作確認を行う
以前ウェブサイトを作成したときにも思ったのですが、やはり***様々な端末でデザインが崩れることなくレイアウトが表示されることは大切だと思いました。***
そこで、今回も比較的多くの仮想デバイスをインストールし、なるべく全ての端末で統一的な表示のされ方がなされるようにレイアウトを実装しました。
実際にレイアウトをテストする際には以下のサイトを参考にさせていただきました。

・[色々な画面サイズのAndroid端末をテストする](http://tech.furyu.jp/blog/?p=7321)

私は普段からAndroidの実機を使っているので、最初は実機での実装を進めていました。
しかし、AndroidStudioでは非常に多くの仮想デバイスが用意されているので、今回の開発でこれを使わない手はないと思いました！

###速さにこだわる

リリースしたアプリは、近隣にある飲食店を検索するだけの簡単な機能ですが、最初は検索が完了するまでに***30秒以上時間がかかっていました。***
これでは流石に、普通に検索した方が速いだろうと思い、自分のコーディングに穴が無かったか色々と見直しました。
結果的に色々ネックとなる部分を発見しまして、最終的には体感で２秒〜１０秒くらいまで縮めることに成功しました。
改善できたポイントについては、別の記事として投稿することを考えています！
今回作成したアプリは、単一の条件のみで検索を行う一点特化型でしたので、***ある意味少ない条件で早く検索できるところを売りにしたいと思っていた***ので、速さの部分でコーディングをかなり見直しました。


#アプリをリリースする

他の様々なサイト様には割と審査が速く終わる旨が書かれていますが、私の場合は審査が終了するまでに３日ほどかかりました。
以前qiitaでも話題になっていましたが、ここ最近でAndroidアプリの審査が厳しくなったからでしょうか。
ですので、待っている間は少し緊張しましたが、***いざリリースされたときの喜びは何にも変えがたいものとなりました。***

リリース作業自体は、割とやることが多い印象を受けました。
アプリは作ったら終わりというわけではなく、アイコンを作成したり、アプリを紹介するためのスクリーンショットを撮ったり、紹介文を考えたり...割と様々なことをやらなければならないのだと今回の開発で知りました。
しかし、今回の開発で一回一連の作業を経験することができたので、***次回はもっとスムーズにリリース作業に取り組むことができるという実感も得ることができました！***
リリース作業については以下のサイトを参考にさせていただきました！

・[Google Play Storeにアプリを公開する](https://qiita.com/minuro/items/536ac3f7c27c1442a1cb)

参考にさせていただいたサイトでは大きく分けて4つの項目についてタスクを完了すればよいことになっていますが、現在は1つやるべき項目が増え、***全部で5個になっていました。***

![Screen Shot 2019-09-13 at 22.33.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469694/cb5af7cb-5bb7-d085-7b82-af21af8ccad7.png)

灰色のチェックポイントがリリースするまでに完了するべきタスクとなっていて、これらを全て完了させることでリリースの準備が整うようです。

後、割と大変だと思ったのはapkファイルを作成するところです。
Androidのアプリでは、リリースに際してapkファイルというものを作成する必要があります。
詳しくは以下のサイトを参考にさせていただきました。

・[[Android] アプリを Google Play に公開、apkファイルの作成](https://akira-watson.com/android/apk.html)
・[アプリを公開する為に必要なapkファイル（アプリを1つのファイルにパッケージしたもの）を作成する。](http://android.saetl.net/appli_release_apk.html)

以上までの過程を経てリリースの申請まで終われば、後は審査が終わってアプリの公開を待つのみです！
#最後に
まず、自分のアプリをリリースできたことに関してとても喜びを感じています。
何か一つ成し遂げたというような達成感を感じました。
アプリ自体はとても簡易なもので、ベテランというにはまだ程遠いですが、プログラマとしてまた一歩成長できたことを実感しています。

もちろんアプリがリリースできたからといって***安心ばかりしていられない***とも思っています。
リリースしたアプリに関してはこれからも改善していくつもりですし、また新たなアプリ開発をする機会があればどんどん挑戦していこうと思います！