はじめに
私は、現在大学院修士1回生で、研究をしながら趣味で楽しくサービス開発をしてきました。その中でここ1年半くらいの間は、特にAndroidの開発をメインに行ってきました。その際には基本的には独学で技術を学んできました。そこで、思い返してみると反省していることや、非常にやってよかったことなどが多くあると感じました。
それを共有することで、__今からAndroidの分野に興味があるけど、どうやって勉強していいのかわからないという人__にとってためになる記事になればいいなと考えています。ちなみに、この記事ではKotlinやJavaでのネイティブアプリ開発についての話になります。
始めたてのころ
初めてまずやることのおすすめとしては、動画教材での学習です。よくありがちなのが、最初に大きい本を買って、訳もわからずに挫折してしまったり、なんか分かった気になったけど実際に作るイメージが湧かずあまり意味が無かったと感じてしまうことがあると思います。なので、この段階では実際に動くものを動画というイメージしやすい形で、講師の人と一緒に手を動かしてコードを書くというのが一番良いと思っています。個人的にも文字だけで説明されるよりもわかりやすいですし、多少聞き流しながらでもなんとなく理解できるので無理せず継続できるのではないかと思います。
おすすめの動画サイト
- Udemy セール中なら破格の値段で良質な教材を購入することができます。ただ、日本語での教材が少ないのが悲しい…
なんとなく分かってきたころ
動画での学習をこなして、画面にボタンやテキストを表示したり、RecyclerViewを使用してリスト表示がなんとなくできるようになってきたら、自分で簡単なアプリを作ってみることがおすすめです。どれだけ動画を見て知識をつけたとしても実際に自分で開発してみたら、思ったように動いてくれなかったりエラーが発生してしまういうことがほとんどだと思います。なので、結局実際に手を動かして作ってみないと技術的に成長できないと思います。なので個人開発でアプリを作ってみるというのがおすすめです。
ただ、いきなり一人で個人開発をすると右も左もわからず、つまずくことも非常に多いのでモチベーションを保つのも大変だと思います。なので、僕なりのおすすめの勉強方法を紹介します。
アーキテクチャを理解する
初心者の時に悩むこととしては、どのファイルをどの程度分割すればいいのか?、とか全部ActivityとかFragmentに書いていいのかとか?とか動画や書籍での説明が省略されがちなコードの書き方とかで悩む方は多いと思います。私も最初Androidアプリの個人開発を始めた時は、ほとんどの処理をActivityやFragmentに記述してしまっていて、コードを追加していけば行くほど処理を追いずらくなったし、どこに追加すればいいのかその都度頭を悩ませていました。そんな問題を解決するために、巷にはアーキテクチャというものがあります。ここでは詳しくは説明しませんが、それを理解することで、データベースにアクセスする部分はこう、UIにまつわる部分はこう記述するというように型にはめてアプリを作っていくことができます。色々な種類のアーキテクチャがありますが、まずは公式であるGoogleの推奨アーキテクチャが理解もしやすいので、はじめに勉強してみるのがおすすめです。
実際の勉強方法としては、Android Architecture Blueprintsを読み込むのがおすすめです。これはGoogleが公開していて、Todoリストのアプリを様々な手法で実装したものです。このプロジェクトを読み込むことでかなりアーキテクチャに関する理解が深まると思います。また、Android アプリ設計パターン入門という書籍も体系的にAndroidのアーキテクチャについてまとめられているので非常に勉強になりました。
よく利用されるライブラリを知る
Android開発において、ローカルデータベースへのアクセスができるRoomやAPI通信を行うためのRetrofitといった、どんなアプリでも利用されるようなライブラリというのがいくつかあります。そういった便利なライブラリを利用することで開発効率が格段にアップするはずです。そういったライブラリの存在を知るためにも、サンプルプロジェクトや公開されているソースコードを読むというのが非常に効果的です。また、技術カンファレンスの動画も公開されているものが多いので、それらを見るのも最新の動向を知る上で非常に参考になります。
存在を知った上で次にそのライブラリの一般的な使い方をどうやって理解するかですが、当然検索してQiita等で情報を集めるのもそうですが、それでいまいちわからなかった時は、英語が多いですがYoutubeで解説している動画をみることがおすすめです。無料でかなり有用な動画がたくさんあります。
おすすめの技術カンファレンス動画
お手本にするコードを決めて、それを忠実に真似る
ただ、実際に学んできたアーキテクチャやライブラリを、ある程度複雑なアプリの中でどのようにして導入すればいいのかという疑問が出てくるかもしれません。そういう時は公開されていて、綺麗に書かれているコードを真似て、自分のアプリに応用するという手法がいいと思います。そうすることで、これまで曖昧だったコードの書き方が矯正されて分かりやすいコードを書く癖が生まれますし、実際にエンジニアとして働く場面を想定しても、それぞれの現場でアーキテクチャに合わせたコードを書くということが必要になってくると思うので、そういう点でも良いと思います。最後にお手本にするのに、おすすめのプロジェクトですが、私はDroidKaigi 2020が良いと思います。アーキテクチャも考えられていて、最新の技術が非常に多く採用されていますし、細かい部分まで非常に参考になるプロジェクトです。
最後に
やはり独学で勉強していく上では、自分でアプリを作ることが技術力をつける上で1番の近道だと思います。ただ私自身昔は、綺麗なコードでなくても、新しい技術を使わなくても、サービスを作ることができればある程度いいと考えていましたが、エンジニアになる上で避けては通れない部分だと思いますし、何よりも新しい技術を勉強するのが楽しいと思えるようになりました。なので、職業としてエンジニアを目指す方には作るだけでなく、その技術の動向を意識して筋道立てて少しずつ理解できる範囲を増やしていって欲しいと思っています。