今だから読みたい -「Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン」を読んだ

 Androidの開発に携わるようになって半年ほど経過しました。RxJavaやDaggerなどのライブラリ、ナウい設計のフレームワークなど、様々な技術要素に揉まれながら何とかやってきましたが、いまいちAndroidと仲良く慣れたような気がしません……。
 一度基礎からやり直そうかと思っていたところ、今年発売の新しい入門書が出ていたので読んでみました。『基礎&応用力をしっかり育成! Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン』です。
 2月に発売されたばかりで、もちろんAndroidStudio3対応です。

基礎&応用力をしっかり育成!  Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS)

基礎&応用力をしっかり育成! Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS)

目次と学べること

  1. Androidアプリ開発環境の作成
  2. はじめてのAndroidアプリ作成
    • Androidプロジェクトの作成方法について
  3. ビューとアクティビティ
    • ViewのそれぞれのXMLタグの意味、使用方法
    • ViewのXMLでよく使う属性
  4. イベントとリスナ
  5. リストビューとダイアログ
    • リストビューの生成と描画(ArrayAdapter)
    • リストへのクリックイベントの設定
    • Toastの生成と表示
    • Dialogの生成と表示
    • Contextについて
  6. ConstraintLayout
    • ConstraintLayoutの概要、使い方
  7. 画面遷移とIntentクラス
    • リストビューの生成と描画(SimpleListAdapter)
    • Activityの追加方法
    • インテントを使った画面(Activity)遷移
    • Activity間のデータの受け渡し
    • Activityのライフサイクル
    • AndroidのLogについて
  8. オプションメニューとコンテキストメニュー
    • オプションメニューの生成と描画
    • コンテクストメニューの生成と描画
  9. フラグメント
    • Fragmentの生成
    • Fragmentのライフサイクル
    • Activityへのアタッチ
    • Fragmentの遷移とデータの受け渡し
    • Fragmentを使った複数サイズの画面対応
  10. データベースアクセス
    • SQLiteデータベースを使ったデータ永続化
  11. 非同期処理とWeb API連携
    • AsyncTaskを使った非同期処理とスレッド
    • AndroidでのHTTP通信(外部ライブラリの使用は無し)
  12. メディア再生
    • 音楽ファイルの再生、停止
    • 音楽ファイルのループ再生
    • 音楽ファイルの巻き戻しと早送り
    • 素敵なフリー素材サイト(!)
  13. バックグラウンド処理と通知機能
    • サービスを用いたバックグラウンド処理
    • 通知の生成とActivityの外部起動
  14. 地図アプリとの連携とGPS機能の利用
    • 暗黙的インテントの使い方
    • 位置情報の取得方法
    • Permissionの確認と取得時のハンドリング
  15. カメラアプリとの連携
  16. マテリアルデザイン
    • マテリアルデザインの概要
    • ScrollViewの使い方
    • ToolBarの使い方
    • スクロールに応じて動的に変化するToolBar
  17. リサイクラービュー
    • ScrollViewとRecyclerViewの違い
    • RecyclerViewの使い方

いざ洗い出してみるとすごい量です。。。

経歴

  • 2017年新卒
  • Android開発歴は半年
  • 学生時代はお手伝いとしてSpringとRailsでバックエンド開発を2年ほど

所要時間

 けっこう時間をかけてゆっくり読み込んだのですが、コードを写経しながらでも3日ほどで終わりました。
 ただ、多くの題材を扱うのであまり急いでやっても仕方がないかも……?

感想

 Android開発を始めるとき、この本があればかなりスタートダッシュを決められたのでは……?と思うほど、僕にはぴったりでした。
 Android開発の入門書というと、初めにViewの説明があったりなかったりした直後にActivity, そのライフサイクルの話がいきなりくるパターンが多いイメージです。
 この本では、作るアプリのイメージ→写経用のコード→解説の順番に章が立てられています。中でも、コード→解説をかなり細かい単位で繰り返しているのが印象的でした。頭ではなく体で覚えるタイプの僕には大変ありがたかったです。
 ちなみに、本のコードには省略されている箇所があるので、全部をこなそうとするとサンプルソースは必須です。
 また、上を読んでもらえればわかりますが、目次以上の内容が盛りだくさんです。個人的にはここがかなり有難くて、例えばContextなんてなかなか理解に手間取るポイントだと思います。このあたりのきめ細やかさもよかったです。

よかった章

 本を通して読んでみて、個人的に結構抜け漏れがあったのがリスト操作の章でした。リスト操作周りの処理を何回も一気に書く機会って実際の開発フェーズだとそんなに無いような気がするので、まとめて理解して手になじませるにはいい機会だったなと!
 また、マテリアルデザインの章も今この時期にはかなり貴重な学習材料だと思います。Android開発の中で、View周りのpropertyとかThemeの継承関係とかって何となくやりがちな分野ではないでしょうか?(そんなことないのだろうか) 短いサイクルでプラットフォームであるAndroidOSが新しくなっていく中で、最新版のOSの話題が本で手に入る今だからこそより一層価値がある章のはずです!

気になったこと

褒めてばかりでもステマっぽくなってしまうので、2点指摘しておきます。

誤字

初版ということもあるかと思いますが、ちらほら誤字脱字が見受けられました。ただ、理解を妨げるようなものは無かったはず。

カメラの章について

 かなり限られた用途かもしれませんが、業務上ここでのカメラの用途だと不十分でした……。
 本の中では、Intentを使ってAndroid標準のカメラアプリを使って写真を撮影する方法が推奨されています。(Googleもこの方法を薦めているようですね)
 一方、カメラ機能としてQRコードやバーコードを読み込みたい、といった要望って少なからずあるような気がしています。GoogleからBarcodeAPI(https://developers.google.com/vision/android/barcodes-overview)として提供されていますが、これのハンズオンとは言わずとも、紹介はあってもよかったのかな、と!

推奨読者層

 始めてプログラミングを始める人にはちょっと厳しいと思います。本の帯にも、対象はJava言語の学習者、とあります。Javaの解説は無く、基本的に関心はAndroidです。
 一方、ある程度プログラミング言語を触ったことがあるけどAndroid開発は初めて!という人には是非オススメしたいです。特に、プログラミング経験がほとんど無いなかで会社の研修を終えた方なんかには最適だと思います。「会社の研修」っていうのがミソです。特にそれを感じたのが、DBの章。SQLの知識はもちろんですが、JavaのDB周りを触ったことがないと調べることになりそうな箇所がいくつかありました。

 僕はそれだけでなく、数ヶ月ほどAndroidを開発したことがある人にもこの本を読んで写経してほしいです。皆さん、上の学べること、全部説明(とは言わずとも、イメージ)できますか?
 最近のAndroidでホットな話題だと、冒頭で書いたような設計やライブラリなどのものが多いように感じます。その中で、体系的にしっかり腰を据えてAndroidの学習を進める機会ってなかなか得られるものではないように思えます。この本のタイトルにもある通り、「なんちゃって開発者にならないため」には、Android StudioのNew Projectをした数がものを言うこともあるはずです。機能追加とリファクタリングだけでは経験が偏る、っていうのは僕がここ最近ひしひしと感じていることです。。。

合わせて読みたい記事、本など

まとめ

  • Android8.0が最新の今だからこそ読んで欲しい!
  • 手を動かしながら学びたい人におすすめ