Android学ぶ上での書籍について
一年前くらいに書いた記事の書き直し。紹介している書籍の中には情報が古いものになってしまっているものもある。
現在(2016/07/16)のAndroid開発の状況も考えた上で、ちょっとしたコメントを記載した。
Libraryや設計等学ぶことが増えた印象があるので、今書籍でAndroidを学ぶことはできるのか?という疑問もあるが…。
そういった意味では最近出た「黒帯エンジニアが教えるプロの技術 Android開発の教科書」のように、実践 + トレンドが学べる書籍がもっと増えてくれると良いのかなーとかとか。
追記 2017/02/26
基本からしっかり身につくAndroidアプリ開発入門 Android Studio 2.x対応を読んだので追記した。
Androidを学ぶ上で読んできた書籍
読んだ書籍はブクログにまとめているので、ざっくりAndroidの書籍だと下記のようなものを読んできた。
まだ読んでないものだったり、読んでいる最中のものがあるけど、その中から個人的に役に立った書籍をまとめておく。
はじめに読んだAndroid本 - 初歩からわかるAndroid最新プログラミング
Android開発をはじめて最初に読んだ書籍が「初歩からわかるAndroid最新プログラミング」だったな。
- 作者: 柴田文彦,川口仁
- 出版社/メーカー: インプレス
- 発売日: 2014/01/16
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
Android開発をはじめたので、約4年前くらいだった気がする。
初歩からわかるAndroid最新プログラミングは、Androidとはなにか?Activityとはなにか?みたいなことをつらつら書かれていた感じかな。
サンプルコードはほとんど動かした記憶がない。でも、基礎的なことを文字で理解するのにすごい役に立った。
入門者向けの本
基本からしっかり身につくAndroidアプリ開発入門 Android Studio 2.x対応は読んだ。
ある程度読み込めばそこそこ動くアプリは作れるようになりそうな構成だけど、わりとコードが多くて読むのは大変…。
基本からしっかり身につくAndroidアプリ開発入門 Android Studio 2.x対応 プロが本気で教えるアプリ作りの基本「技」 (ヤフー黒帯シリーズ)
- 作者: 森洋之
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/07/29
- メディア: 単行本
- この商品を含むブログを見る
TechBoosterはいいぞ
読み物としてTechBoosterのAndroid本はとてもいい!
実際に日々最前線で開発しているエンジニア達が書いているので、新しい技術からTips的なテクニックまで幅広く学べる。
Androidにどっぷりつかりたいのであれば読んでみるといいよ!
中級者向け?と読んでよい書籍
ある程度Android知っていることが前提で書かれていて、発展的な内容が書いてある書籍。
入門書やある程度Android開発に慣れてきた人は、読んでみるといいと思う。
- 作者: 木田学,おかじゅん,渡辺考裕,奈良進,荒川祐一郎,兒島友三郎,石立宏志,小林正興
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/14
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: TechBooster,小太刀御禄,出村成和,重田大助,西岡靖代,宮川大輔,柏本和俊,あんざいゆき,八木俊広,木村尭海,小林慎治,有山圭二,中西良明,わかめまさひろ,新井祐一,桝井草介,久郷達也,寺園聖文,shige0501,山下智樹,前田章博,秋葉ちひろ,末広尚義,中澤慧,日高正博,塚田翔也,井形圭介,中川幸哉,山崎誠,山下武志,なまそで,橋爪香織,さとうかずのり,l_b__,ゼロハチネット,長汐祐哉
- 出版社/メーカー: インプレスジャパン
- 発売日: 2014/01/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (8件) を見る
- 作者: Dave Smith,Jeff Friesen,吉川邦夫
- 出版社/メーカー: インプレス
- 発売日: 2013/12/17
- メディア: Kindle版
- この商品を含むブログを見る
黒帯エンジニアが教えるプロの技術 Android開発の教科書 (ヤフー黒帯シリーズ)
- 作者: 筒井俊祐,里山南人,松田承一,笹城戸裕記,毛受崇洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/06/18
- メディア: 単行本
- この商品を含むブログを見る
「Effective Android」は、かなり幅広く色んなことが書かれているので、非常に面白かった。今でもたまに気になったところを読み返したりしている。
「Androidプログラミングレシピ」は、昔のやつを読んだ。新しいやつは二冊に分かれていて、範囲も広い。ちょっと内容が古いものもあったりするので、そこら辺は微妙なんですが、全体の内容はともていい。
「良いAndroidアプリを作る139の鉄則」と「現場で生まれた設計パターン」は、とてもいい内容だった。まさに「中級者」向けの書籍だと思う。
実践で活躍しているエンジニアが書いているので、実務等に直接役に立つ内容になってます。
「黒帯エンジニアが教えるプロの技術 Android開発の教科書」は、最近出たAndroidの書籍の中でかなりいい感じだった。基礎的なことは簡潔に書き、実践に近い形の知識が書いてある感じ。
今の開発トレンドみたいなのもなんとなくわかるのでオススメできる一冊。
ちなみに、WEB+DB PRESS Vol.81の「Android最新開発環境」に実践で活かせることがいっぱい書いてある。
こんな感じの内容がまとまった書籍を一冊出して欲しいです。
- 作者: 長嶋享,藤吾郎,八木俊広,日高一明,滝口健太郎,田中慎司,泉水翔吾,海野弘成,佐藤太一,吉村総一郎,伊藤直也,川上大喜,こしばとしあき,舘野祐一,中島聡,橋本翔,渡邊恵太,はまちや2,竹原,川添貴生,沢渡真雪,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/24
- メディア: 大型本
- この商品を含むブログ (1件) を見る
クックパッドのエンジニアが書いているもので、初心者の時に悩むパッケージ構成やクラス名の付け方等、すごい役に立つことが書いてある。
他にもテストやCIのことも書かれているので、興味の幅を広げるのにもいいと思う。
Master of Fragment
「Master of Fragment」は、Fragmentの理解をさらに深めるためにとてもいい書籍だった。
食わず嫌いでFragmentはやらない!というのは、やっぱり無理なのでこれを読みながらFragmentを学ぶのがいいと思う。
DroidKaigiであんざいさんが、「まだβ版なんだけど、さらにFragmentで躓くところをまとめて更新したい」的なことを言っていた気がします。
期待して更新待ってます!
デザイン・UI本はこれしかないでしょ
デザイン・UI本はまあこれを読んでおくといいと思う。
これらの書籍はAndroidでデザインを組む上で、今もなお重要になる情報が詰まってるのでオススメ。
Android Layout Cookbook アプリの価値を高める開発テクニック
- 作者: あんざいゆき
- 出版社/メーカー: インプレス
- 発売日: 2012/11/15
- メディア: Kindle版
- この商品を含むブログを見る
Android UI Cookbook for 4.0 ICS(Ice Cream Sandwich)アプリ開発術
- 作者: あんざいゆき
- 出版社/メーカー: インプレス
- 発売日: 2012/11/28
- メディア: Kindle版
- この商品を含むブログを見る
Android Pattern Cookbook マーケットで埋もれないための差別化戦略
- 作者: あんざいゆき
- 出版社/メーカー: インプレス
- 発売日: 2014/03/20
- メディア: Kindle版
- この商品を含むブログを見る
「Android Pattern Cookbook マーケットで埋もれないための差別化戦略」では、Viewのカスタマイズについても触れているので、Viewのカスタマイズは苦手だなーと実感してる人は、まずはこれから読んでみるのがいいと思う。
この書籍でView周りの基礎的なことは、ほとんど学べるはず。
「Smashing Android UI レスポンシブUIとデザインパターン」も今読んでるけど、面白い。
こっちは論理的にUIやデザインについて学べる感じの内容になってるかな。
Smashing Android UI レスポンシブUIとデザインパターン
- 作者: Juhani Lehtimäki,佐藤伸哉,株式会社クイープ
- 出版社/メーカー: インプレス
- 発売日: 2013/09/27
- メディア: Kindle版
- この商品を含むブログを見る
あと色んなスマホアプリのUIをコンポーネントごとに解説しているオススメの書籍。アプリのジャンル別によくある画面遷移の例等も書かれていて、非常に役に立つ。
一年前のものだけど、UIデザインわからん!という人は今見ても役に立つことが多くのっていると思う。
スマートフォンのためのUIデザイン ユーザー体験に大切なルールとパターン
- 作者: 池田拓司
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/01/20
- メディア: Kindle版
- この商品を含むブログを見る
セキュリティはこの書籍から
Androidのセキュリティ関連で有名なタオソフトウェア様が出している書籍
Android Security 安全なアプリケーションを作成するために
- 作者: タオソフトウェア株式会社
- 出版社/メーカー: インプレス
- 発売日: 2012/11/28
- メディア: Kindle版
- この商品を含むブログを見る
Androidのセキュリティとはなんぞや?ということを知りたいのであれば、まずはこれを読んでみることをオススメします。
書籍に書かれていないことはいっぱいあるのですが、何も知らない状態で追っかけるのは難しい。
なので、ある程度知る!という意味ではとても役に立つ内容です。
あと書籍ではないが、「Androidアプリのセキュア設計・セキュアコーディングガイド」が実践的でとても役に立つ。
そろそろセキュリティ意識しないとなーとかセキュリティわからん!という人は、絶対に読んでおいた方がよいと思います。そう、オススメとかではなく読んでおいた方がいい!です。
『Androidアプリのセキュア設計・セキュアコーディングガイド』【2017年2月1日版】を公開しました。 | JSSEC
PDF Androidアプリのセキュア設計・セキュアコーディングガイド
Android 6 / 5 などの新しいAndroidが知りたいなら
Android 6.0( marshmallow )やAndroid 5.0 ( Lolipop )などの新しいAndroidの機能や実装を知りたいなら以下を読んでみるといいと思う。
Androidは新しいOS Versionが市場に浸透するスピードがとても遅いという話があるけど、だからって新しいOSの技術を理解しなくてもいいという話ではない。
OS Versionが新しくなれば、便利な機能やセキュリティを守る機能等色々ユーザにとっても大事なことが多くあるのでチェックしておく方がいい。
内部構造とかちょっと中身の動作を知れる書籍
私が読んだ中では、この二冊かなー
- 作者: Tae Yeon Kim,Hyung Joo Song,Ji Hoon Park,Bak Lee,Ki Young Lim,Androidフレームワーク研究会
- 出版社/メーカー: パーソナルメディア
- 発売日: 2013/12/18
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
Efficient Android Threading: Asynchronous Processing Techniques for Android Applications
- 作者: Anders Goransson
- 出版社/メーカー: O'Reilly Media
- 発売日: 2014/05/22
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
「InsideAndroid」は、とても面白い内容になっている。内部構造とか興味ないわーという人にはオススメしないけど。
私のように、Androidの内部構造とかsourcecodeを読むのが好きな人にはとてもオススメできる一冊。
「Efficient Android Threading」は、これをAndroid始めた頃に読みたかったくらい素晴らしい内容だった。
Android内部のThreadに関することが、細かくまとめられているので今読んでも参考になることばかりでした。
JavaのThread本を読んでると、さらに理解が深まる一冊。
Androidの仮想マシン Dalvik編
Androidの仮想マシン Dalvik編は最近内容が更新されました。
更新される前に少しだけ読んでみましたが、ここまで内部の話になるとまあ面白いかどうかはその人次第かと(笑)
私はこーゆーのも好きなのでコードと合わせて読んでいこうかと思ってます。
テストの書籍
Androidのテスト周りはここ数年でEspressoやAndroid Testing Support Libraryの登場で大きく変わっている。
さらにAndroid NからはActivityInstrumentationTestCase2やActivityTestCaseなどのSKDに含まれている多くのTest系クラスがdeprecatedになる。
なので、今のAndroid Testに関する書籍でいいものはまだ出てない気もする。
Android Testing Support Libraryが出る前のAndroidの関してのテストについては、この一冊で良かった。
- 作者: 生路茂太,井芹洋輝,神原健一,長谷川孝二,松木晋祐,宮田友美,吉澤毅
- 出版社/メーカー: 秀和システム
- 発売日: 2013/02/27
- メディア: 単行本
- この商品を含むブログ (7件) を見る
Androidのテスト周りは、移り変わりや動きが早い印象がある。
なので、書籍をガッツリ読むよりも、色んなサイトでどんなテストツールがあるのか、定期的にチェックしていく方がいいと思う。
テストコードを書く上でJunitの知識は絶対に必要になるので、Junit実践入門は読んでおくと役に立つ。
AndroidでもJunit4が使えるようになったし、Androidだけの知識だけではないので、この本はとてもオススメ。
JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)
- 作者: 渡辺修司
- 出版社/メーカー: 技術評論社
- 発売日: 2012/11/21
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 273回
- この商品を含むブログ (68件) を見る
洋書で面白そうな書籍
- 作者: William Confer,William Roberts
- 出版社/メーカー: Packt Publishing
- 発売日: 2015/02/24
- メディア: Kindle版
- この商品を含むブログを見る
Android 5: Programmieren für Smartphones und Tablets (German Edition)
- 作者: Arno Becker,Marcus Pant
- 出版社/メーカー: dpunkt.verlag
- 発売日: 2015/02/25
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: Sunny Kumar Aditya,Vikash Kumar Karn
- 出版社/メーカー: Packt Publishing
- 発売日: 2014/08/26
- メディア: Kindle版
- この商品を含むブログを見る
「Android SQLite Essentials」は、自分のSQLiteの知識を深めるために読んでみようと思って買った一冊。
「Android SQLite Essentials」読んでみたけど、基礎的なことが中心のものだった。
「Exploring SE for Android」は、概要を見るところAndroidのSELinux周りの話が書いてあるのだと思います。
どっちも面白そうだから、洋書読むの慣れてきたら読んでみる。
SDK本は私には合わなかった・・・
年に一度OSのメジャーアップデートが行われ、SDKの中身も変わる速度が早くなっていると思ってる。
なので、SDKのAPIをつらつらと紹介するだけの書籍は役に立たないと思ってる。
公式ドキュメントを読まないと書いてないこともあるので、やっぱり公式ドキュメントや実際にコードを読む方がいい。
ということで、以下の本はあんまり役に立たなかったし、あとになって読み返すこともなかった本。
しかし、どの本からでも学んだことはあるので感謝してます。
- 作者: 中西葵,内村祐之,高橋良司
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2012/05/25
- メディア: 単行本(ソフトカバー)
- クリック: 6回
- この商品を含むブログ (1件) を見る
- 作者: 塚田翔也
- 出版社/メーカー: 秀和システム
- 発売日: 2012/09/24
- メディア: 単行本
- クリック: 1回
- この商品を含むブログ (3件) を見る
SDKのまとめみたいな本は、ものによってはすごい分厚くて持ち運ぶこともできなかった。
あと、開発になれてくると基本的なSDKの使い方は覚えてくるため、この手のSDK本はあまり見なくなる。
それに今はQiitaやネットでSDKの使い方は調べればだいたいわかってしまう。
でも、読む必要がないということはないと思う。
開発をはじめたばかりだと、「どんなSDKがあるのかな?」「どんなWidgetがあるのかな?」みたいな疑問ばかりあるので、そんな時にはSDK本をパラパラ程度に見ておくといいと思う。
そこから単語だけ覚えて、必要な時に検索して、それについて使い方を覚えていく足がかりになる。
おわりに
Androidエンジニアは、Android関連の書籍を平均でどれくらい読んでいるのだろう?
入門書をほとんど読んだことないから、オススメの入門書知りたい!
てか、いまだにSQLiteをガッツリしっかり解説してる書籍がないことを残念に思う…。
React始めましたよよよー
React始めたので雑にどうやってやっているか書き残しておく。
WebStormいいぞ!!
とりあえずWebStorm入れて書き始めてます。
補完がめっちゃ聞くのですごく助かる。
とりあえずReact Tutorialやってみる
さてさて、Reactやるかーと言ってもどこから始めて良いのかよくわからないので、とりあえずReact Tutorialやってみた。
何も考えずにとにかく書いて動かしてみた。
英語なので解説でよくわからない部分はこっち見た。
あーなんとなくこんな感じかーという印象。とりあえずこれをまず動かしてみるのが良さそう。
React、Virtual DOM、Fluxについて詳しい人の話を聴いてみる
数年前にmozaic.fmで@mizchiがReactやVirtual DOMについて話していたのを思い出したので聴いてみた。
うん、これはとても聴いて良かった。
どこかのドキュメントを頑張って端から読むよりもまずはこれを数回聴いてみる方と良い。
Reactと一緒によく語られるVirtual DOMやFluxについて、何がブレイクスルーでどんな役割のものなのかをさくっと理解できた。
RebuildでもReact、Flux、Reduxについて話されていたので合わせて聴くと良い。
Fluxやってみる
WEB+DB PRESS Vol.87でnaoyaさんがFluxについて書いてたので、それを元にFluxやってみた。
Fluxはアーキテクチャなのでそれを元に色んな実装があるらしいのですが、WEB+DBではFlux実装のFluxxorを使った題材になってます。
データが一方通行へ流れるようにするアーキテクチャが特徴のFluxについてなんとなく理解できた。
また、まずはReactだけで書いて、次にReact + Fluxxorで書くという流れなのも良かった。
さらに自分で簡単な題材を元にReactで書いて、次にReact + Fluxxorという流れをやってみれば慣れる気がする。
まとめ
React面白いなー。Fluxも面白い。Reduxもやってみよう。
書いたものはここに置いてある。
shinobu.apk #3 を7月にやりたいぞ!という気持ちだけ書いておく #shinobuapk
そろそろshinobu.apk #3をやりたくなったので、7月にやりたいぞ!やるぞ!という気持ちだけ書いておく。
@kgmyshin 7月やりたいっすねー
— shinobu.apk (@operandoOS) 2016年6月18日
今までよりもっと雑な感じでやりたい
そう、今までより雑な感じでやりたいです。
おい、人集めるのに雑にやるのか?あぁ?って感じですがいい意味で雑ってことで。
shinobu.apkは雑を極める
— shinobu.apk (@operandoOS) 2016年6月18日
@kgmyshin じゃそれで
— shinobu.apk (@operandoOS) 2016年6月18日
じゃそれで
ちなみに、ちょっと色々次はやりたいこともあり、忍だけにミスドでも用意しようかなーとか。ハイコンテクストですねー。
shinobu.apkでミスドを出すという新しい試みを思いついたぞ。
— shinobu.apk (@operandoOS) 2016年6月18日
とてもハイコンテクストだ。
なんぞや、shinobu.apkとは?
興味あれば以下とか見てください。
まとめ
現場からは以上です。
技術の幅を広げようと思う話
そろそろいい年頃なので技術の幅を広げたいと思っている今日このごろ。
とはいえ、フルスタックになるのかい??という話ではなく。
漠然と「技術の幅を広げるぞい!!」と意気込んでもきっと何も始まらないので、ちょっと別のアプローチを取ってみた。
技術Stackの幅を広げたい時、例えば自分が入りたいと思っている会社の求人とか見てみてどんな技術を扱ってるのか、どんな技術を持ってる人が欲しいのかというのは調べてみるのはありだと思う。
— shinobu.apk (@operandoOS) 2016年6月17日
会社に技術Stackを合わせろって話ではないけどね。
— shinobu.apk (@operandoOS) 2016年6月17日
あくまで技術Stackの幅を広げたい時の一つのhintにはなる。
というわけで、この会社いいなーとかこのサービスいいなーと思ってる会社の採用情報を見て、どんな技術を持ってる人が欲しいのか、今どんな技術を使っているのか調べてみた。
調べてみると意外とこれは面白いし、技術の幅を広げる際にどの技術を取り組んでみようかなーという一つのヒントになる。
技術の幅を広げないと...と漠然と考えている私と同じような人がいたら、まずはこれを試してほしい。
kyobashi.dex #3で「Gradle PluginとCIと俺」の話をしてきた #kyobashidex
kyobashi.dex #3 で 「Gradle PluginとCIと俺」という話をしてきましたー。
主に最近仕事とかで新規にCI環境の構築をしたりして遊んでて、gradle-slack-pluginを使ったGradle Task + CI + Slackへの通知という仕組みを構築してみた!という話をしてきた。
ちなみに、今回発表した内容はGradleを使う開発ならAndroidじゃなくても仕組みは導入できる。
サーバサイドJava等でGradleを使っている場合でも適用可能だと思う。
Gradle PluginとCIと俺
文字起こしはGithubにも置いてあります。
資料内で紹介していることはだいたい以下のSample Projectにまとまってます。 仕組み自体はCIサービスといくつかのGradle Pluginを組み合わせる感じで実現しているので、Libraryみたいなさっくり導入できるものではありませんが難しくはないです!
めっちゃ雑ではありますがREADMEに同じ環境を構築するまでの手順をざっくり書いておきました。
gradle-slack-plugin + gradle-versions-plugin + CI
発表内でも紹介している中で特に「gradle-slack-plugin + gradle-versions-plugin + CI」という構成が気に入っている。
これで何ができるのかを簡単に言うと「CI上で使っているライブラリの新しいバージョンがあるかどうかをCheckして、その結果をSlackに通知する」って感じ。
以下のような感じでCI上で実行した結果がSlackに通知される。
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して魔改造してるやつの方が使いやすいと思うのでオススメ!
可能性は無限大
結局これはgradle-slack-pluginの仕組みを使って、特定のGradle Taskの出力結果をSlackに通知しているだけの話なので、可能性は無限大だ。
例えば以下のようなこともできる。
- dexcount-gradle-pluginでメソッド数カウントして通知する
- gradle-android-apk-size-pluginでapkのサイズ調べて通知する
- gradle-zundokokiyoshi-pluginでズンドコ キ・ヨ・シ!した結果を通知する
色んなGradle PluginのTaskとgradle-slack-pluginを組み合わせるだけなので、構築も簡単、可能性は無限大!という素晴らしい世界だ。
誰かが素晴らしいGradle Pluginを作って、さらに素晴らしい構成を作ってくれることを期待してるし、自分も色んな構成で試行錯誤していく。
結局何が大事なのか
色々構成してCI上で行った結果を自分たちが日々チェックする環境へ通知してあげることはわりと簡単にできる。
その日々チェックするということだ大事だと思ってる。
CIと掛け合わせることで、日々チェックしたいことが自動で通知される仕組みが整うのでいい。
その結果を見て実際に何かをするかどうかは別として、自然な形で自動的に通知され、ふと思った時に確認できるということを大事にしたかったので、今回話したような構成を考えてみた。
まとめ
kyobashi.dexはいいぞ!