Android学ぶ上での書籍について

一年前くらいに書いた記事の書き直し。紹介している書籍の中には情報が古いものになってしまっているものもある。

現在(2016/07/16)のAndroid開発の状況も考えた上で、ちょっとしたコメントを記載した。

Libraryや設計等学ぶことが増えた印象があるので、今書籍でAndroidを学ぶことはできるのか?という疑問もあるが…。

そういった意味では最近出た「黒帯エンジニアが教えるプロの技術 Android開発の教科書」のように、実践 + トレンドが学べる書籍がもっと増えてくれると良いのかなーとかとか。

hack-it-iron.hatenablog.com

追記 2017/02/26

基本からしっかり身につくAndroidアプリ開発入門 Android Studio 2.x対応を読んだので追記した。

Androidを学ぶ上で読んできた書籍

読んだ書籍はブクログにまとめているので、ざっくりAndroidの書籍だと下記のようなものを読んできた。

http://booklog.jp/users/operando4/all?category_id=2395254&status=all&rank=all&sort=sort_desc&display=front

まだ読んでないものだったり、読んでいる最中のものがあるけど、その中から個人的に役に立った書籍をまとめておく。

はじめに読んだAndroid本 - 初歩からわかるAndroid最新プログラミング

Android開発をはじめて最初に読んだ書籍が「初歩からわかるAndroid最新プログラミング」だったな。

Android開発をはじめたので、約4年前くらいだった気がする。

初歩からわかるAndroid最新プログラミングは、Androidとはなにか?Activityとはなにか?みたいなことをつらつら書かれていた感じかな。

サンプルコードはほとんど動かした記憶がない。でも、基礎的なことを文字で理解するのにすごい役に立った。

入門者向けの本

基本からしっかり身につくAndroidアプリ開発入門 Android Studio 2.x対応は読んだ。

ある程度読み込めばそこそこ動くアプリは作れるようになりそうな構成だけど、わりとコードが多くて読むのは大変…。

TechBoosterはいいぞ

読み物としてTechBoosterのAndroid本はとてもいい!

実際に日々最前線で開発しているエンジニア達が書いているので、新しい技術からTips的なテクニックまで幅広く学べる。

Androidにどっぷりつかりたいのであれば読んでみるといいよ!

techbooster.booth.pm

中級者向け?と読んでよい書籍

ある程度Android知っていることが前提で書かれていて、発展的な内容が書いてある書籍。

入門書やある程度Android開発に慣れてきた人は、読んでみるといいと思う。

良いAndroidアプリを作る139の鉄則

良いAndroidアプリを作る139の鉄則

Effective Android

Effective Android

  • 作者: TechBooster,小太刀御禄,出村成和,重田大助,西岡靖代,宮川大輔,柏本和俊,あんざいゆき,八木俊広,木村尭海,小林慎治,有山圭二,中西良明,わかめまさひろ,新井祐一,桝井草介,久郷達也,寺園聖文,shige0501,山下智樹,前田章博,秋葉ちひろ,末広尚義,中澤慧,日高正博,塚田翔也,井形圭介,中川幸哉,山崎誠,山下武志,なまそで,橋爪香織,さとうかずのり,l_b__,ゼロハチネット,長汐祐哉
  • 出版社/メーカー: インプレスジャパン
  • 発売日: 2014/01/17
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (8件) を見る

(合本)Androidプログラミングレシピ増補改訂版

(合本)Androidプログラミングレシピ増補改訂版

黒帯エンジニアが教えるプロの技術 Android開発の教科書 (ヤフー黒帯シリーズ)

黒帯エンジニアが教えるプロの技術 Android開発の教科書 (ヤフー黒帯シリーズ)

booth.pm

Effective Android」は、かなり幅広く色んなことが書かれているので、非常に面白かった。今でもたまに気になったところを読み返したりしている。

Androidプログラミングレシピ」は、昔のやつを読んだ。新しいやつは二冊に分かれていて、範囲も広い。ちょっと内容が古いものもあったりするので、そこら辺は微妙なんですが、全体の内容はともていい。

良いAndroidアプリを作る139の鉄則」と「現場で生まれた設計パターン」は、とてもいい内容だった。まさに「中級者」向けの書籍だと思う。

実践で活躍しているエンジニアが書いているので、実務等に直接役に立つ内容になってます。

黒帯エンジニアが教えるプロの技術 Android開発の教科書」は、最近出たAndroidの書籍の中でかなりいい感じだった。基礎的なことは簡潔に書き、実践に近い形の知識が書いてある感じ。

今の開発トレンドみたいなのもなんとなくわかるのでオススメできる一冊。


ちなみに、WEB+DB PRESS Vol.81の「Android最新開発環境」に実践で活かせることがいっぱい書いてある。

こんな感じの内容がまとまった書籍を一冊出して欲しいです。

WEB+DB PRESS Vol.81

WEB+DB PRESS Vol.81

クックパッドのエンジニアが書いているもので、初心者の時に悩むパッケージ構成やクラス名の付け方等、すごい役に立つことが書いてある。

他にもテストやCIのことも書かれているので、興味の幅を広げるのにもいいと思う。

Master of Fragment

Master of Fragment

Master of Fragment」は、Fragmentの理解をさらに深めるためにとてもいい書籍だった。

食わず嫌いでFragmentはやらない!というのは、やっぱり無理なのでこれを読みながらFragmentを学ぶのがいいと思う。

DroidKaigiであんざいさんが、「まだβ版なんだけど、さらにFragmentで躓くところをまとめて更新したい」的なことを言っていた気がします。

期待して更新待ってます!

デザイン・UI本はこれしかないでしょ

デザイン・UI本はまあこれを読んでおくといいと思う。

これらの書籍はAndroidでデザインを組む上で、今もなお重要になる情報が詰まってるのでオススメ。

Android Pattern Cookbook マーケットで埋もれないための差別化戦略」では、Viewのカスタマイズについても触れているので、Viewのカスタマイズは苦手だなーと実感してる人は、まずはこれから読んでみるのがいいと思う。

この書籍でView周りの基礎的なことは、ほとんど学べるはず。


Smashing Android UI レスポンシブUIとデザインパターン」も今読んでるけど、面白い。

こっちは論理的にUIやデザインについて学べる感じの内容になってるかな。

Smashing Android UI レスポンシブUIとデザインパターン

Smashing Android UI レスポンシブUIとデザインパターン


あと色んなスマホアプリのUIをコンポーネントごとに解説しているオススメの書籍。アプリのジャンル別によくある画面遷移の例等も書かれていて、非常に役に立つ。

一年前のものだけど、UIデザインわからん!という人は今見ても役に立つことが多くのっていると思う。

スマートフォンのためのUIデザイン ユーザー体験に大切なルールとパターン

スマートフォンのためのUIデザイン ユーザー体験に大切なルールとパターン

セキュリティはこの書籍から

Androidのセキュリティ関連で有名なタオソフトウェア様が出している書籍

Android Security 安全なアプリケーションを作成するために

Android Security 安全なアプリケーションを作成するために

Androidのセキュリティとはなんぞや?ということを知りたいのであれば、まずはこれを読んでみることをオススメします。

書籍に書かれていないことはいっぱいあるのですが、何も知らない状態で追っかけるのは難しい。

なので、ある程度知る!という意味ではとても役に立つ内容です。


あと書籍ではないが、「Androidアプリのセキュア設計・セキュアコーディングガイド」が実践的でとても役に立つ。

そろそろセキュリティ意識しないとなーとかセキュリティわからん!という人は、絶対に読んでおいた方がよいと思います。そう、オススメとかではなく読んでおいた方がいい!です。

『Androidアプリのセキュア設計・セキュアコーディングガイド』【2017年2月1日版】を公開しました。 | JSSEC

PDF Androidアプリのセキュア設計・セキュアコーディングガイド

Android 6 / 5 などの新しいAndroidが知りたいなら

Android 6.0( marshmallow )やAndroid 5.0 ( Lolipop )などの新しいAndroidの機能や実装を知りたいなら以下を読んでみるといいと思う。

booth.pm

booth.pm

Androidは新しいOS Versionが市場に浸透するスピードがとても遅いという話があるけど、だからって新しいOSの技術を理解しなくてもいいという話ではない。

OS Versionが新しくなれば、便利な機能やセキュリティを守る機能等色々ユーザにとっても大事なことが多くあるのでチェックしておく方がいい。

内部構造とかちょっと中身の動作を知れる書籍

私が読んだ中では、この二冊かなー

Androidのなかみ InsideAndroid

Androidのなかみ InsideAndroid

Efficient Android Threading: Asynchronous Processing Techniques for Android Applications

Efficient Android Threading: Asynchronous Processing Techniques for Android Applications

InsideAndroid」は、とても面白い内容になっている。内部構造とか興味ないわーという人にはオススメしないけど。

私のように、Androidの内部構造とかsourcecodeを読むのが好きな人にはとてもオススメできる一冊。

Efficient Android Threading」は、これをAndroid始めた頃に読みたかったくらい素晴らしい内容だった。

Android内部のThreadに関することが、細かくまとめられているので今読んでも参考になることばかりでした。

JavaのThread本を読んでると、さらに理解が深まる一冊。

Android仮想マシン Dalvik編

Androidの仮想マシン Dalvik編

Android仮想マシン Dalvik編は最近内容が更新されました。

更新される前に少しだけ読んでみましたが、ここまで内部の話になるとまあ面白いかどうかはその人次第かと(笑)

私はこーゆーのも好きなのでコードと合わせて読んでいこうかと思ってます。

テストの書籍

Androidのテスト周りはここ数年でEspressoやAndroid Testing Support Libraryの登場で大きく変わっている。

さらにAndroid NからはActivityInstrumentationTestCase2やActivityTestCaseなどのSKDに含まれている多くのTest系クラスがdeprecatedになる。

なので、今のAndroid Testに関する書籍でいいものはまだ出てない気もする。

Android Testing Support Libraryが出る前のAndroidの関してのテストについては、この一冊で良かった。

Androidアプリ テスト技法

Androidアプリ テスト技法

Androidのテスト周りは、移り変わりや動きが早い印象がある。

なので、書籍をガッツリ読むよりも、色んなサイトでどんなテストツールがあるのか、定期的にチェックしていく方がいいと思う。

テストコードを書く上でJunitの知識は絶対に必要になるので、Junit実践入門は読んでおくと役に立つ。

AndroidでもJunit4が使えるようになったし、Androidだけの知識だけではないので、この本はとてもオススメ。

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

洋書で面白そうな書籍

Exploring SE for Android

Exploring SE for Android

Android 5: Programmieren für Smartphones und Tablets (German Edition)

Android 5: Programmieren für Smartphones und Tablets (German Edition)

Android SQLite Essentials

Android SQLite Essentials

Android SQLite Essentials」は、自分のSQLiteの知識を深めるために読んでみようと思って買った一冊。

Android SQLite Essentials」読んでみたけど、基礎的なことが中心のものだった。

Exploring SE for Android」は、概要を見るところAndroidSELinux周りの話が書いてあるのだと思います。

どっちも面白そうだから、洋書読むの慣れてきたら読んでみる。

SDK本は私には合わなかった・・・

年に一度OSのメジャーアップデートが行われ、SDKの中身も変わる速度が早くなっていると思ってる。

なので、SDKAPIをつらつらと紹介するだけの書籍は役に立たないと思ってる。

公式ドキュメントを読まないと書いてないこともあるので、やっぱり公式ドキュメントや実際にコードを読む方がいい。

ということで、以下の本はあんまり役に立たなかったし、あとになって読み返すこともなかった本。

しかし、どの本からでも学んだことはあるので感謝してます。

改訂2版 Android SDK逆引きハンドブック

改訂2版 Android SDK逆引きハンドブック

AndroidSDK開発のレシピ第2版

AndroidSDK開発のレシピ第2版

SDKのまとめみたいな本は、ものによってはすごい分厚くて持ち運ぶこともできなかった。

あと、開発になれてくると基本的なSDKの使い方は覚えてくるため、この手のSDK本はあまり見なくなる。

それに今はQiitaやネットでSDKの使い方は調べればだいたいわかってしまう。

でも、読む必要がないということはないと思う。

開発をはじめたばかりだと、「どんなSDKがあるのかな?」「どんなWidgetがあるのかな?」みたいな疑問ばかりあるので、そんな時にはSDK本をパラパラ程度に見ておくといいと思う。

そこから単語だけ覚えて、必要な時に検索して、それについて使い方を覚えていく足がかりになる。

おわりに

Androidエンジニアは、Android関連の書籍を平均でどれくらい読んでいるのだろう?

入門書をほとんど読んだことないから、オススメの入門書知りたい!

てか、いまだにSQLiteをガッツリしっかり解説してる書籍がないことを残念に思う…。

React始めましたよよよー

React始めたので雑にどうやってやっているか書き残しておく。

WebStormいいぞ!!

とりあえずWebStorm入れて書き始めてます。

補完がめっちゃ聞くのですごく助かる。

www.jetbrains.com

とりあえずReact Tutorialやってみる

さてさて、Reactやるかーと言ってもどこから始めて良いのかよくわからないので、とりあえずReact Tutorialやってみた。

何も考えずにとにかく書いて動かしてみた。

facebook.github.io

英語なので解説でよくわからない部分はこっち見た。

facebook.github.io

あーなんとなくこんな感じかーという印象。とりあえずこれをまず動かしてみるのが良さそう。

React、Virtual DOM、Fluxについて詳しい人の話を聴いてみる

数年前にmozaic.fmで@mizchiがReactやVirtual DOMについて話していたのを思い出したので聴いてみた。

mozaic.fm

うん、これはとても聴いて良かった。

どこかのドキュメントを頑張って端から読むよりもまずはこれを数回聴いてみる方と良い。

Reactと一緒によく語られるVirtual DOMやFluxについて、何がブレイクスルーでどんな役割のものなのかをさくっと理解できた。

RebuildでもReact、Flux、Reduxについて話されていたので合わせて聴くと良い。

rebuild.fm

rebuild.fm

Fluxやってみる

WEB+DB PRESS Vol.87でnaoyaさんがFluxについて書いてたので、それを元にFluxやってみた。

gihyo.jp

facebook.github.io

Fluxはアーキテクチャなのでそれを元に色んな実装があるらしいのですが、WEB+DBではFlux実装のFluxxorを使った題材になってます。

Fluxxor - Home

データが一方通行へ流れるようにするアーキテクチャが特徴のFluxについてなんとなく理解できた。

また、まずはReactだけで書いて、次にReact + Fluxxorで書くという流れなのも良かった。

さらに自分で簡単な題材を元にReactで書いて、次にReact + Fluxxorという流れをやってみれば慣れる気がする。

まとめ

React面白いなー。Fluxも面白い。Reduxもやってみよう。

書いたものはここに置いてある。

github.com

shinobu.apk #3 を7月にやりたいぞ!という気持ちだけ書いておく #shinobuapk

そろそろshinobu.apk #3をやりたくなったので、7月にやりたいぞ!やるぞ!という気持ちだけ書いておく。

そう、今までより雑な感じでやりたいです。

おい、人集めるのに雑にやるのか?あぁ?って感じですがいい意味で雑ってことで。

じゃそれで

ちなみに、ちょっと色々次はやりたいこともあり、忍だけにミスドでも用意しようかなーとか。ハイコンテクストですねー。

なんぞや、shinobu.apkとは?

興味あれば以下とか見てください。

tech.mercari.com

shinobu-apk.connpass.com

hack-it-iron.hatenablog.com

まとめ

現場からは以上です。

技術の幅を広げようと思う話

そろそろいい年頃なので技術の幅を広げたいと思っている今日このごろ。

とはいえ、フルスタックになるのかい??という話ではなく。

漠然と「技術の幅を広げるぞい!!」と意気込んでもきっと何も始まらないので、ちょっと別のアプローチを取ってみた。

というわけで、この会社いいなーとかこのサービスいいなーと思ってる会社の採用情報を見て、どんな技術を持ってる人が欲しいのか、今どんな技術を使っているのか調べてみた。

調べてみると意外とこれは面白いし、技術の幅を広げる際にどの技術を取り組んでみようかなーという一つのヒントになる。

技術の幅を広げないと...と漠然と考えている私と同じような人がいたら、まずはこれを試してほしい。

kyobashi.dex #3で「Gradle PluginとCIと俺」の話をしてきた #kyobashidex

kyobashi.dex #3 で 「Gradle PluginとCIと俺」という話をしてきましたー。

rmp-quipper.connpass.com

主に最近仕事とかで新規にCI環境の構築をしたりして遊んでて、gradle-slack-pluginを使ったGradle Task + CI + Slackへの通知という仕組みを構築してみた!という話をしてきた。

ちなみに、今回発表した内容はGradleを使う開発ならAndroidじゃなくても仕組みは導入できる。

サーバサイドJava等でGradleを使っている場合でも適用可能だと思う。

Gradle PluginとCIと俺


文字起こしはGithubにも置いてあります。

github.com

資料内で紹介していることはだいたい以下のSample Projectにまとまってます。 仕組み自体はCIサービスといくつかのGradle Pluginを組み合わせる感じで実現しているので、Libraryみたいなさっくり導入できるものではありませんが難しくはないです!

めっちゃ雑ではありますがREADMEに同じ環境を構築するまでの手順をざっくり書いておきました。

github.com

gradle-slack-plugin + gradle-versions-plugin + CI

発表内でも紹介している中で特に「gradle-slack-plugin + gradle-versions-plugin + CI」という構成が気に入っている。

これで何ができるのかを簡単に言うと「CI上で使っているライブラリの新しいバージョンがあるかどうかをCheckして、その結果をSlackに通知する」って感じ。

以下のような感じでCI上で実行した結果がSlackに通知される。

f:id:operando:20160529122649p:plain

GithubにあげてるSample Projectを見ればわかるのだが、そんな難しいことはしてない。

Gradle Pluginの設定 + CIの設定 くらいの手順でだいたい構築できる。

自分はTravis CIを使ってるので設定方法はQiita等を調べれば色々見つかるし、Gradle Pluginの設定は使うやつのREADMEを見れはわかる。

Travis CIの設定がだるかったらsecret以外はSample Projectの.travis.ymlをパクってもいい。

これを発展させて、ライブラリを新しいバージョンへ上げるPull RequestなどをCIから自動的にできるようになるとさらに素晴らしいかも。

ちなみに、gradle-slack-pluginはoriginalを自分がforkして魔改造してるやつの方が使いやすいと思うのでオススメ!

github.com

可能性は無限大

結局これはgradle-slack-pluginの仕組みを使って、特定のGradle Taskの出力結果をSlackに通知しているだけの話なので、可能性は無限大だ。

例えば以下のようなこともできる。

色んなGradle PluginのTaskとgradle-slack-pluginを組み合わせるだけなので、構築も簡単、可能性は無限大!という素晴らしい世界だ。

誰かが素晴らしいGradle Pluginを作って、さらに素晴らしい構成を作ってくれることを期待してるし、自分も色んな構成で試行錯誤していく。

結局何が大事なのか

色々構成してCI上で行った結果を自分たちが日々チェックする環境へ通知してあげることはわりと簡単にできる。

その日々チェックするということだ大事だと思ってる。

CIと掛け合わせることで、日々チェックしたいことが自動で通知される仕組みが整うのでいい。

その結果を見て実際に何かをするかどうかは別として、自然な形で自動的に通知され、ふと思った時に確認できるということを大事にしたかったので、今回話したような構成を考えてみた。

まとめ

kyobashi.dexはいいぞ!