@hkato193 さんより献本をいただきました。今回はその書評。
今年春の発売後早い時期にいただいたにもかかわらず、iOS7全盛まっただ中の今ごろ書評を出すタイミングの最悪さといったら…すみません。売上には貢献できなさそうです(^^;
- - - -
さて、本書は iOS6で追加・改良されたAPIを解説した技術書である。iOS4の時から数えて今回がシリーズの3作目にあたり、毎回 iOSのバージョンアップに合わせその時々の最新トピックスを取り上げて解説している。単なる最新APIの紹介にとどまらず、それぞれのトピックについて細かい部分にも触れながらも網羅的に実際のプログラミングで使える実用的な情報を提供しているのが特徴である。また経験豊かな iOS開発者たちがそれぞれのトピック毎に章を受け持って解説する共著スタイルを取っているのもシリーズを通しての特徴の一つでもある。なお本書では Objective-C や UIKit といった基本的な解説は省かれていて iOSアプリ開発経験者を読者対象としている。この点が他のチュートリアル的な技術書と異なり題名に”エキスパートガイド”と謳っている所以でもある(たぶん)。
目次
Chapter 01 iOS 6の新機能iOS7がリリースされている今となっては新鮮味に欠けるが、どれも現役の技術でその重要性は iOS7時代でも変わらない。
Chapter 02 UI Kitエッセンシャル
Chapter 03 Collection View実践
Chapter 04 Storyboardと状態保存
Chapter 05 Auto Layout詳解
Chapter 06 Passbook入門
Chapter 07 AVFoudation活用
Chapter 08 Bluetooth Smart実践
Chapter 09 iAd組み込みガイド
Chapter 10 プライバシー保護
Chapter 11 モダンObjective-C
以下にざっと内容を紹介する。
Chapter 01 iOS 6の新機能(加藤氏)
iOS6から導入された新機能についてのウォークスルー。Pass Kit フレームワークや NSAttributedString など新機能の他、Core Image, Core Audio, Core Bluetooth, Accesslerteフレームワーク, コンパイラ(LLVM)といった従来機能の大幅な強化が行われたのも iOS6から。
Chapter 02 UI Kitエッセンシャル(藤川氏、高丘氏、加藤氏)
新しく導入された “Base Internationalization”の仕組みを使って xibや stroyboardから表示文字列を分離して管理する方法について解説している。UIAppearance の解説ではカスタマイズ可能な各コントロール部品についてほぼすべてのコントロールについてその適用範囲や挙動について一つ一つ解説している。各コントロールのアピアランスでカスタマイズ可能な範囲を把握するのに役立つ。
Chapter 03 Collection View実践(西方氏)
本書の目玉の一つともいえる章。多データ表示ビューのポスト UITableViewとしてiOS6から用意された UICollectionView はそれまで縦方向の表示のみだった UITableView を徹底的に汎用化したコントロール。横方向スクロールのレイアウトはもちろん、レイアウトを自由にカスタマイズすることで様々な表現方法を可能にしてくれる。また UITableViewのDataSource/Delegateスタイルを踏襲しているので UITableView に慣れた人であればすぐに使い始められる使い勝手の良さもいい。
本章では、UICollectionView の基本概念より始まり、基礎的な使い方からカスタマイズに至るまでAPIの一つ一つをわかりやすく解説している。後半はカスタマイズしたレイアウトを使う UICollectionView を使ったアプリを実装していく。カスタムレイアウトの作成方法については UICollectionViewLayoutのサブクラス化を手始めにレイアウト属性の変更・拡張方法、アニメーション実装方法、セルの配置実装方法、そしてジェスチャーのハンドリング方法まで一つ一つステップを踏んで丁寧に解説されている。日本語で出ている UICollectionView 情報の中でも間違いなく1、2を争う詳しくてわかりやすい解説だと思われる。UICollectionView 初心者はもちろん、既に利用している人でもこれを応用して新しい表現に取り組んでみたい方にはおすすめ(個人的にはこの章のためだけに本を買うのはあり)。
Chapter 04 Storyboardと状態保存(吉田氏)
iOS6から導入されたコンテナビューと Segueの機能強化の解説。コンテナビューコントローラを使うことで UISplitViewControllerのような2ペインのビューコントローラを構成できるようになった。また Segureに Unwindが導入されて従来は面倒だった画面遷移を戻す方向の制御が Storyboard上で設計できるようになった。
本章ではイメージの湧きにくい SegueとUnwindを使った画面遷移を図を多用してわかりやすく解説している。またカスタム Segure と Core Animation を使い回転・拡大しながら表示されれる Modalアニメーションのカスタマイズ方法や、コードからカスタム Segueを利用する方法などが紹介されている。後半は iOS6から導入された UI State Preservation の使い方についての解説。UI State Preservation は強制終了後に起動した時に以前のアプリの状態を再現することを支援する仕組み。普通に作ると強制終了後はトップ画面に戻るわけだが、この仕組みをうまく活用することで終了直前の画面を復元・表示してユーザには強制終了を意識させず、直前の作業に復帰できる利便性の高い UI/UXを提供することも可能になる。本章では基本的な利用方法の他、ビューコントローラのスタックやビューの復元や、キー/バリュー方式のデータ保存・復元などが解説されている。UI State Preservation の日本語情報はほとんど見かけないのでこの章は貴重な存在かも。
Chapter 05 Auto Layout詳解(藤川氏)
iOS6以前は情報も少なく、またそのとっつきにくさ(難解さ)からあまり話題にならなかった Auto Layout だが、昨年からの4インチディスプレイ登場や今後の大画面化の流れから 今後の複数解像度へ対応する上では必須の技術になりつつある。使いづらかった最大の原因だった Interface Builder もXcode5では大幅に改良されて以前に比べると使いやすくなってきている(まだ難点はたくさんあるが)。Auto Layout の難解さはその高い汎用性を持つがゆえであるが、コツを掴めば非常に強力な道具になる。
本章では Auto Layout の概要説明から入り、前半は Interfce Builder / Storyboard エディタを利用した Auto Layout の使用方法についてスクリーンショットを使い細かく解説している。後半では NSLayoutConstraint を使ってプログラムからレイアウトを定義・制御する方法を解説している。またテキストベースで定義を指定できる Visual Format にも触れていている。Auto Layout に関する情報はネット上でもまだまだ十分とはいえないので、詳しく解説している本書は特に初めて取り組む場面では使えると思う。
Chapter 06 Passbook入門(関川氏)
本章では Passbookの概要や活用イメージの解説から始まり、前半はデータ構造の解説、証明書の取得から始まるパスの署名方法、そしてパスの配布方法などが解説されている。後半は Pass Kit フレームワークを使った実装方法、そして APNSとの連携や実用上の注意点などが書かれている。
Passbook に関する情報もまだまだ十分とは言えないので、実装と利用に必要なひと通りのノウハウがまとめられている本章はこれから利用を考えている方にとっては役立つと思う。
Chapter 07 AVFoudation活用(加藤氏)
導入部で AVFoundation の概念がわかりやすく解説されていて APIを使う上での基礎知識として参考になる。続いて iOS6から導入されたいくつかの機能についてサンプルコードを使いながらの説明。これもありがたい。
・暗い場所での撮影を支援する2つの機能(センサー感度のブースト、トーチの光量調整)
・リアルタイム顔認識とトラッキング(AVFoudationによるリアルタム顔認識、Core Imageによる顔トラッキング)
・手振れ補正機能
後半は Core Image を使った画像処理についての説明。UIAlertViewの背景ぼかすサンプルや、カメラで撮影中の画像に各種エフェクトを加える方法について実際のコードを使いながら解説している。本章で扱う内容は別途1冊の本にもできそうなくらいボリュームがあるところなので導入情報としては十分な内容か。
Chapter 08 Bluetooth Smart実践(関川氏)
BLE(Bluetooth Low Energy)を iOS から利用する上で必要な技術情報が網羅されている。iOS向けの Bluetooth を日本語で本にまとめた情報としては稀有の存在だと思われる。本章では BLE の基礎知識から始まり、フレームワーク Core Bluetooth を使った実地の開発手法までを解説している。
内容については門外漢があれこれ言うよりも目次を見てもらったほうが想像がつくと思うので掲載しておく。
- Bluetooth Low Energyの概要
- 今までの Bluetooth との関係
- Bluetooth Smart/Bluetooth Smart Ready との関係
- BLEに対応したApple製品
- Bluetooth Low Energyの基礎
- Central と Peripheral
- Profile/Service/Characteristic
- 通信プロトコル
- Service の検索と接続
- データの送受信
- Core Bluetoothの基本的な使い方
- iOSシミュレータを使う
- Core Bluetoothの主要なクラス
- iOS同士の通信
- Core Bluetoothの応用
- 接続済の Peripheral の UUIDの保存と読み出し他。
Chapter 09 iAd組み込みガイド(高丘氏)
iAdの概要から iOS6 での変更点、実際にアプリに埋め込む方法の解説など。コーディング方法の他、Provisioning Portal や iTunes Connect で必要な操作についても説明されている。
Chapter 10 プライバシー保護(高丘氏、関川氏)
iOS6 から整備されたプライバシー機能(アクセス制限)に関する解説。ここら辺への対応を怠るとリジェクトされることもあるので地味だが侮れない所でもある。
本章では、位置情報、連絡先、カレンダー/リマインダ、写真それぞれについてアクセス制限への対応方法が実際のコード付きで解説されている。後半は iOS6で利用可能な識別IDについての解説。idnetifierForVendor や advertisingIdentifier の紹介の他、ポスト UDID の対処など。
Chapter 11 モダンObjective-C(加藤氏、高丘氏)
Xcode 4.4から導入されたObjective-Cの新しい記法やその用法が丁寧に解説されている。内容は、オブジェクトのリテラル表記、添字アクセス、サブスクリプティングなど。またiOSプログラミングにおける基本トピック(非同期処理、データ保護、画像処理、音を鳴らす方法、アニメーション、フォトアルバムへのアクセス、ムービー再生など)の概要解説がある。その他 iOS5からの移植ポイントなど。iOS7時代から見ると古い情報に見えるが、大半は今も通用する内容なので概要をつかむにはいい内容。
なお本書に掲載しきれなかったChapter12からChapter14までを収めた PDFが インプレス社のホームページから無料でダウンロードできる。
ダウンロードページ
Chapter 12 Map Kitの新機能こちらも抜かりなく(?)書かれているので合わせておすすめ。
Chapter 13 情報の共有
Chapter 14 新デバイス・新機能対応
- - - - -
あたりまえだけど今の技術はこれまでの技術の積み重ねなので、過去の技術を学ぶことが有用なこともある。iOSの場合はメジャーバージョンアップと同時に新規に導入されてよく使われる機能がある一方で数バージョンに渡る地味な改良を重ねることで使い物になっていく機能も多い。例えば前者は UICollectionView、後者だと StoryboardやAuto Layout など。UICollectionView にしても UITableView の成果が継承されていて過去の技術とまったくの無縁では無い。今使われ始めている新しい APIはそうした過去の改良の上に成り立っていることを考えると、その始まりや改良の経緯を知ることは技術を深く知る上で無駄ではないと思う。本書の位置づけは「iOS6」という古いOSの視点で見てしまうと役に立たない古い情報に思えてしまうが、ここで扱われている内容は iOS7 にも受け継がれ使われている現役の技術だし、ここで紹介された様々な フレームワークや API は今後も改良を重ねながら使われていくことは間違いない。それを考えると本書が現場で使われ、その価値を保ち続ける時期はまだまだ続くと思う。実際私自身今でも参考にさせてもらってます。そんな訳でiOSを開発する人は持っておいて損のない本だと思ってます。
なおこの本に限らず技術書は検索性がある方が使い勝手が良いので今後は是非電子書籍版の発売を期待したい。持ち歩くのは重いし...。あとiOSのメジャーバージョンアップ後の早い時期に出してもらえるとタイムリーだし助かります(それを言うなら書評をもっと早く書けとつっこまれそうですが)。これは次回作に期待したい。
:
と、この書評を書いていたら次回作らしき本が既に Amazonに予約受け付けが出ていた。仕事早いですね。12月発売予定とのことでこちらも期待。
では。