雑草SEの備忘録

東大を卒業し、SEとして働くことになった。備忘録的に作業を綴る。

Androidのアプリ開発を自走できるようになるまで

このブログを書くのもかなり久しぶりになってしまいました。
最近は技術系の話はQiitaに書くようになって、個人ブログは放置している状態なのですが、今回はコラム的なものなのでこちらで書きたいと思います。

 

かれこれRailsの仕事を初めてもうすぐ3年になります。ベンチャー企業で働くと時が経つのが早いです。

と同時に3年もRailsの仕事を続けているのかという驚きもあります。

と言っても最近はGoogle spreadsheetとにらめっこしたり、Google presentationとにらめっこする日々も多く、気づいたらcommitしていないという日も何度かあり、プライベートで作業しているリポジトリも諸般の事情によりbitbucketを利用していたりするのでGitHubに草がつかないということが出て来るようになりました。

 

さて、そろそろ新しいこともしたいなと思い、業務の合間にRails以外の勉強もしていて、6月にはcouseraのdeeplearning コースを3〜4ヶ月かけて修了するなどを行っていたのですが、まずは広く浅く学んでみようということで、Androidアプリ開発の勉強も本格的に着手しました。

 

今日は、Androidのアプリ開発を学び始め、ある程度自分で調べて実装できるようになる(自走できる)までどう勉強したかを述べたいと思います。

 

Androidアプリ自体は、昨年お6月から今年の3月ぐらいまでよちよち.kotlinという勉強会を開催しており、そこで経験者をお招きし、kotlinおよびAndroidの勉強をしていました。

とはいうものの、簡単なゲームアプリを作って公開した程度で、画面も一つしかなく、Androidの基本的なことを知らないまま開発してしまったので、基礎からきちんと学びたいなと思っていました。

まず、Androidアプリ開発をインターネットの情報で勉強するのは初心者にはなかなか至難の技だと思います。というのもAndroid自体は結構前から普及しており、かつ進化も早いため、「Androidアプリ開発勉強法まとめ!」といった記事でも紹介されているサイトが数年前のものだったり、レガシーな情報だったりするものが多いです。

初心者にとってこれをやればOKみたいなものはAndroidに関しては見つけにくいのが現状だと思います。iOSはAppleがSwift Playgroundsなどを提供してくれているのでその点勉強しやすいかと思いますが、Androidはなかなか手強い。Googleの公式ドキュメントも初心者からしてみれば全く何が書いてあるかわからないと思います。少なくとも私はわからなかった。

また、最近はweb開発ややアプリ開発の教室もあるのですが、なかなか高額でかつ時間も取れないということで休日や平日の夜に勉強できるのならばやはり書籍を買って最初から最後までやり遂げるということが大切だと思っていました。受験生の時も多くの参考書を買うのではなく、一つの参考書を何回もやるというのは鉄則です。(私は他の参考書にも浮気していたから成績が悪かった)

 

そこで、丸善やジュンク堂といった本屋に行き、Androidアプリの開発入門的な本を探して見ました。

探すポイントとしては、

出版時期が比較的新しい

前述の通り、進化がとても早いので1年前に出版された情報ですら、最新の環境では状況が違ったりします。

Android Studioの最新版に対応している(2018/8/6現在ではAndroid Studio 3です)

Android StudioはAndroidの統合開発環境なのですが、年1ぐらいでバージョンアップされるので、バージョンが違うとやはり勝手が違ったりします。

レイアウトに関する説明がある

 Androidのデザインの概念を簡単でもいいので記述してくれてあり、概要がわかるものがいいです。また、Android Studioでは、部品をドラッグ&ドロップなどしてGUIで直感的に配置できるのですが、書籍によってはレイアウトファイル(xmlファイル)を載せているだけでGUIの操作方法などを説明してくれていないものもあります。Googleもxmlファイルの記述は不要というプレゼンをしているので、できるかぎりGUIで説明しているものを選ぶといいと思います。ただし、GUIでの説明は画像をふんだんに使う必要があって説明や編集が大変だったりするので丁寧に説明してくれているものが少ない印象です。

サンプルアプリがあって写経できる

プログラミングの学習方法の一つは写経だと思うのですが、きちんと動くコードがあって写経できるものがいいと思います。また、完成品をバンと載せるのではなく、適宜実行できて一つ一つ何をやっているのかがわかる書籍がおすすめです。

kotlinで説明をしてくれている

GoogleがAndroidの開発言語として指定してはや1年以上がたちました。まだまだJavaで開発している現場も多いと思いますが、今後はkotlinがメインになってくるでしょう。であれば、kotlinで説明している書籍が良いと思います。ただし、Javaの知識が不要ということは決してありません。私は新卒で入社した会社でJavaを学んだので基本的なところが把握していましたが、kotlinと並行してJavaも学んでおいたほうが良いでしょう。

 

そんな観点から本屋で漁っていると、比較的最近出版された本で以下の本が見つかりました。 

基本からしっかり身につくAndroidアプリ開発入門 Android Studio 3対応

2018年5月22日発売で比較的新しく、kotlinで解説、Anroid Studioも3系に対応しています。

amazonのレビューを見るとなかなか辛辣な意見もあるのですが、立ち読みして雰囲気悪くなかったので、購入しました。

そして、3週間ほどかけて、すべて写経し終えることができました。改めて、この本のいいところは、

・レイアウトをGUIで説明してくれている

・フラグメント、API通信などアプリで使う基本的なことを解説してくれている

・加えて、JobSchedulerなどバックグラウンドでの処理の仕方も説明がある

などだと思います。今まで断片的に知っていて、Androidについてもやもやしていたところがある程度クリアになったという印象です。

一方で人によっては物足りないかもなと思うのは、

・Retrofit2やormaなどのよく使われるライブラリに関する説明はない

・kotlinで記述されているが、kotlinの良さを最大限に発揮した書き方ではない

・テストの書き方がない

というところです。ただ、安易に外部ライブラリに頼らず最初は初めから組み込まれているもので実装するというのもいい経験だと思うので、入門書としてはいいのではないかと思います。

またkotlinに関しても、あまりkotlin固有のテクニックを使ってしまうと、巷に溢れている情報はまだまだJavaのものも多いので、Javaとの行き来が難しくなってしまうので、これはこれでわかりやすいと思いました。

 

個人的には、この本に加えて、日本語での初のkotlin解説本も読むといいともいます。実は、私は昨年の5月にKotlinスタートブックを購入し、Androidアプリ開発勉強しようと思って読み始め、写経もしたのですが、ちんぷんかんぷんでした。この本は、一通りJavaでAndroid開発できる人向けで、一からAndroidアプリ開発をしようという人向けではないと思います。kotlinの言語仕様を学ぶにはいいかと思いますが、Androidアプリ開発の最初の入門書には向いていません。

ただし、前述した「基本からしっかり身につくAndroidアプリ開発入門 Android Studio 3対応」の物足りないなと思う部分をいくつかカバーしてくれており、私は「基礎から身につく〜」をやってから改めてKotlinスタートブックのAndroidアプリの部分を読んで、ListViewつかっていたところをRecyclerViewに書き直すなど自分風にアレンジしつつ、4時間ほどで読み直せたので、やはり1年前に私にはAndroidの基本的なところが身についていなかったようです。

Kotlinスタートブック -新しいAndroidプログラミング

 今は、オリジナルのアプリを作っている最中で、必ずしも本に出てきたことだけで実装が完了するわけではないものの、google先生に聞けばなんとか先に進めるという状況までなりました。自走できるようになったわけです。

ただし、今の状態ではまだまだ仕事で使えるレベルではなく、アーキテクチャはどうすればいいとか、動くものはできたけどより良い設計はどうあるべきかなどはまだまだこれからといった形です。

 

もし学生の方でAndroidアプリ開発を仕事にしてみたいというのであれば、本を1冊やりきり、オリジナルのアプリでも一つぐらい作ってどこかのベンチャー企業にインターンやアルバイトといったかたちで応募すればお金をもらいながら経験を積めると思います。やはりお金を払って学ぶよりお金をもらいながら学ぶ方が良いですからね。。

 

最後に、Androidを学ぶ上で大事なのは、Androidのオキテに沿って実装する必要があるということ。一からプログラミングをするときは、自分が書くコードがすべてですが、Androidはある種のフレームワークのようなもので、すでに多くのコードがそこにあり、使いたいものを適宜持ってきて使うという感じになります。なので、例えばRecyclerViewを使いたいならば、適切にメソッドをオーバーライドして、自分のアプリに合うようにカスタマイズするという形です。そこに難解なアルゴリズムは存在しません。あるのは、いかにGoogleが指示するように実装していくかです。最初のうちはそれに対してあまり深いことを考えてはいけません。

例えばActivityを作るとonCreateというメソッドをオーバライドしなければいけないのですが、onCreateが実際にどういう実装で使われているのかを追っていては先に進めません。Activityにはライフサイクルがあって、onCreateはこのタイミングで呼ばれるメソッドであるということを盲目的に知識としてインプットします。

実は、2014年頃、新卒の研修でJavaを勉強し、Androidアプリ開発できるようになったぞ!と思って本を一冊買って挫折したことがあります。このときは、ここで内部実装まで考えてしまい、なんでonCreateなの?どういうカラクリで動いてるの?などと考えてしまっておりました。そしてもうわからーん!となったわけです。

この辺りはそういうものだと思って先にするむのが吉です。おそらく理解はあとからついてきますし、場合によっては理解しなくてもAndroidのオキテを把握して置くだけで十分なときもあるでしょう。

 

では、快適なAndroidアプリ開発ライフを〜!

 

2018.8.19 追記)

久しぶりに技術書を頭からきちんとやって、間違いもいくつか見つかったので、出版社にお伝えしたところ、公式サイトにも正誤表を載せていただけました。大きな間違いではないので、あまり困ることはないかもしれませんが、参考にしていただければ幸いです。

SBクリエイティブ:【正誤情報】『基本からしっかり身につくAndroidアプリ開発入門 Android Studio 3.x対応』