最終更新日:
新居雅行(support@msyk.net)
本書の特徴
- iOSのネイティブ開発に必要なフレームワークの使いこなしのテクニックを解説しています。
- 開発の基礎については解説していません。他の解説書で学習してください。
- サンプルプログラムを配布しています。そのプログラムをもとに書籍で動作についての解説を行います。
- Xcode 6で登場したサイズクラスやプレビュー、iPhoneでスプリットビューを出す方法など、最新iOSの重要な機能が解説されています。
- オートレイアウトやマルチタスクに対応したCore Dataの構成方法、NSURLSessionを利用した通信など、従来から使われている機能の説明もあります。
|
本書に適した方々
- アウトレットやアクションといった基本的なことをマスターしている方。
- Objective-C/Swiftをある程度は理解できる方。
- 解説書に書かれてある通りのことではなく、一歩進んだアプリケーション開発を行いたい方。
- 最新のiOS 8に最適な開発技法を身に付けたい方。
|
|
新居 雅行 (著), 佐伯 晃一 (監修)
技術評論社刊、¥3,888(税込)
|
サンプルプログラムのダウンロード
サンプルプログラムのダウンロード方法を2種類紹介します。基本的にはどちらでも同様です。サンプルファイルはGitHubのレポジトリにあります。なお、Xcode用のサンプルファイルであり、Xcode 6が稼働するOS
XをインストールしたMacが必要です。
アーカイブしたファイルをダウンロード
- こちら
のページが出版時点でのサンプルファイルです。以下のようなページが表示されます。
- 「Source code (zip)」あるいは「Source code (tar.gz)」のいずれかのボタンを押してください。
- 「iOS_Samples-1.0.zip」等のファイルがダウンロードされます。
- ブラウザが自動的に圧縮ファイルを展開する場合は「iOS_Samples-1.0」フォルダができているはずです。展開しない場合は、ダウンロードしたファイルをダブルクリックすれば自動的に展開できるはずです。
- 展開したフォルダにある「iOS8_Advanced」フォルダが本書のサンプルファイルです。その他のフォルダは無視してください。
レポジトリからクローン
サンプルプログラムを配置したいファイルをカレントディレクトリにして、「git clone
https://github.com/msyk/iOS_Samples.git」とコマンドを打ち込みます。すると、カレントディレクトリに「iOS_Samples」フォルダが出来上がります。その中にある「iOS8_Advanced」フォルダが本書のサンプルファイルです。その他のフォルダは無視してください。
なお、forkしていただいてもけっこうですが、プルリクエストについては、あらかじめご連絡をお願いします。
目次
Chapter 1 オブジェクト指向とメモリ管理
1-1 ARC時代のオブジェクト指向
オブジェクトとその動き オブジェクトが持つリテインカウント オブジェクトへの参照とオーナーシップ 複数のオブジェクトからのオーナーシップ オブジェクトのリリースとメモリリーク ARCによって解決されること プロパティの定義と利用 プロジェクトでARCを機能させる セッタとゲッタの利用 オートリリースとその必要性 weakが必要な場合 IBOutletをweakにする場合としない場合 循環参照とメモリリーク
1-2 Swiftのオブジェクト指向
クラスの定義 プロパティの定義 計算プロパティの定義 メソッドの定義 スコープの扱い オブジェクトを生成してプロパティやメソッドを利用する さまざまなオブジェクト指向の機能を組み込んだクラス プロパティの読み書き前後に処理を加える セッタとゲッタの定義 使用されるまで初期化されないプロパティ オブジェクトからインデックスを指定して値を取り出す
1-3 ブロックを理解する
ブロックとは何か ブロックを変数に記録する 引数のあるブロックの記述方法 ブロックの内外で共通に使う変数 関数の引数がブロックの場合 長くなるブロックの定義をマクロ定義で見やすくする CocoaのAPIで使用されるブロック ブロック自体をオブジェクトとして扱う メソッドの引数がブロックの場合 Swiftのクロージャ ブロック内でオブジェクト自身を参照する ブロックの利点
Chapter 2 アプリケーションとさまざまな処理
2-1 アプリケーションの状態
アプリケーションのクラスUIApplication マルチタスクとアプリケーションの状態 アプリケーション起動時のステート バックグラウンド動作を行うときのステート 一定時間続けるバックグラウンド処理 アプリケーションに設定するバックグラウンドの動作モード fetchバックグラウンドモードの場合 書類のオープン 書類をURLで指定して開く
2-2 XMLとJSONの処理
JSONによるデータ表現 JSONデータのパース JSONのパースが失敗する場合 XMLデータ XMLのパース 異なるXML形式のデータのパース XMLデータの活用
2-3 オペレーションキューによるマルチタスク
スレッドとマルチタスク スレッドとオペレーション オペレーションキューとオペレーション NSOperationのサブクラスの作成例 バックグラウンドタスクの終了を待つ
2-4 NSCoderとアーカイブ
アーカイブとシリアライズ オブジェクトをファイルに保存する 自分で作ったクラスをNSCoding対応にする NSDataクラスのオブジェクトに保存する
2-5 Swiftと開発環境
SwiftのプロジェクトにObjective-Cのクラスを追加する Objective-CからSwiftのクラスを利用する Swiftでデバッグ時にだけログ出力を行う
Chapter 3 ビューとビューコントローラ
3-1 ビューとビューコントローラの基本
階層化されるビュー 代表的なビューのプロパティ ビューの座標系 アフィン変換とtransformプロパティ UIViewのサブクラスを定義する場合 ビューコントローラによるイベント取得
3-2 制約を使いこなす
オートレイアウトとオートサイジング 制約を利用して四隅や中央に配置する 制約の設定内容 制約を追加する 制約を利用して中央にオブジェクトを配置する オブジェクトの相対的な位置に配置する制約 制約の扱い 制約を実現するクラス 制約を実現するクラスとエラー対応 オートサイジングとサイズインスペクタ
3-3 サイズクラスとトレイト
トレイトとそのコレクション 各デバイスの既定のサイズクラス サイズクラスとシミュレーション サイズクラスに対する表示と非表示のコントロール サイズクラスによる制約のコントロール
3-4 モーダルビューとポップオーバー
モーダルビューコントローラ ポップオーバーコントローラ バージョンごとの重複表示の違い ポップオーバーの閉じるボタンとモーダルビューとの両立
3-5 ビューを使ったアニメーション
iOSにおけるアニメーション UIViewのクラスメソッドによるアニメーション プロパティを変化させるアニメーションのサンプル 時間をかけてアルファ値や色を変更する 座標位置を変更するアニメーション 別のビューに切り替えるアニメーション UIViewのアニメーション用クラスメソッド
Chapter 4 ナビゲーションのためのユーザインターフェース
4-1 ストーリーボードの動作
Interface Builderの立ち位置 NIBファイルからストーリーボードへ iOS 7でのストーリーボードを使うアプリケーション iOS
8でのストーリーボードを使うアプリケーション 起動時に表示される画面の定義 起動画面の設定と画面解像度 アプリケーションの最初の段階で行われること ストーリーボードで最初に表示されるシーン ナビゲーションコントローラ シーンでのセグウェイによる遷移 ユーザインターフェースの形態とセグウェイ セグウェイの遷移途中で呼び出されるメソッド
4-2 スプリットビューコントローラの利用
スプリットビューコントローラ iPhoneとiPadで動作が異なる「show
detail」セグウェイ スプリットビューコントローラのデリゲート iPhoneとiPadでの動作を両立させる マスター領域を表示するボタンの表示 iPhoneでスプリットビューコントローラを使う RootViewControllerクラスの動作 スプリットビューコントローラをカスタマイズする
4-3 アラートビューとアクションシート
iOS 6以降の表示形態と使用するクラスの違い アラートコントローラによるアラートの表示 アラートコントローラによるアクションシートの表示 アラートコントローラとInterface
Builder UIAlertViewクラスによるアラートビューの表示 UIActionSheetクラスによるアクションシートの表示
Chapter 5 テーブルビューを使いこなす
5-1 テーブルビューの基本
テーブルビューを使ったユーザインターフェース テーブルに含まれる要素 サンプルプログラムで使う元データ アプリケーションのデリゲート先のクラス テーブルを実現するクラス セルの標準スタイル 標準スタイルのセルで表示する
5-2 セルのタップとビューコントローラの連携
遷移先のビューコントローラ セルとセグウェイ セルからのセグウェイの設定
5-3 カスタムセルを利用する
カスタムセルのクラス定義 Interface Builderでのカスタムセルの構築 セルを生成するメソッドでラベルに値を設定する
5-4 スタティックセルを利用する
表示と編集機能を持った詳細表示のビューコントローラ スタティックセルを使ったテーブルビュー データを表示するまで 編集結果を保存する
5-5 セル編集の機能を利用する
セルを削除する セルの順序変更を行う 新たなセルを追加する
Chapter 6 高機能なユーザインターフェース
6-1 スクロールビューの利用
スクロールビューの動作 スクロールビュー自身の座標系 スクロールビューを組み込む 回転とアフィン変換 スクロール機能の組み込み オブジェクトを画面全体に配置する
6-2 ページビューコントローラ
テンプレートで作るアプリケーション オブジェクトの全体構成 オブジェクトを準備する 他のアプリケーションから開く データビューとモデルビューの関係とモデルコントローラ データビューコントローラの実装 ページビューのデータソース処理 ページビューのデリゲート処理 PDFを表示する仕組み
6-3 コレクションビューコントローラ
コレクションビューの機能 コレクションビューの構築で利用するクラス コレクションビュー向けのビューコントローラ コレクションビューの設定とサイズ指定 セルを構成するクラス ビューコントローラの実装 カレンダーを実現するための日付の処理
6-4 Webビューの活用
UIWebViewの動作 Webビューを使ったサンプルプログラム Webビューへの表示 ビューの外部から内部に働きかける ビュー内部のインタラクションとつなげる iOS
8から搭載されたWebKit
6-5 多言語に対応したアプリケーション
アプリケーションの多言語対応 ストーリーボードのローカライズ ストーリーボードの編集と言語リソース プログラム内で使用する文字列の多言語化 アプリケーション名のローカライズ その他のリソースのローカライズ
Chapter 7 ネットワークを理解する
7-1 簡単に実現できる通信処理
通信処理を取り巻くiOSの機能 通信先の動作について セッションとタスクについて NSSessionを使ったもっとも簡単な通信処理 接続先と設定オブジェクトの生成 セッションおよびタスクのオブジェクトの生成 完了ブロックの定義 完了ブロックをメインスレッドで稼働する ボディがある場合の作成方法 エラー対応
7-2 デリゲートを伴う通信処理
デリゲートを行ったNSURLSession SSLによる通信と自己署名証明書 認証を伴う通信 リダイレクトのカスタマイズ 通信中のプログレス表示
7-3 バックグラウンド動作を伴う通信処理
バックグラウンドで実行するタスク バックグラウンド時のデリゲートメソッド バックグラウンド中の通信終了を受け付けるユーザに通知する バックグラウンドでのダウンロード処理のまとめ
Chapter 8 Core Dataを理解する
8-1 Core Dataの基本概念
iOSでのアプリケーション内のデータ保存 Core Dataの動作のポイント Core Dataのオブジェクトモデル Core Dataのクラス Core Dataの使いどころ Core
Dataに関するドキュメント
8-2 Xcodeで行うモデル作成
モデル作成の手順 モデルファイルの用意 エンティティの作成 アトリビュートの作成 複数のエンティティからリレーションシップを作成 クラスファイルの生成 生成されたエンティティごとのソースコード
8-3 Core Dataでのコンテキストの利用
モデルに相当するクラスの定義 Core Dataのコンテキストを得るまで コンテキストからデータを取り出す Core
Dataで得られた結果を画面に表示する コンテキストにデータを追加する Core Dataから得られる異なる結果を画面に表示する データを削除する
8-4 フェッチ時の検索条件指定
NSPredicateクラスのオブジェクトの生成 数値や日付についての検索条件 文字列についての検索条件 フェッチリクエストをモデルに定義する
8-5 モデルの変化に追随させる
モデルの変化で何が発生するか モデルをバージョン管理する バージョン間で移行可能にする 自動的な移行が行える範囲
8-6 計算プロパティの追加とインデックス付きテーブルビュー
データベースにないプロパティの定義 追加定義したプロパティ インデックス付きのリストを作る セクションとインデックスが一致しない場合の作成方法
8-7 オブザーバを利用した実装
MVCアーキテクチャにおける画面更新 Core
Dataにおけるオブザーバブルなモデル オブザーバブルなモデルを構築する サンプルアプリケーションの動作 モデル側のデータ処理メソッド デリゲートへの対応 セクションがある場合のデリゲートメソッド オブザーバの適切な実装
8-8 マルチスレッド環境で稼働させる
スレッドとCore
Data 単一のスレッドに束縛する方法 複数のコンテキストを並列動作させる 階層化コンテキストを利用したサンプルプログラム XMLファイルを読み込んでオブジェクトを生成 すべてのオブジェクトを削除するメソッド テーブルビューを利用したビューコントローラ サンプルプログラムの動作について
正誤表
ページなど |
訂正箇所 |
訂正内容 |
p64 図2-1-1 |
図中のメソッドapplication:didFinishLaunchingWithOptions:とapplication:willFinishLaunchingWithOptions:が逆になっている。またメソッド名の最初にマイナス記号がない。
|
こちらのPDFに訂正図を示します。同じ大きさになっていると思われますので、お手数ですが印刷の上、挟み込むか、あるいは貼り付けてください。 |
p189 「なお、Device…」以下のパラグラフ |
記述内容は概ね合っていますが、的確な解説ではありませんでした。 |
こちらの記事に正しい説明があります。 |