関連サイト
本書の関連ページが用意されています。
内容紹介
2014年6月、WWDC2014で発表されたプログラミング言語「Swift」の本格派解説書の登場です。
本書では、アプリケーションを作成するための説明を必要最低限にとどめ、Swiftを深く理解してもらうことに注力。Objective-Cとはまったく違うモダンな文法はもちろん、型の宣言を省略することができる型推論、複数の値を1つの変数に格納できるタプル、そして機能豊富な構造体や列挙体、オプショナル型などの最新機能、さらにはジェネリクスやカリー化など、可能な限り細かく言及しています。 また、言語仕様から一歩踏み込んで、既存のObjective-CのコードをSwiftに置き換えていく方法や、Objective-CとSwiftを同一プロジェクト内で共存させる方法など、実践的な内容まで、現場の開発者が徹底解説しました。
「Chapter1 Swiftの概要」では、Swiftの基本を解説します。併せて開発環境の構築方法やPlaygroundの使い方なども紹介します。
「Chapter2 基本文法」では、Swiftの基本文法や基礎的な機能、概念について解説します。
「Chapter3 関数とクラス」では、関数やクラスの解説に加え、構造体や列挙体、タプル、クロージャ、プロパティなど、Swiftでコードを書く上で必要不可欠な機能を細かく解説していきます。
「Chapter4 オプショナル型」で紹介するオプショナル型とは、変数にnilを許容する特別な宣言とその仕組みのことを指します。Swiftの代表的な特徴の1つですので、この章で仕組みや扱い方まで解説します。
「Chapter5 標準ライブラリの利用」では、OS X・iOSの標準的なフレームワークとの共存についてや、UIKitやObjective-Cで実績のあるKVC・KVOの仕組みなどを使い、どのようにSwiftで実装すべきかを解説します。
「Chapter6 予約語とアトリビュート」では、Swiftの予約語(特定用途に利用されるよう定義されていて、変数名やメソッド名などに使えない単語)とアトリビュート(宣言に属性を付与する特殊な単語)に関して解説します。
「Chapter7 Objective-Cとの相互利用」では、Objective-CとSwiftを相互に利用するコツを解説します。既存のプロジェクトを抱えている開発者は、今まで築き上げたライブラリの扱いに頭を悩ませるかもしれません。しかし、Objective-Cで記述されたライブラリやコードは、Swiftで簡単に取り扱うことが可能です。
「Chapter8 実践と応用」では実践する際の知識として、Swiftでテストコードを記述する方法のほか、他言語をブリッジしてSwiftで扱えるようにする方法などを解説します。
本書が現場で開発に携わる方にとって、コーディングの効率化や、プログラムの精度の向上、より良い、面白いアプリの開発の手助けになれば幸いです。
Swift 1.1対応。
書誌情報
- 著者: 渡辺 龍司, 富家 将己, 鈴木 晃, 加藤 寛人(著), 丸山 弘詩(編集)
- 発行日: 2015-02-01 (紙書籍版発行日: 2014-12-25)
- 最終更新日: 2015-02-01
- バージョン: 1.0.0
- ページ数: 410ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
iOS開発者、iPhoneアプリ開発者、プログラマー
著者について
渡辺 龍司
エキサイト株式会社所属。ソフトウェアエンジニアとして、主にiOSアプリケーション開発を担当。Windows PhoneやTizenなど新たなプラットフォームが公開されると、真っ先に私物として購入しアプリの移植や開発を行うなど、先陣を切る役割も担う。プライベートではフレンチブルドッグをこよなく愛し、世界中のフレンチブルドッグの写真を眺めるiOSアプリ「ふれぶる」をリリース。愛好家に愛用されている。
富家 将己
エキサイト株式会社所属。iOSアプリエンジニア。大学在学中に初めて触れたFlashでは絵が描けず挫折し、代わりにActionScriptによるプログラムを始める。卒業後に新卒で同社に入社。iPhoneの発表から猛烈な興味をもち、iOSアプリの開発に無理やり携わる。2011年リリースの「エキサイトニュース」がApp Store Best of Apps 2013に選出されるなど、担当したiOSアプリは40本を優に超える。
鈴木 晃
株式会社OTSL所属。ソフトウェアエンジニア。ちっちゃいガジェットで自分が書いたプログラムが動くことが楽しく、ソフトウェア研究者から転身。iOSもAndroidも好きだけどプログラミング言語そのものも好物。主な著書は『ハッキングLinuxザウルス』(共著・ソフトバンククリエイティブ刊)、『iPhone & Androidクロスプラットホームアプリケーション開発』(弊社刊)、『はじめてのiPhoneアプリプログラミング』(秀和システム刊)、『上を目指すプログラマーのためのiPhoneアプリ開発テクニックiOS7編』(共著・インプレスジャパン刊)など多数。
加藤 寛人
アヴァシス株式会社勤務。組み込み技術者として、各種ファームウェア開発を担当。「PastVid」(スキップバックレコーダー)をはじめ、プロ・教育者の利用に耐えうるiOSアプリを公開している。主な著書は『上を目指すプログラマーのためのiPhoneアプリ開発テクニック iOS 7編』(共著・インプレスジャパン刊)、『OS XとiOSのためのOpenCV環境構築ガイド』(共著・カットシステム刊)など多数。妻と3人の喧しくも可愛い子供達が心の支え。
丸山 弘詩
書籍編集者。iPhoneやAndroidなどスマートフォン全般、BSDならびにUNIX関連に深い造詣を持つ。関連書籍の執筆・編集はもちろん、アプリケーションの企画・開発、運用やプロモーションを手掛け、さまざまな分野のコンサルティングやプロダクトディレクションなども担当。
目次
Chapter01 Swiftの概要
- 1-1 Swiftとは
- 1-1-1 Swiftの特徴
- 1-1-2 開発者への配慮
- 1-1-3 公式資料
- 1-2 開発環境
- 1-2-1 Xcodeのインストール
- 1-2-2 プロジェクトの作成
- 1-2-3 画面構成
- 1-3 PlaygroundとREPL
- 1-3-1 Playground
- 1-3-2 REPL
Chapter02 基本文法
- 2-1 基本文法と変数
- 2-1-1 基本文法
- 2-1-2 変数と型
- 2-1-3 型エイリアス
- 2-1-4 タプル
- 2-1-5 Optional型
- 2-1-6 アクセスコントロール
- 2-1-7 コンソール出力
- 2-1-8 アサーション
- コラム:不変性の仕組みと考え方
- 2-2 数値リテラルと演算子
- 2-2-1 数値リテラル
- 2-2-2 一般的な演算子
- 2-2-3 Swift固有の演算子
- 2-2-4 優先順位・結合律
- 2-2-5 カスタム演算子・演算子オーバーロード
- コラム:LiteralConvertibleとは
- 2-3 制御構文
- 2-3-1 判定による制御
- 2-3-2 ループ構文
- 2-4 文字列操作
- 2-4-1 文字列リテラルで使用できる特殊文字
- 2-4-2 文字列の結合
- 2-4-3 文字列の比較
- 2-4-4 同一文字の繰り返し
- 2-4-5 空の変数判定
- 2-4-6 文字数の取得
- 2-4-7 先頭・末尾の文字列比較
- 2-4-8 アルファベット変換
- 2-4-9 数値型への変換
- 2-4-10 UTFコードの取得
- コラム:最適化オプション
- 2-5 区間・配列・辞書
- 2-5-1 区間(Range、ClosedInterval、HalfOpenInterval)
- 2-5-2 配列(Array)
- 2-5-3 辞書(Dictionary)
- 2-5-4 構造体による範囲指定
Chapter03 関数とクラス
- 3-1 関数定義と呼び出し
- 3-1-1 基本的な関数定義と呼び出し
- 3-1-2 外部引数
- 3-1-3 デフォルト引数値
- 3-1-4 可変長引数
- 3-1-5 戻り値
- 3-1-6 参照渡し引数
- 3-1-7 ネスト関数
- コラム:型の型
- 3-2 クロージャ
- 3-2-1 関数の型
- 3-2-2 基本的なクロージャ定義と特徴
- 3-2-3 クロージャの省略形
- 3-2-4 値のキャプチャ
- 3-3 クラス・構造体・列挙体
- 3-3-1 クラスと構造体
- 3-3-2 クラスと構造体の文法
- 3-3-3 プロパティ
- 3-3-4 メソッド
- 3-3-5 添字
- 3-3-6 継承
- 3-3-7 イニシャライザ・デイニシャライザ
- 3-3-8 アクセスコントロール
- 3-3-9 循環参照の対策
- 3-3-10 列挙体
- 3-4 プロトコルとエクステンション
- 3-4-1 プロトコル
- 3-4-2 エクステンション
- コラム:構造体の中のクラス
- 3-5 ジェネリック
- 3-5-1 ジェネリックとは?
- 3-5-2 ジェネリック関数
- 3-5-3 ジェネリック型
- 3-5-4 ジェネリックの型制約
- 3-5-5 関連型
- 3-5-6 ジェネリックでのwhere文
- コラム:継承したクラスにおけるメソッド使用上の注意
- 3-6 カリー化
- 3-6-1 カリー化の定義
- 3-6-2 Swiftでのカリー化
- 3-7 switchでのマッチング
- 3-7-1 パターンマッチング
- 3-7-2 switchのパターンマッチングの正体
Chapter04 オプショナル型
- 4-1 Objective-Cにおけるnil
- 4-1-1 nilのメリット・デメリット
- コラム:空のコレクション定義
- 4-2 Optional型
- 4-2-1 Optional型とは
- 4-2-2 nilの代入
- 4-2-3 Optional型への代入
- 4-2-4 if文とOptional型のアンラップ
- 4-2-5 Optional Binding
- 4-2-6 ??演算子
- 4-3 Implicitly Unwrapped Optional型
- 4-3-1 Implicitly Unwrapped Optional型とは
- 4-3-2 Implicitly Unwrapped Optional型の利用例
- 4-4 Optional Chaining
- 4-4-1 Optional Chainingとは
- 4-4-2 Optional Chainingの利用
- 4-4-3 Optional Chainingを用いた代入操作
- 4-4-4 VoidとOptional Chaining
- 4-4-5 プロトコルの任意実装なメソッド実行
- 4-4-6 nilの安全な処理
- コラム:nilはどんな値よりも小さいと判断される
Chapter05 標準ライブラリの利用
- 5-1 Foundation
- 5-1-1 Objective-C APIの呼び出し
- 5-1-2 整数(Int・UInt・NSNumber)
- 5-1-3 文字列(StringとNSString)
- 5-1-4 [UInt8]とNSData
- 5-1-5 配列と辞書(Array・DictionaryとNSArray・NSDicitonary)
- 5-1-6 ポインタ
- 5-1-7 ポインタへの値の返却
- 5-1-8 クロージャとブロック
- 5-2 UIKit
- 5-2-1 UIView
- 5-2-2 UIViewController
- 5-2-3 UIAlertController
- 5-2-4 UIPrinterPickerController
- 5-2-5 delegate、dataSource
- 5-2-6 Selector
- 5-2-7 StoryboardとIBOutlet、IBAction
- コラム:NSMutableArrayによる配列操作
- 5-3 KVCとKVO
- 5-3-1 KVC(Key-Value Coding)
- 5-3-2 KVO(Key-Value Observing)
- 5-4 Core Data
- 5-4-1 NSManagedObjectサブクラスの作成
- 5-4-2 NSManagedObjectサブクラスのプロパティ
Chapter06 予約語とアトリビュート
- 6-1 予約語
- 6-1-1 予約語を知る
- 6-1-2 予約語を識別子として使う
- コラム:Swiftのメソッド呼び出し速度
- 6-2 アトリビュート
- 6-2-1 アトリビュートの文法
- 6-2-2 宣言と型の属性
- 6-2-3 Interface Builder用の属性
- 6-2-4 UnDocumented
Chapter07 Objective-Cとの相互利用
- 7-1 SwiftからObjective-Cのコードを利用
- 7-1-1 Objective-Cのコードを利用
- 7-1-2 Objective-Cを利用する上での注意点
- 7-2 Objective-CからSwiftのコードを利用
- 7-2-1 Objective-CからSwiftのコードを利用
- 7-2-2 Swiftを利用する上での注意点
- 7-3 Swiftへの移行
- 7-3-1 書き換えるファイルと削除するファイル
- 7-3-2 プリプロセッサ
- 7-3-3 インポート
- 7-3-4 UIApplicationMain
- 7-3-5 クラスとエクステンション、プロトコル
- 7-3-6 プロパティ
- 7-3-7 変数と型
- 7-3-8 列挙体
- 7-3-9 イニシャライザ
- 7-3-10 セッター・ゲッター
- 7-3-11 メソッド、クロージャ
- コラム:入れ子のOptional型とUIApplicationDelegate
- 7-4 Swiftへの移行(実践編)
- 7-4-1 サンプルプロジェクト
- 7-4-2 利用するフレームワーク
- 7-4-3 オブジェクト配置と関連付け
- 7-4-4 ライブビュー用クラスの作成
- 7-4-5 キャプチャセッションのセットアップ
- 7-4-6 ムービー撮影
- 7-4-7 静止画撮影
- 7-4-8 SNS投稿
- コラム:コマンドラインでの自作モジュールの作成と利用
Chapter08 実践と応用
8-1 テスト
- 8-1-1 Swiftでの単体テスト
- 8-1-2 XCTest
- 8-1-3 Quick
- コラム:低レベル配列処理で速度を稼ぐ
- 8-2 ブリッジによる拡張
- 8-2-1 ブリッジする言語の選定基準
- 8-2-2 スタティックライブラリの準備
- 8-2-3 プロジェクト作成
- 8-2-4 言語へのアクセス方法を探る
- 8-2-5 ブリッジコード
- 8-2-6 Swiftからのアクセス
- コラム:デバッグ出力に便利な特殊リテラル
- 8-3 ライブラリ紹介
- 8-3-1 swift-json
- 8-3-2 Alamofire
- 8-3-3 EmitterKit
- 8-3-4 Surge
- 8-3-5 GCDKit
- 8-4 デザインパターン
- 8-4-1 デザインパターンの種類
- 8-4-2 Factory Method
- 8-4-3 Prototype
- 8-4-4 Singleton
- 8-4-5 Adapter
- 8-4-6 Decorator
- 8-4-7 Facade
- 8-4-8 Strategy