詳細! Objective-C iPhoneアプリ開発入門ノート

新しいXcode 5 + iOS 7環境でiPhoneアプリ開発をマスター!

 2013年9月に待ちに待ったiOS 7がリリースされ、iPhone5s/5c、そしてiPad AirといったiOS 7が搭載されたデバイスが発売されます。iPhone、iPad、Macの新しいOS X Mavericksでのアプリを開発する環境もXcode 5へとバージョンアップしました。
本書では、Xcodeの基本操作からObjective-Cの基礎知識にはじまり、イベント管理、シーンの移動、アニメーション、モーションエフェクト、位置情報、コンパス機能、地図表示、カメラと画像合成までを簡単なサンプルをつくりながらコーディングをマスターします。

 このサポートページでは、本書のサンプルファイルのダウンロード、正誤表、本書の構成などを掲載しています。本書を読むにあたり、ぜひサンプルをダウンロードしてXcodeで開いて実際にコーディングを行いながらiOSアプリの開発方法を学んでください。

サンプルファイルをダウンロード

Part1Xcodeをはじめる

Part3配列・セット・辞書・構造体

Part5ビュー・画像・ボタンの作成

Part7シーンの移動

Part9描画とアニメーション

本書の構成

本書の構成と各Partの内容について以下に記します。各Partの目次内容については書籍紹介ページを参照ください。

Part1Xcodeをはじめる

 Xcodeの準備と使い方の概要を説明します。インターフェースビルダを使って画面にスイッチを置き、スイッチを切り替えると画面の色が切り替わるアプリも作ります。アプリ開発をまずは体験してみてください。
 

Part3配列・セット・辞書・構造体

 このパートでは見栄えのいいアプリを作るわけでもなく、単調で少し退屈かもしれません。しかし、多くのデータをどのように管理し、操作すれば効率的で効果的なのか、それを知っているかどうかは後々大きな差となって現れてきます。
また、多くのメソッドで引数の値に配列や構造体のデータ型を指定しています。そのようなメソッドを使いこなす上でも欠かせない知識です。
 

Part5ビュー・画像・ボタンの作成

アプリ開発の実践的な楽しさはこのパートからはじまります。このパートではプログラミングで画面に絵を表示したり、ボタンを追加する方法を解説します。利用するクラスやメソッドも増えて、プログラミングも本格的になってきます。

Part7シーンの移動

 ストーリーボードを使ったシーン設計はXcodeのもっとも重要な機能のひとつです。シーン移動を行うことで作れるアプリの幅も広がり、使い勝手も大きく変わります。ナビゲーションコントローラによるシーンの遷移、タブバーによる画面の切り替えなど、iOSアプリの基本形がここにあります。

Part9描画とアニメーション

 このパートではプログラミングを使って描画したり、アニメーションを行う方法について解説します。けっして難しくはありませんが、これらを行うにはObjective-Cの基本的な知識が欠かせません。これまでの知識を整理し、理解度を確認する上でも挑戦したい内容です。
アニメーションにはいくつかの方法がありまが、iOS7で追加されたSpriteKitとダイナミックアニメータには注目です。特に重力や衝突といった物理演算機能を手軽に利用できるダイナミックアニメータは、ゲームアプリ以外でも活用したい機能です。

1刷正誤表(2014/01/14訂正)

このたびは弊社刊「詳細! Objective-C iPhoneアプリ開発入門ノート Xcode5+iOS7対応」(1刷)をご購入いただき、誠にありがとうございます。刊行後、本書内で以下の通り誤りがあることがわかりました。お詫びして訂正いたします。また、本正誤表とあわせ、3刷正誤表も参照ください。

※なお、本書の補足事項は、Webサイト“Objective-C NOTE”およびTwitterアカウント@objc_noteでも随時更新・通知を行っております。

Chapter4-1P.101 Class Prefixの最初の図

P.101 Class Prefixの最初の図がXcode 5の図と差し替わっていませんでした。正しくは以下の図です。
P101訂正

P.105 NOTE見出し

誤: プロパティ変数の属性オブション
正: プロパティ変数の属性オプション

P.105 メソッド宣言の3行目

誤: クラスは、外部クラスからも
正: メソッドは、外部クラスからも

P.109 2行目

誤: ヘッダファイルのインプリメンテーションセクション
正: ヘッダファイルのインターフェースセクション

P.114 図のキャプション

誤: ●ヘッダファイルで定義してある変数の有効範囲
正: ●ヘッダファイルで宣言してある変数の有効範囲

誤: ●実装ファイルで定義してある変数の有効範囲
正: ●実装ファイルで宣言してある変数の有効範囲

Chapter6-1P.218 本文最終行

誤:Mulitiple
正:Multiple

P.230 【List】ViewControllerクラスの実装ファイル

1つ前のサンプルのコードになっていました。また、このプロジェクトのファイルがダウンロードファイルに含まれていませんでした。重ねてお詫びします。
※2013/12/18以前の訂正内容に誤りがありました。正しいファイルおよびリストは以下の通りになります。

【サンプルファイル】ex_UIPanGR-drag_affine.zip

【正しいリスト】

#import "ViewController.h"

@interface ViewController ()
{
    //移動ベクトルを保存
    CGPoint prevTranslation;
}
//トンボのプロパティ宣言
@property (weak, nonatomic) IBOutlet UIImageView *tombo;
//パン(ドラッグ)アクションと接続するメソッドの宣言
- (IBAction)dragging:(UIPanGestureRecognizer *)sender;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

//ドラッグ中に連続して呼び出されるメソッド
- (IBAction)dragging:(UIPanGestureRecognizer *)sender {
    //ドラッグ移動したベクトル
    CGPoint translation = [sender translationInView:self.view];
    if(sender.state == UIGestureRecognizerStateBegan){
        //前回の続きから開始する
        [sender setTranslation:prevTranslation inView:self.view];
    } else if(sender.state == UIGestureRecognizerStateChanged){
        //ドラッグに合わせて移動させる
        _tombo.transform = CGAffineTransformMakeTranslation(translation.x, translation.y);
    } else if(sender.state == UIGestureRecognizerStateEnded){
        //ドラッグ操作終了時の移動ベクトルを保存する
        prevTranslation = translation;
    }
}

@end

P.230 ex_UIPanGR-drag_affineプロジェクトのViewController.m

Chapter8-1P.370 図中の青文字

誤:SwitchLabel
正:switchLabel
※sは小文字です。

Chapter8-2P.385 サンプルファイル

P.385〜P.391で使用しているex_NSString_writeToFile_ver2プロジェクトで、使用しない画像ファイルへのリンクが含まれていました。プロジェクトを開くと次の図のように赤文字で表示されるかと思います。画像へのリンクを削除してご利用ください。
P391訂正

P.390 最終行

誤:解除すること解決します。
正:解除することで解決します。

2刷正誤表(2014/01/14訂正)

このたびは弊社刊「詳細! Objective-C iPhoneアプリ開発入門ノート Xcode5+iOS7対応」(2刷)をご購入いただき、誠にありがとうございます。刊行後、本書内で以下の通り誤りがあることがわかりました。お詫びして訂正いたします。また、本正誤表とあわせ、3刷正誤表も参照ください。

※なお、本書の補足事項は、Webサイト“Objective-C NOTE”およびTwitterアカウント@objc_noteでも随時更新・通知を行っております。

Chapter4-1P.105 NOTE見出し

誤: プロパティ変数の属性オブション
正: プロパティ変数の属性オプション

P.105 メソッド宣言の3行目

誤: クラスは、外部クラスからも
正: メソッドは、外部クラスからも

P.109 2行目

誤: ヘッダファイルのインプリメンテーションセクション
正: ヘッダファイルのインターフェースセクション

Chapter5-1P.170 1行目

誤:(UIIMageView)
正:(UIImageView)
※Mは小文字です。

Chapter6-1P.218 本文最終行

誤:Mulitiple
正:Multiple

P.230 【List】ViewControllerクラスの実装ファイル

すでに1刷の正誤表で記しているように、1つ前のcenterプロパティを移動させるサンプルのコードが重複して掲載されています。
1刷正誤表に正しいコードを掲載していますが、2013/12/18以前に掲載されていたコードにも誤りがありました。正しくは以下の図の通りです。
【サンプルファイル】ex_UIPanGR-drag_affine.zip

P.230 ex_UIPanGR-drag_affineプロジェクトのViewController.m

Chapter8-1P.370 図中の青文字

誤:SwitchLabel
正:switchLabel
※sは小文字です。

3刷正誤表(2014/04/03訂正)

このたびは弊社刊「詳細! Objective-C iPhoneアプリ開発入門ノート Xcode5+iOS7対応」(3刷)をご購入いただき、誠にありがとうございます。刊行後、本書内で以下の通り誤りがあることがわかりました。お詫びして訂正いたします。

※なお、本書の補足事項は、Webサイト“Objective-C NOTE”およびTwitterアカウント@objc_noteでも随時更新・通知を行っております。

Chapter2-1P.40 「よく使う定数」の表

「よく使う定数」の表、2〜5行目に誤りがありました。

定数			値
M_LOG2E		log2(e)
M_LOG10E		log10(e)
M_LN2			ln(2)
M_LN10		ln(10)
		

Chapter2-4P.64 本文2行目

誤:2つの日付が何秒あるか
正:2つの日付の差が何秒あるか

Chapter5-1P.160 ウインドウを頂点としたビュー階層の図中

誤:UIImage
正:UIImageView

P.73 NOTE

誤:ViewのOrijgin
正:ViewのOrigin

P.177 リスト名

誤:ViewController クラスのヘッダファイル
正:ViewController クラスの実装ファイル

Chapter5-2P.195 下から2行目

誤:convert Point:fromView メソッド
正:convertPoint:fromView メソッド

P.199 7本文3行目

誤:May Map
正:My Map

Chapter6-1P.230 本文9行目

誤:UIRotationGestureRecognizer
正:UIPanGestureRecognizer

Chapter6-2P.256 最下行

誤:dlegate プロパティ
正:delegate プロパティ

Chapter7-1P.299 本文5行目

誤:Example View Controller Scene
正:Example View Controller

P.309 本文4行目

誤:UIDate Picker
正:UIDatePicker
※空白を詰める

P.311 本文4行目

誤:MainviewController
正:MainViewController

Chapter7-4P.362 本文9行目

誤:myTabBar Controller
正:myTabBarController
※空白を詰める

Chapter8-2P.390 本文2行目

誤:applicationDidEnter Background:
正:applicationDidEnterBackground:
※空白を詰める

Chapter10-1P.466 リード1行目

誤:Orientations
正:Orientation

P.466 NOTE

誤:Supported Interface Orientations
正:Device Orientation

P.476 見出し

誤:タブコントローラ
正:タブバーコントローラ

Chapter10-3P.503 上2つの図と左下の図のそれぞれ3つ目のラベル

誤:加速度X軸 (G)
正:加速度Z軸 (G)

ダウンロードの注意事項

本サンプルプログラムは本書を利用し学習する目的で作成されました。ダウンロードしたサンプルプログラムの著作権は、大重美幸に帰属します。すべてのデータに関し、著作権者および出版社に無断での転載、二次使用を禁じます。

ダウンロードしたサンプルプログラムを利用することによって生じたあらゆる損害について、著作権者および株式会社ソーテック社はその責任を負いかねます。また、個別の問い合わせには応じかねますので、あらかじめご了承ください。

©2013 大重美幸/ソーテック社