このblogには久々の登場となります、nakazawa-k(@muo_jp)です。 最近はAndroid方面で変な電波を飛ばしたりしてます。ちなみに1日の自ツイート数が100を超えた日に「なんかもう帰れないとこまで来たのかな」と思った程度の真人間()です。 さて、今回はレビュー(※1)を行ったご縁で献本を頂きました「Android 2.3 Only Hacks」の書評をかいてみます。といっても内容についてはきっと他の方が書いてくださる(maruyama-rさんも書いてくれてる)ので、私は「どういう人が、どういう風にこの本を読んで、読んだその次はこうしていくといいんじゃないかなー」という、なかなか押し付けがましいエントリを書いてみます。あんまり書評じゃない気がしますね、気にしないようにしましょう。 その前にこの本が他の本から飛び抜けているポイントをひとつ挙げてみます。 ・表紙がいい。ジンジャーブレッドマンの癒しっぷりはとても良い。 通常Android本といえばカバーが緑色でなんとなくドロイド君な感じのするものが多かったりします。これはAndroidのバージョンアップ頻度を考えると結構理にかなっていて、バージョン依存のものを紙媒体で出すとすぐに風化して賞味期限が大変短くなってしまう、という問題への対処と考えられます。けどこの本は「2.3で何が変わったか、何が出来るか」を解説するものなので、そんなこと気にせずアグレッシブにやった感がすがすがしくてとても好感を持てます(他の本をdisってるわけでなく、ただただ仕方ないということです)。 さて。 どういう人のための本か 冒頭にも書かれているように、この本は「Android自体に関する知識や開発経験は既にある程度持っているけれど最近のSDKを追いかけてはいない。何が出来るのか気になっているけどまとまって勉強する時間を取るのは大変だし日本語ドキュメントはあちこちに散逸してるしあばばばば」な方向けかな、と思います。記載されている情報の多くは既に(著者の方々も含め)いくつかのblogにて日本語情報として発信されているものでありますし、それこそ本書でターゲットとしているSDK(2.3系)の初期リリースからは半年近くの時間が経っています。それでも書籍としてまとまって出版されることには参照性と学習の面で多くの意味があるのだと、私は思います。「最近Androidから離れてたけど、なんか面白い機能追加されてるみたいだしこの機に勉強してみよう」なんてのも素敵ですね! この本の読み方 1. ざっと技術の流れを概観する。 OS/プラットフォームとして完成度が高まってきているAndroidにおいて、なぜこれらのAPIがサポートされたか、ということを考えながらアップデート全体を俯瞰してみるのは有用だと感じました。APIは無駄に追加されているわけでなく、何かしらデベロッパによる要求やGoogle(またはその他OHA参加者)が「こういう風に使って欲しい」という希望を持って追加されているものです。それをどのように解釈してアプリケーションに盛り込むか、というのはもちろんデベロッパそれぞれだと思いますが、ある時期にまとめて投入された新機能(とりわけ未完成なのになぜか先行投入されたOBBなど)を見て「これらのAPIを使える端末が普通に溢れてる未来(または現在)で、これらを活かしてどんなアプリやサービスを書くとユーザはもっと便利になり、嬉しくなるんだろう」と考えてみるだけでもなかなかワクワクします。 2. 機能を実際に利用する上でのヒントを本文から見つけ出す。 本書の各章を書かれた方々は、新SDKがリリースされてワクワクしながらドキュメントを読み、サンプルを読んだり動かしたりし、そして時にはうまく動かないその理由をAndroidのソースコードまで降りて調べてきて本書の執筆に至っています。速報的にその一部始終をtwitterやblogで発信されている方も多く居られますが、それらが書籍の中の1章として再構成されたことで「このAPIを使ってハマるところ」といった情報も全体にうまく織り込まれているように感じました。実際にAPIを使ってアプリを書いてみてなぜかうまくいかずハマる、という際に本書を開いてみるとヒントになるところがあるのではないかなぁ、と思うのですが今のところ実体験はしていないのであくまで推測ですはい。 3. ソースにアクセスして動かしてみたり読んだりする。 本書の価値の1/3ぐらいは、サポートサイトにて公開されるソースコード群にあるかな、と感じました。例えばBluetoothの項でInsecure通信(事前のペアリング無しに非暗号化通信を行うことが出来る)がサポートされたこととそのAPIに関する記載は行われていますが、書かれてるのは「従来のAPIのここを変えればInsecure通信出来るよ」ということだけなので、ぶっちゃけ「俺は以前にAndroidでBluetooth通信やってみたことあるぜ」という方以外にはスパルタンな記述です。けれど、サポートサイトにある実際のソースコードを読んで動かしてみることで、そこで使われているプログラミング手法を参考にしたり、関連するAPIの名前を手がかりとして更にドキュメントの山をひっくり返したり、と「実践してみて更に興味を持つ...」という好循環が生まれるのだと思います。なので、是非サポートサイトにアクセスしてソースをダウンロードしてみましょう。 ・この本を読んだ次は…! →デ部関連のイベントやメーリングリストに参加しましょう ご覧の通り、OSバージョンが上がると多くの新機能がサポートされます。そして、当然これからも同じくOSバージョンは上がっていきます。デベロッパ負担を減らすためにメジャーバージョンアップ間隔を広げる方向にはありますが、結果的にマイナーバージョン(2.3.2→2.3.3)ですらAPIレベル(Androidとして利用出来るAPIセットを定めた群)が変わるという状況になっていますし、タブレット向けのAndroid 3.xとそれ以外向けの2.xという2系統が当面は継続開発されており、基本的に3.xの新バージョンでの機能が2.xにバックポートされるという形を取るにしても既に状況は相当カオスです。 ということでデ部への参加をオススメします。新機能に敏感な方々が活発に情報交換を行っている、いいコミュニケーションの場と機能していると思います。関連イベントの開催地は多くが東京で、それ以外の地方のかたがちょくちょくリアル参加するのは難しいかと思いますが、大体Ustreamなどのライブ配信が行われるので、遠隔地からもだいぶ参加し易いと思います。 以上、書評といっていいのかよく分からない文章となりましたが参考頂けると幸いです。想定読者にマッチする方は買って損無いと思いますが、いくら本読んでもやっぱりAndroid系はアプリ(仕事でもプライベートでも)でアウトプットしてなんぼですよね(と自戒で締めくくる)。 ---- このblogエントリは、レビュー時の副産物としてEvernote内になぜか発生していた「全体的に非常によく調査した上で、更に執筆者自らがサンプル実装を行い動作を確認したコード、手法が掲載されており、旧バージョンのAndroidでの開発を行なってきた開発者が最新SDKを利用することでどのような利便性を得られるか、新たな機能を利用出来るか、という点がよく網羅されている。また、Gingerbread/Honeycombにて不完全ながらも提供されているAPI群を知ることで、Android自体が今後どのような進化の方向性を持っているか、という大枠での技術動向を掴むことも出来る。 惜しい点としては、著者が複数人であるためバージョン対応にばらつきが見られるところである。例えば、APIレベル11での追加サポート内容について具体的に言及している章とそうでないものが混在しており、本書が全体としてどのバージョンについてカバーしているか、という点が不明瞭となっている。これはいみじくもまえがきに記載されているように、本書執筆中にも複数のSDKがバージョンアップが行われたためであり、全ての品質を揃えることを優先するといつまで経っても出版出来ない、という事情を鑑みるとやむを得ないことと言える(特に想定読者は必ずしも最新SDKを追いかけてはいない開発者となっているため、完全な最新版対応へのコミットが大きく読者の利益につながるわけでもない)。 デ部関連イベントでの発表内容を追いかけることでその後の最新事情へ追随することは可能であるため、最新SDK動向への興味を強く持たれた読者においてはメーリングリストやイベントへの参加、著者blogの購読などで情報を継続的にアップデートされたい。」というメモをもとに書かれました。かための文章がお好みの方はこちらをどうぞ。 ※1: 押しかけレビューアで、最終確認用の版を頂いてそこに結構な量のtypo指摘を投げつけるという暴挙を行いました。多分編集さんは泣いてたと思います(面識ありませんが)