【2023最新】「swift3」のおすすめ本!人気ランキング
この記事では、「swift3」のおすすめ本をランキング形式で紹介していきます。インターネット上の口コミや評判をベースに集計し独自のスコアでランク付けしています。
Amazonで詳しく見る
紹介文
※※圧倒的な好評価! 売上累計【No.1】
とことん丁寧なiPhoneアプリ開発の入門書
【本書の目的】
本書は、これからはじめてiPhoneアプリ開発を学ぼうとしている人にとって少しでも役立つ本であるために、「誰一人、絶対に挫折しない」を命題に、とことんこだわって、とにかく丁寧に解説しています。手順の省略や解説の飛躍も一切ありません。
自信がない人、大歓迎です。ぜひ本書を最後まで読み進めてください!
経験ゼロからでも必ず読み進められ、Swiftとアプリ開発の基本はこの1冊で必ず習得できます!
【本書の対象読者】
本書の対象読者は、プログラミング経験はまったくないけれど、iPhoneアプリを作ってみたい! と思っている人です。この想いがあれば必ず読み切れます。
まだぜんぜん遅くない! 今日からアプリを作りはじめよう!
■■特典PDF付き■■
本書には、以下の内容を含む特典PDFが付いています!
・アプリの販売に関するApple社との契約方法
・制作したアプリをApp Storeへ登録する方法
・アプリをリリースする方法
■■■■■■■■■■
【Contents】
Chapter 01 iPhoneアプリ開発の基礎知識
Chapter 02 XcodeとiOSシミュレータの基本操作
Chapter 03 今日からはじめるSwiftプログラミング【入門前夜】
Chapter 04 今日からはじめるSwiftプログラミング【超入門】
Chapter 05 クラスとインスタンス~UI部品の利用~
Chapter 06 iPhoneアプリ開発をはじめよう!
Chapter 07 自作アプリで広告収入を得る方法
Chapter 08 SNSアプリ開発で学ぶボタン機能と画像配置
Chapter 09 カメラアプリ開発で学ぶプロトコルとデリゲート
Chapter 10 今後につながる少し高度なアプリ開発 【総合演習】
Chapter 11 アプリ開発の仕上げ
Chapter 12 情報の収集方法とアプリの公開
Amazonで詳しく見る
紹介文
はじめて学ぶ人でも安心!オールカラーでコードを丁寧に解説。HTMLとCSSの基本を順番に学んで実践的なWebサイトを完成させる!勘違いしやすい箇所は講師がフォロー!ワークショップ感覚で読み進められる。
1 Webサイトを作成する準備をしよう
2 HTMLの基本を学ぼう
3 共通部分のHTMLを作成しよう
4 共通部分から個別のページを作成しよう
5 CSSの基本を学ぼう
6 CSSで共通部分をデザインしよう
7 コンテンツのデザインを整えよう
8 スマートフォンに対応しよう
9 Webサイトを公開しよう
10 機能を追加して集客しよう
Amazonで詳しく見る
紹介文
作ってたしかめて、応用する力が身につく
装飾からレイアウトまで、ステップバイステップで作ってたしかめてCSSデザインの基本が身につく入門書の決定版! 既存ページのカスタマイズと、ゼロからのレイアウト作成を実習します。最新のCSS3で追加された便利なプロパティの使い方も紹介。Win/Mac対応。
chapter01 WebサイトとHTMLの基本
01 HTMLの基礎知識
02 新規ファイルの作成と保存
03 HTML記述のポイント
04 HTMLを書いてみよう
chapter02 CSSの基礎
01 CSSの基礎知識
02 CSSの仕組み、基本的な書式、各部の名称
03 CSSを記述する場所
04 CSSファイルを作成してHTMLファイルにリンクする
05 CSSを記述する
chapter03 カスタマイズから始めよう!テキスト周りのCSS
01 HTMLから要素を選択する「セレクタ」
02 ページ全体のフォント、テキストを調整する
03 さまざまなセレクタを使用する
04 継承とより高度なフォントの扱い
chapter04 ボックスモデルを理解しよう
01 ボックスとボックスモデル
02 背景色を変更する
03 背景に画像を使用する
04 ボックスモデルを理解しよう
05 サイドバーの表示をカスタマイズする
06 ショートハンドとauto値
chapter05 コンテンツのスタイル
01 CSSが適用される優先順位 ~カスケードと詳細度~
02 見出しの背景を変更する
03 ボックスの装飾とマージンの畳み込み
04 テーブルの基本的なCSSをマスターする
chapter06 フロートとポジション
01 通常のHTML配置とフロート、ポジション
02 全体のHTML構造を確認する
03 ページ全体に適用されるCSSを記述する
04 ヘッダーを作成する
05 ウィンドウ幅いっぱいに広がる背景画像を適用する
06 ヘッダーを仕上げる
07 ナビゲーションを作成する
chapter07 高度なページレイアウト
01 フロートとページレイアウト
02 キービジュアルをウィンドウの中央に配置する
03 メイン部分のレイアウトを作成する
04 フッター部分のレイアウトを作成する
Amazonで詳しく見る
紹介文
開発言語SwiftUI+Swiftを使って、iPhoneアプリ開発を始めよう! Xcode 14/Swift 5.7対応
●本書が対象とする方
・プログラムを書いたことはないけれど、iPhoneアプリを作ってみたい方
・iPhoneアプリをよく利用していて、自分でも作ってみたいと思った方
・中高生、大学生でiPhoneアプリ開発を学んでみたい方
・シルバー世代や中高年の方で再学習を実施したい方
・企業で入社前研修や企業導入研修での教材を検討している方
そんなiPhoneアプリを作ってみたい、すべての初心者が対象です。
アプリを作ることを「開発」するともいいます。開発といっても「難しいことをする!」と身構える必要はありません。プログラミングを楽しみながら、リラックスして読み進めてください。
●本書でできるようになること
初心者の方もサンプルアプリを作ることにより、動く体験と基本の知識が身につくようになります。
この書籍を終えるころには、他の入門書やプログラミング文法書を読む力もついていると思います。そして、作りたいアプリや学習したい分野も見えてくると思いますので、ぜひ、次の書籍を購入してステップアップを目指してください。
●本書の目次
はじめに
この本の読み方と使い方
ご利用の前に必ずお読みください
Day 1
Lesson 1 はじめてのアプリを開発する前に知っておこう
Lesson 2 アプリ開発の環境を整えて、Xcodeの使い方を学ぼう
Lesson 3 じゃんけんアプリを作ろう―Swiftの基本を学ぶ―
Lesson 4 楽器アプリを作ろう―音の扱い方を学ぶ―
Lesson 5 マップ検索アプリを作ろう―MapKitとクロージャを学ぶ―
Day 2
Lesson 1 タイマーアプリを作ろう―画面遷移とデータの永続化―
Lesson 2 カメラアプリを作ろう[前半]―カメラとSNS投稿―
Lesson 3 カメラアプリを作ろう[後半]―エフェクト機能の追加―
Lesson 4 お菓子検索アプリを作ろう―Web APIとJSONの使い方を学ぶ―
索引
Swiftビギナーズ倶楽部について
謝辞
執筆陣プロフィール
はじめに
この本の読み方と使い方
ご利用の前に必ずお読みください
Day 1
Lesson 1 はじめてのアプリを開発する前に知っておこう
Lesson 2 アプリ開発の環境を整えて、Xcodeの使い方を学ぼう
Lesson 3 じゃんけんアプリを作ろう―Swiftの基本を学ぶ―
Lesson 4 楽器アプリを作ろう―音の扱い方を学ぶ―
Lesson 5 マップ検索アプリを作ろう―MapKitとクロージャを学ぶ―
Day 2
Lesson 1 タイマーアプリを作ろう―画面遷移とデータの永続化―
Lesson 2 カメラアプリを作ろう[前半]―カメラとSNS投稿―
Lesson 3 カメラアプリを作ろう[後半]―エフェクト機能の追加―
Lesson 4 お菓子検索アプリを作ろう―Web APIとJSONの使い方を学ぶ―
索引
Swiftビギナーズ倶楽部について
謝辞
執筆陣プロフィール
Amazonで詳しく見る
紹介文
ロングセラーシリーズ・ポケットリファレンスに話題のSwiftが新登場。「逆引き形式で目的からすぐ探せる」「サンプルコードを見ながら具体的な実装のイメージがつかめる」という特徴で、困ったときにすぐに役立ちます。iPhone 6s/iPhone 6s Plusから搭載された「3D Touch」にも対応。現場で役立つ信頼の1冊です。
1 iOSアプリ開発の基本
2 Swiftの基本的な使い方
3 画面を作成する
4 コンテンツを表示する
5 UI部品を利用する
6 画面の操作を処理する
7 端末の機能を利用する
8 データを利用する
9 ネットワークを利用する
10 情報を共有する
11 3D Touchを利用する
Amazonで詳しく見る
紹介文
Swift言語に精通したプログラミング界の重鎮・大重美幸氏が基礎からSwiftUIを使ったアプリ開発の実際までを詳細に解説。
本書はiPhoneアプリのUIを作るSwiftUIフレームワークの iOS 16とXcode 14に対応した最新の入門解説書です。
Xcodeの使い方や新機能から、SwiftUIコードの便利な入力補完機能、ツール、ナビゲーション、シート、タブ、レイアウト、マップ、非同期処理などをステップを追って段階的に説明します。
Swiftシンタックス(構文)についても、詳細に図解入りで解説しています。
CONTENTS
Chapter01 iPhoneアプリを作ってみよう/Playgroundの活用
Chapter02 基本操作とレイアウト調整
Chapter03 イメージと図形の表示
Chapter04 リスト表示とナビゲーションリンク
Chapter05 ボタンやテキストフィールドなどユーザー入力で使う部品
Chapter06 アラート、シート、スクロール、グリッドレイアウト、タブを使う
Chapter07 バインディングとオブジェクトの共有
Chapter08 SwiftUIのMap()で地図表示
Chapter09 async/awaitを使った非同期処理
Amazonで詳しく見る
紹介文
本書は、Swiftの言語仕様と実践的な利用方法を解説した入門書です。増補改訂第3版では、新バージョンのSwift 5に対応し、実践入門という趣旨に合わせて、第16章「Webサービスとの連携」と第17章「ユニットテスト」を新設しました。
Swiftは簡潔な言語ですが、その言語仕様を理解し、正しく使うことはけっして容易ではありません。Appleの公式ドキュメントをはじめとして、どんな言語仕様があり、それらをどのように使うかに関しては豊富な情報源があります。しかし、それらがなぜ存在し、いつ使うべきかについてまとまった情報があるとは言えません。本書は、読者のみなさんの「なぜ」や「いつ」を解消することにも主眼を置いています。
本書では、はじめにSwiftの標準的な機能を一通り解説し、続いて型の設計指針や非同期処理、エラー処理などの実装パターンを説明します。最後に、実践的なSwiftアプリケーションの開発を通じて、それまでに説明した機能と実装パターンの具体的な活用方法を示します。
はじめに
謝辞
増補改訂第3版での更新点
サポートページ
□第1章 Swiftはどのような言語か
▼1.1
言語の特徴
静的型付き言語
nilの許容性をコントロール可能
型推論による簡潔な記述
ジェネリクスによる汎用的な記述
Objective-Cと連携可能
▼1.2
開発環境
ツールチェインのインストール
macOS
Linux
ライブラリ
標準ライブラリ ── 言語の一部となるライブラリ
コアライブラリ ── 高機能な汎用ライブラリ
開発ツール
Swift Package Manager ── パッケージ管理ツール
LLDB ── デバッグツール
▼1.3
プログラムの実行方法
コマンドラインによる実行方法
REPLによるインタラクティブな実行
単一ファイルのプログラムの実行
複数のファイルから構成されるプログラムの実行
Xcodeにおける実行方法
Playgroundによるインタラクティブな実行
複数のファイルから構成されるプログラムの実行
▼1.4
本書のサンプルコードの実行方法
▼1.5
命名規則
名前に使用可能な文字
単語の区切り方
単語の選び方
▼1.6
本書の構成
▼1.7
まとめ
□第2章 変数と定数と式
▼2.1
変数と定数による値の管理
▼2.2
変数と定数の基本
宣言方法
値の代入方法
代入可能な値
代入による型推論
定数への再代入
値の利用方法
初期化前の変数や定数の利用
型の確認方法
▼2.3
スコープ ── 名前の有効範囲
ローカルスコープ ── 局所的に定義されるスコープ
グローバルスコープ ── プログラム全体から参照できるスコープ
スコープの優先順位
▼2.4
式の組み立て
値の返却のみを行う式
変数や定数の値を返却する式
リテラル式 ── 値をプログラムに直接表記する式
メンバー式 ── 型のメンバーにアクセスする式
クロージャ式 ── 呼び出し可能な処理を定義する式
演算を行う式
算術演算子 ── 算術を行う演算子
符号演算子 ── 数値の符号を指定する演算子
否定演算子 ── 論理値の反転を行う演算子
処理を呼び出す式
関数を呼び出す式
イニシャライザを呼び出す式
▼2.5
まとめ
□第3章 基本的な型
▼3.1
型による値の表現
▼3.2
Bool型 ── 真理値を表す型
真理値リテラル
論理演算
否定
論理積
論理和
▼3.3
数値型 ── 数値を表す型
数値リテラル
数値型の種類
整数型
浮動小数点型
数値型どうしの相互変換
数値型の操作
比較
算術
Foundationによる高度な操作
▼3.4
String型 ── 文字列を表す型
文字列リテラル
特殊文字の表現
文字列リテラル内での値の展開
複数行の文字列リテラル
数値型との相互変換
String型の操作
比較
結合
Foundationによる高度な操作
▼3.5
Optional型 ── 値があるか空のいずれかを表す型
Optional型の2つのケース ── 値の不在を表す.noneと、値の存在を表す.some
型推論
Optional型の値の生成
nilリテラルの代入による.noneの生成
イニシャライザによる.someの生成
値の代入による.someの生成
Optional型のアンラップ ── 値の取り出し
オプショナルバインディング ── if文による値の取り出し
??演算子 ── 値が存在しない場合のデフォルト値を指定する演算子
強制アンラップ ── !演算子によるOptional型の値の取り出し
オプショナルチェイン ── アンラップを伴わずに値のプロパティやメソッドにアクセス
map(_:)メソッドとflatMap(_:)メソッド ── アンラップを伴わずに値の変換を行うメソッド
暗黙的にアンラップされたOptional型
値の取り出し方法の使い分け
▼3.6
Any型 ── 任意の型を表す型
Any型への代入による型の損失
▼3.7
タプル型 ── 複数の型をまとめる型
要素へのアクセス
インデックスによるアクセス
要素名によるアクセス
代入によるアクセス
Void型 ── 空のタプル
▼3.8
型のキャスト ── 別の型として扱う操作
アップキャスト ── 上位の型として扱う操作
ダウンキャスト ── 下位の型として扱う操作
型の判定
▼3.9
値の比較のためのプロトコル
Equatableプロトコル ── 同値性を検証するためのプロトコル
Comparableプロトコル ── 大小関係を検証するためのプロトコル
▼3.10
まとめ
□第4章 コレクションを表す型
▼4.1
値の集まりの表現
▼4.2
Array型 ── 配列を表す型
配列リテラル
型推論
要素にできる型
Array型の操作
要素へのアクセス
要素の更新、追加、結合、削除
▼4.3
Dictionary型 ── 辞書を表す型
辞書リテラル
型推論
キーと値にできる型
Dictionary型の操作
値へのアクセス
値の更新、追加、削除
▼4.4
範囲型 ── 範囲を表す型
範囲演算子 ── 範囲を作る演算子
..型の値の有無を評価
列挙型ケースパターン ── ケースとの一致の評価
is演算子による型キャスティングパターン ── 型の判定による評価
as演算子による型キャスティングパターン ── 型のキャストによる評価
パターンマッチが使える場所
if文
guard文
for-in文
while文
do文のcatch節
▼5.6
まとめ
□第6章 関数とクロージャ
▼6.1
処理の再利用
▼6.2
関数 ── 名前を持ったひとまとまりの処理
定義方法
実行方法
引数
仮引数と実引数
外部引数名と内部引数名
外部引数名の省略
デフォルト引数 ── 引数のデフォルト値
インアウト引数 ── 関数外に変更を共有する引数
可変長引数 ── 任意の個数の値を受け取る引数
コンパイラによる引数チェック
戻り値
戻り値がない関数
コンパイラによる戻り値チェック
暗黙的なreturn
▼6.3
クロージャ ── スコープ内の変数や定数を保持したひとまとまりの処理
定義方法
型推論
実行方法
引数
簡略引数名 ── 引数名の省略
戻り値
クロージャによる変数と定数のキャプチャ
引数としてのクロージャ
属性の指定方法
escaping属性 ── 非同期的に実行されるクロージャ
autoclosure属性 ── クロージャを用いた遅延評価
トレイリングクロージャ ── 引数のクロージャを()の外に記述する記法
クロージャとしての関数
クロージャ式を利用した変数や定数の初期化
▼6.4
まとめ
□第7章 型の構成要素 ── プロパティ、イニシャライザ、メソッド
▼7.1
型に共通するもの
▼7.2
型の基本
定義方法
インスタンス化の方法
型の内部でのインスタンスへのアクセス
型の内部での型自身へのアクセス
▼7.3
プロパティ ── 型に紐付いた値
定義方法
紐付く対象による分類
インスタンスプロパティ ── 型のインスタンスに紐付くプロパティ
スタティックプロパティ ── 型自身に紐付くプロパティ
ストアドプロパティ ── 値を保持するプロパティ
プロパティオブザーバ ── ストアドプロパティの変更の監視
レイジーストアドプロパティ ── アクセス時まで初期化を遅延させるプロパティ
コンピューテッドプロパティ ── 値を保持せずに算出するプロパティ
ゲッタ ── 値の返却
セッタ ── 値の更新
セッタの省略
▼7.4
イニシャライザ ── インスタンスの初期化処理
定義方法
失敗可能イニシャライザ ── 初期化の失敗を考慮したイニシャライザ
コンパイラによる初期化チェック
▼7.5
メソッド ── 型に紐付いた関数
定義方法
紐付く対象による分類
インスタンスメソッド ── 型のインスタンスに紐付くメソッド
スタティックメソッド ── 型自身に紐付くメソッド
オーバーロード ── 型が異なる同名のメソッドの定義
引数によるオーバーロード
戻り値によるオーバーロード
▼7.6
サブスクリプト ── コレクションの要素へのアクセス
定義方法
セッタの省略
オーバーロード ── 型が異なるサブスクリプトの定義
▼7.7
エクステンション ── 型の拡張
定義方法
メソッドの追加
コンピューテッドプロパティの追加
イニシャライザの追加
▼7.8
型のネスト
定義方法
▼7.9
まとめ
□第8章 型の種類 ── 構造体、クラス、列挙型
▼8.1
型の種類を使い分ける目的
▼8.2
値の受け渡し方法による分類
値型 ── 値を表す型
変数と定数への代入とコピー
mutatingキーワード ── 自身の値の変更を宣言するキーワード
参照型 ── 値への参照を表す型
値の変更の共有
値型と参照型の使い分け
▼8.3
構造体 ── 値型のデータ構造
定義方法
ストアドプロパティの変更による値の変更
定数のストアドプロパティは変更できない
メソッド内のストアドプロパティの変更にはmutatingキーワードが必要
メンバーワイズイニシャライザ ── デフォルトで用意されるイニシャライザ
メンバーワイズイニシャライザのデフォルト引数
▼8.4
クラス ── 参照型のデータ構造
定義方法
継承 ── 型の構成要素の引き継ぎ
定義方法
オーバーライド ── 型の構成要素の再定義
finalキーワード ── 継承とオーバーライドの禁止
クラスに紐付く要素
クラスプロパティ ── クラス自身に紐付くプロパティ
クラスメソッド ── クラス自身に紐付くメソッド
スタティックプロパティ、スタティックメソッドとの使い分け
イニシャライザの種類と初期化のプロセス
指定イニシャライザ ── 主となるイニシャライザ
コンビニエンスイニシャライザ ── 指定イニシャライザをラップするイニシャライザ
2段階初期化
デフォルトイニシャライザ ── プロパティの初期化が不要な場合に定義されるイニシャライザ
クラスのメモリ管理
デイニシャライザ ── インスタンスの終了処理
値の比較と参照の比較
▼8.5
列挙型 ── 複数の識別子をまとめる型
定義方法
ローバリュー ── 実体の定義
ローバリューのデフォルト値
連想値 ── 付加情報の付与
CaseIterableプロトコル ── 要素列挙のプロトコル
コンパイラによるallCasesプロパティのコードの自動生成
allCasesプロパティのコードが自動生成されない条件
▼8.6
まとめ
□第9章 プロトコル ── 型のインタフェースの定義
▼9.1
型のインタフェースを定義する目的
▼9.2
プロトコルの基本
定義方法
準拠方法
クラス継承時の準拠方法
エクステンションによる準拠方法
コンパイラによる準拠チェック
利用方法
プロトコルコンポジション ── 複数のプロトコルの組み合わせ
▼9.3
プロトコルを構成する要素
プロパティ
定義方法
ゲッタの実装
セッタの実装
メソッド
定義方法
メソッドの実装
mutatingキーワード ── 値型のインスタンスの変更を宣言するキーワード
連想型 ── プロトコルの準拠時に指定可能な型
定義方法
型制約の追加
デフォルトの型の指定
プロトコルの継承
クラス専用プロトコル
▼9.4
プロトコルエクステンション ── プロトコルの実装の定義
定義方法
デフォルト実装による実装の任意化
型制約の追加
▼9.5
まとめ
□第10章 ジェネリクス ── 汎用的な関数と型
▼10.1
汎用的なプログラム
▼10.2
ジェネリクスの基本
定義方法
特殊化方法
仮型引数と実型引数
汎用性と型安全性の両立
Any型との比較
▼10.3
ジェネリック関数 ── 汎用的な関数
定義方法
特殊化方法
引数からの型推論による特殊化
戻り値からの型推論による特殊化
型制約 ── 型引数に対する制約
スーパークラスや準拠するプロトコルに対する制約
連想型のスーパークラスや準拠するプロトコルに対する制約
型どうしの一致を要求する制約
▼10.4
ジェネリック型 ── 汎用的な型
定義方法
特殊化方法
型引数の指定による特殊化
型推論による特殊化
型制約 ── 型引数に対する制約
型の定義で使用できる型制約
ジェネリック型の型制約付きエクステンション
プロトコルへの条件付き準拠
▼10.5
まとめ
□第11章 モジュール ── 配布可能なプログラムの単位
▼11.1
再利用可能かつ配布可能なプログラム
▼11.2
モジュールの作成と利用
ビルドターゲットの定義
ビルドターゲットの依存関係の定義
外部パッケージの利用
▼11.3
名前空間 ── 名前が一意となる範囲
import文 ── モジュールのインポートを行う文
名前の衝突の回避
▼11.4
アクセスコントロール ── 外部からの使用の制限
アクセスレベル ── 公開範囲の分類
指定方法
デフォルトのアクセスレベル
エクステンションのアクセスレベル
モジュールヘッダ ── モジュール外から参照可能なインタフェース
閲覧方法
モジュールヘッダに記述される情報
ドキュメントコメント ── コードの意図や使用方法の説明
▼11.5
まとめ
□第12章 型の設計指針
▼12.1
クラスに対する構造体の優位性
参照型のクラスがもたらすバグ
値型の構造体がもたらす安全性
コピーオンライト ── 構造体の不要なコピーを発生させない最適化
クラスを利用するべきとき
参照を共有する
インスタンスのライフサイクルに合わせて処理を実行する
▼12.2
クラスの継承に対するプロトコルの優位性
クラスの継承がもたらす期待しない挙動
プロトコルによるクラスの継承の問題点の克服
クラスの継承を利用するべきとき
複数の型の間でストアドプロパティの実装を共有する
▼12.3
オプショナル型の利用指針
Optional型を利用するべきとき
値の不在が想定される
ただし、必然性のないOptional型のプロパティは排除する
暗黙的にアンラップされたOptional型を利用するべきとき
初期化時にのみ値が決まっていない
サブクラスの初期化より前にスーパークラスを初期化する
Optional型と暗黙的にアンラップされたOptional型を比較検討するべきとき
▼12.4
まとめ
□第13章 イベント通知
▼13.1
Swiftにおけるイベント通知のパターン
▼13.2
デリゲートパターン ── 別オブジェクトへの処理の委譲
実装方法
命名規則
弱参照による循環参照への対処
利用するべきとき
2つのオブジェクト間で多くの種類のイベント通知を行う
外部からのカスタマイズを前提としたオブジェクトを設計する
▼13.3
クロージャ ── 別オブジェクトへのコールバック時の処理の登録
実装方法
キャプチャリスト ── キャプチャ時の参照方法の制御
weakキーワード ── メモリ解放を想定した弱参照
unownedキーワード ── メモリ解放を想定しない弱参照
キャプチャリストの使い分け
escaping属性によるselfキーワードの必須化
typealiasキーワードによる複雑なクロージャの型への型エイリアス
利用するべきとき
処理の実行とコールバックを同じ箇所に記述する
▼13.4
オブザーバパターン ── 状態変化の別オブジェクトへの通知
実装方法
Selector型 ── メソッドを参照するための型
利用するべきとき
1対多のイベント通知を行う
▼13.5
まとめ
□第14章 非同期処理
▼14.1
Swiftにおける非同期処理
▼14.2
GCD ── 非同期処理のための低レベルAPI群
実装方法
ディスパッチキューの種類
既存のディスパッチキューの取得
新規のディスパッチキューの生成
ディスパッチキューへのタスクの追加
利用するべきとき
シンプルな非同期処理を実装する
▼14.3
Operation、OperationQueueクラス ── 非同期処理を抽象化したクラス
実装方法
タスクの定義
キューの生成
キューへのタスクの追加
タスクのキャンセル
タスクの依存関係の設定
利用するべきとき
複雑な非同期処理を実装する
▼14.4
Threadクラス ── 手動でのスレッド管理
実装方法
利用するべきとき
特になし
▼14.5
非同期処理の結果のイベント通知
▼14.6
まとめ
□第15章 エラー処理
▼15.1
Swiftにおけるエラー処理
▼15.2
Optional型によるエラー処理 ── 値の有無による成功、失敗の表現
実装方法
利用するべきとき
値の有無だけで結果を十分に表せる
▼15.3
Result型によるエラー処理 ── 列挙型による成功、失敗の表現
実装方法
利用するべきとき
エラーの詳細を提供する
成功か失敗のいずれかであることを保証する
非同期処理のエラーを扱う
▼15.4
do-catch文によるエラー処理 ── Swift標準のエラー処理
実装方法
Errorプロトコル ── エラー情報を表現するプロトコル
throwsキーワード ── エラーを発生させる可能性のある処理の定義
rethrowsキーワード ── 引数のクロージャが発生させるエラーの呼び出し元への伝播
tryキーワード ── エラーを発生させる可能性のある処理の実行
try!キーワード ── エラーを無視した処理の実行
try?キーワード ── エラーをOptional型で表す処理の実行
defer文によるエラーの有無に関わらない処理の実行
利用するべきとき
エラーの詳細を提供する
成功か失敗のいずれかであることを保証する
連続した処理のエラーをまとめて扱う
エラー処理を強制する
▼15.5
fatalError(_:)関数によるプログラムの終了 ── 実行が想定されていない箇所の宣言
実装方法
Never型 ── 値を返さないことを示す型
利用するべきとき
想定外の状況ではプログラムを終了させる
▼15.6
アサーションによるデバッグ時のプログラムの終了 ── 満たすべき条件の宣言
実装方法
assert(_:_:)関数 ── 条件を満たさない場合に終了するアサーション
assertionFailure(_:)関数 ── 必ず終了するアサーション
コンパイルの最適化レベル ── デバッグとリリースの切り替え
利用するべきとき
デバッグ時に想定外の状況を検出する
リリース時は想定外の状況でもプログラムの実行を継続する
▼15.7
エラー処理の使い分け
▼15.8
まとめ
□第16章 Webサービスとの連携
▼16.1
連携のための取り決め
▼16.2
データの取り扱い
Data型 ── バイト列を表す型
エンコードとデコード
JSONEncoderクラス、JSONDecoderクラス ── JSONをエンコード、デコードする
Encodable、Decodable、Codableプロトコル ── 型をエンコード、デコードに対応させる
コンパイラによるコードの自動生成
▼16.3
HTTPによるWebサービスとの通信
URLRequest型 ── リクエスト情報の表現
HTTPURLResponse型 ── HTTPレスポンスのメタデータ
URLSessionクラス ── URL経由でのデータの送信、取得
3種類のタスク ── 基本、アップロード用、ダウンロード用
タスクの実行
▼16.4
まとめ
□第17章 ユニットテスト
▼17.1
ユニットテストの目的
▼17.2
ユニットテストのセットアップ
テストターゲットの構成
テストの実行
Linux用のテストの列挙
▼17.3
テストコードの基本
定義方法
テスト対象のモジュールのインポート
アサーション ── 値の検証
単一の式を評価するアサーション
2つの式を比較するアサーション
エラーの有無を評価するアサーション
無条件に失敗するアサーション
▼17.4
テストケース ── テストをまとめる
テストの事前処理と事後処理
setUp()メソッド ── テストの事前処理を行うメソッド
tearDown()メソッド ── テストの事後処理を行うメソッド
テストの実行のコントロール
失敗時のテストの中断
エラーによるテストの中断
非同期処理の待ち合わせ
▼17.5
スタブ ── テスト対象への入力を置き換える
プロトコルによる実装の差し替え
依存先のプロトコル化
プロトコルに準拠したスタブの実装
テストにおけるスタブの使用
▼17.6
まとめ
□第18章 実践的なSwiftアプリケーション ── Web APIクライアントを作ろう
▼18.1
GitHub Search APIクライアントを作ろう
▼18.2
実装の下準備
API仕様と動作の確認
コマンドラインアプリケーションのパッケージの作成
実装方針の確認
▼18.3
API仕様のモデル化
レスポンス ── サーバ上のリソースの表現
構造体の定義
JSONから構造体へのマッピング
JSONから構造体へのマッピングに対するテスト
ジェネリック型による検索結果の表現
JSONからジェネリック型へのマッピングに対するテスト
エラー ── APIクライアントで発生するエラーの表現
エラーの分類
エラーを表すレスポンスのモデル化
JSONからエラーの型へのマッピングに対するテスト
リクエスト ── サーバに対する要求の表現
ベースURLとパスの定義
HTTPメソッドの定義
パラメータの定義
リクエストとレスポンスの紐付け
リポジトリ検索APIの実装
▼18.4
APIクライアント ── Web API呼び出しの抽象化
API仕様をモデル化した型とFoundationの型の変換
リクエストを表す型のURLRequest型へのマッピング
Data型とHTTPURLResponse型のレスポンスを表す型へのマッピング
APIクライアントの構成要素間の接続
HTTPクライアントの実装
APIクライアントのインタフェースの定義
HTTPリクエストの送信
HTTPレスポンスの処理
通信結果の処理に対するテスト
▼18.5
プログラムの実行
エントリポイントの準備
実行ファイルのビルドと実行
▼18.6
まとめ
あとがき
索引
著者プロフィール
Amazonで詳しく見る
紹介文
進化し続けるプログラミング言語Swift
Linuxへの移植とオープンソース化の発表により、新たな節目を迎えたSwift 2
の総合的な解説書。新機能であるプロトコル拡張とエラー処理についても丁寧な
解説を加えました。
"本書では、Swiftはやさしい言語です、とは言いません。Swiftは、頼めばすぐに
色々やってくれるけれど、時々「?」とか「!」とか呟いていて、暗黙の了解という
のが通じないらしい変なヤツです。しかし、次第に仕事のさせ方がわかってくると、
事前に考え抜くタイプで、滅多にはしくじらず、一を聞いて十を知るような凄いポ
テンシャルを秘めていることに気づくでしょう。もちろん、それを理解するために
はそれなりの時間と努力を傾注する必要があります。本書が、そのようなことを学
びたいと思う方の助けになればと願っています。"
「はじめに」より
CHAPTER01 Swiftでプログラミング
CHAPTER02 関数
CHAPTER03 構造体
CHAPTER04 オプショナル
CHAPTER05 基本的なデータ型
CHAPTER06 パターン
CHAPTER07 演算子
CHAPTER08 クラスと継承
CHAPTER09 メモリ管理
CHAPTER10 プロトコル
CHAPTER11 拡張
CHAPTER12 エラー処理
CHAPTER13 クロージャ
CHAPTER14 ジェネリクス
CHAPTER15 C/Objective-Cとのデータ受け渡し
CHAPTER16 Objective-Cとの連携
CHAPTER01 Swiftでプログラミング
1.1 データ型と変数
Swiftのデータ型
整数と実数を表す型
論理型、文字型と文字列型
変数と定数
変数の定義
定数の定義
変数と型
文字列
配列
配列要素へのアクセス
演算子の種類
演算子の記述に関する注意
識別子
型に別名をつける
型パラメータ
モジュールのインポート
名前空間
コメント
1.2 制御構文
if文
while文
repeat-while文
print関数
for文
for-in文
switch文
ラベル付きのループ文
ラベル付きのif文、switch文
do文
1.3 簡単な実行方法
プレイグラウンド
Swift処理系をコマンドラインから使う
コマンドラインから対話的に利用する
ソースプログラムをコンパイルする
ソースコードを解釈実行する
複数のソースファイルからなるプログラムをコンパイルする
CHAPTER02 関数
2.1 関数定義の基本
関数定義の概要
外部引数名
外部引数名の指定と省略
内部引数名の省略
下線の特殊な用法
2.2 関数定義における様々な指定
inout引数
関数引数に既定値を指定する
引数の値を処理中に変更できるようにする
返り値を必ず使うための指定
関数内の関数
関数の呼び出し関係
2.3 オーバーロード
オーバーロードとは
外部引数名を使ったオーバーロードの定義
関数の書き表し方
CHAPTER03 構造体
3.1 構造体の定義
定義の概要
構造体の初期値
全項目イニシャライザ
構造体を定数に代入した場合
構造体の定数プロパティ
イニシャライザの定義
複数個のイニシャライザを定義する
関数とイニシャライザの記法のまとめ
他の構造体を含む構造体
ネスト型
3.2 メソッド
インスタンスに対するメソッドの定義
構造体の内容を変更するメソッド
タイプメソッド
イニシャライザとメソッド
3.3 プロパティ
プロパティの種類
タイププロパティ
格納型プロパティの初期値を式で設定する 6
計算型プロパティ
関数のinout引数にプロパティを渡す
計算型プロパティに対する特殊な設定
グローバルなスコープを持つ計算型プロパティの定義
プロパティオブザーバ
3.4 添字付け
添字付けとは
添字付けのバリエーション
3.5 プロトコル
プロトコルとは
プロトコルの利用例
CHAPTER04 オプショナル
4.1 オプショナル型
オプショナル型とnil
オプショナル型の値を開示する
条件判定とオプショナル型
4.2 オプショナル束縛構文
if-let文
オプショナル束縛と条件式
guard文
nil合体演算子
readLine関数
4.3 有値オプショナル型
有値オプショナル型とは
オプショナル型と関数
関数のinout引数に指定する
4.4 失敗のあるイニシャライザ
イニシャライザで正しく処理ができない場合
失敗のあるイニシャライザの定義
CHAPTER05 基本的なデータ型
5.1 整数と実数
数値を表すデータ型
数値型のリテラル
数値型のメソッドやプロパティ
範囲型と区間型
5.2 配列
コレクションと可変性
配列の比較
部分配列
部分配列の型と添字
配列とプロトコル
配列のイニシャライザ
配列のプロパティ
配列のメソッド
可変個の引数が利用できる関数
多次元配列
オプショナル型による配列の空要素
5.3 文字列と文字
String型のイニシャライザ
String型のプロパティ
String型の演算子
Character型
UnicodeScalar型
合成された文字とCharacter型
文字列の長さと文字データの取り出し方
指定位置の文字および部分文字列の取り出し方
String型のメソッド
複雑な文字列埋め込み
識別子にUnicodeを使う場合の問題
5.4 辞書
辞書の型宣言と初期値
辞書へのアクセス
辞書の比較
辞書とfor-in文
辞書のメソッドとプロパティ
5.5 集合
集合の型宣言と初期値
要素へのアクセス
集合のメソッド
CHAPTER06 パターン
6.1 タプル
タプルの概要
タプルと代入操作
タプルを返す関数
キーワード付きのタプル
キーワード付きのタプルと代入
キーワード付きのタプルを返す関数
タプルをswitch文で使う
switch文でwhere節を使う
オプショナル型をswitch文で使う
6.2 列挙型
シンプルな列挙型
メソッドの定義
値型の列挙型
列挙型に対するメソッドとプロパティ
列挙型のタイプメソッド
6.3 共用型の列挙型
共用型の列挙型の概要
if-case文
for-in文で caseパターンを使う
プロトコルの採用
列挙型の付加情報を書き換えるメソッド
再帰的な列挙型
オプショナル型と列挙型
6.4 パターンマッチ
パターンマッチとは
パターンマッチのルール
CHAPTER07 演算子
7.1 Swiftの演算子
演算子の優先度
演算子の結合規則
オーバーフロー演算子
剰余演算子
ビット演算子と論理演算子
nil合体演算子
その他の演算子
7.2 演算子の定義
演算子の宣言と定義
二項演算子の定義
単項演算子の定義
引数の変数の値を変更するには
構造体に対する演算子の定義
パターンマッチ演算子
短絡評価をする演算子の定義
CHAPTER08 クラスと継承
8.1 クラス定義
クラスの概要
クラスの継承
継承によるクラス定義の例
動的結合とキャスト
クラスメソッドとクラスプロパティ
継承とメソッド呼び出し
8.2 イニシャライザ
指定イニシャライザと簡易イニシャライザ
初期化の手順と守るべきルール
クラス継承の例題
初期化は結局どう記述すればよいのか
イニシャライザの継承
必須イニシャライザ
失敗のあるイニシャライザと継承
失敗のあるイニシャライザを失敗しないようにする
8.3 継承とサブクラスの定義
プロパティの継承
添字付けの継承
継承とプロパティオブザーバ
継承をさせない指定
キャスト演算子とパターンマッチ
継承と型推論
Objective-Cのクラスを継承
クラスのメタタイプ
8.4 解放時処理
解放時処理とデイニシャライザ
デイニシャライザの定義
デイニシャライザを使った例
8.5 遅延格納型プロパティ
遅延格納型プロパティとは
ファイルの属性を遅延評価する例題
CHAPTER09 メモリ管理
9.1 参照型データとARC
リファレンスカウンタの概念
ARCによるメモリ管理
値型データの共有とコピー
9.2 強い参照の循環
インスタンスが解放できない場合
弱い参照
非所有参照
9.3 オプショナルチェーン
オプショナル型の値を連続利用する場合
オプショナルチェーンとは
オプショナルチェーンでメソッドを呼び出す
オプショナルチェーンの型
値を返さないメソッドの場合
オプショナルチェーンに対する代入
CHAPTER10 プロトコル
10.1 プロトコルの宣言
プロトコルの概要
メソッドの宣言と定義
プロパティの宣言と定義
イニシャライザの宣言と定義
クラス定義のためのプロトコル
10.2 プロトコルと型
型としてのプロトコル
プロトコルの継承
プロトコルの合成
プロトコルへの適合をチェックする
Objective-Cのプロトコルを利用する
オプション項目のあるプロトコルを宣言する
プロトコルの使用例
10.3 プロトコルと付属型
ネスト型とプロトコル
付属型が適合するプロトコルを指定
付属型の制約を継承する
10.4 プロトコルに適合する型の定義方法
プロトコルEquatableとComparable
プロトコル定義におけるSelf
プロトコルForwardIndexType
継承のあるクラス定義でSelfを使う
CHAPTER11 拡張 25
11.1 拡張の宣言 25
拡張の概要 25
システムの既存の型に対する拡張定義の例
拡張定義とイニシャライザ
拡張定義と継承に関する注意
11.2 拡張定義とプロトコルへの適合
プロトコルへの適合
プロトコルに適合するための定義がすでに存在する場合
プロトコルが演算子の定義を含む場合
11.3 プロトコル拡張
プロトコルの拡張定義とは
プロトコル拡張に記述できること
プロトコル拡張による多重継承
既定実装の利用に関する注意
CHAPTER12. エラー処理
12.1 エラー処理構文
エラーへの対応
エラーの発生
エラーの伝播と捕捉
エラーのある関数の呼び出し方
do-catch構文
try? および try! 演算子
エラーのあるオプショナル型の関数とtry?演算子
12.2 処理の中断と後始末
defer文の概要
defer文の動作
defer文とARCの動作
12.3 アクセス制御
可視性の3つのレベル
アクセス制御の指定
クラス継承とアクセス制御
拡張定義のアクセス制御について
プロパティのアクセス制御
12.4 アサーションとテスト
assert
ユニットテスト
UIテスト
関数debugPrint
利用可能条件を指定する属性
利用可能条件に合致する実装を用意する
条件付きコンパイル
12.5 デバッガLLDBの簡単な使い方
LLDBとは
REPLモードでの準備
コンパイルしたコードのデバッグ
コマンドのヘルプ
ブレークポイント
コマンドに別名を付ける
変数の値を表示する
ステップ実行
CHAPTER13 クロージャ
13.1 クロージャの宣言
クロージャの概要
クロージャの仮引数と返り値の型宣言
クロージャと関数の型
クロージャの複雑な型宣言
13.2 変数のキャプチャ
キャプチャとは
クロージャが個別にローカル変数をキャプチャする場合
複数のクロージャが同じローカル変数をキャプチャする場合
クロージャが参照型の変数をキャプチャする場合
ネスト関数とクロージャ
メソッドとクロージャ
イニシャライザとクロージャ
関数とクロージャ
13.3 クロージャの使い方と記法
引数リストの省略
引数リスト自体の省略
配列の整列
配列要素の選択
接尾クロージャ
エラーを投げるクロージャ
rethrowのある関数
配列要素に対する操作
インスタンス列を使ったプログラミングスタイル
関数のカリー化と部分適用
13.4 クロージャと強い参照の循環
キャプチャによる強い参照
弱い参照による解決は?
キャプチャリスト
関数の引数にクロージャを渡す場合
CHAPTER14 ジェネリクス
14.1 ジェネリクスの概要
ジェネリクスとは5
ジェネリック関数の例
ジェネリックな型の例
ジェネリクスとプロトコル
14.2 ジェネリック関数の定義
ジェネリック関数の定義
型パラメータの書き方
プロトコルによる制約のあるジェネリック関数
型パラメータの推論
関数の引数とタプル
14.3 ジェネリクスによる型定義
型パラメータを持つ構造体の定義
ジェネリックなデータ型と型パラメータの推論
拡張定義の条件に型パラメータを使う
プロトコルを採用した型自体に対する制約を記述する
ジェネリックなクラスを定義する
プロトコルSequenceTypeを調べよう
プロトコルCollectionTypeを見てみよう
14.4 プロトコル指向とは
クラスに基づくプログラミングの問題点
プロトコル指向の概要
オブジェクト指向とプロトコル指向
CHAPTER15 C/Objective-Cとのデータ受け渡し
15.1 データ型の互換性
C言語の単純型とSwiftの型
C言語のポインタとSwiftの型
変数を用意して関数の結果を書き込む
配列を用意して関数の結果を書き込む
C関数のポインタ引数に関するルール
返されたポインタから値を取り出す
ポインタから文字列への変換
コマンドラインの引数リストにアクセスする
UnsafeBufferPointerを利用する
T**型の引数の扱い
15.2 対応づけられたデータ型
数値と数値オブジェクト
オブジェクト
文字列
配列と集合
辞書
NSValueとCoreGraphicsの構造体
NSData
データのバイト数を調べる
Core Foundation
15.3 列挙型とその他のデータ型
列挙型
マクロNS_ENUMで定義された列挙型
マクロNS_OPTIONSで定義された列挙型
マクロ定義
共用体とビットフィールド
各国語対応の文字列を得る
関数ポインタ
C言語のブロックオブジェクト
15.4 Null許容性
Null許容性とは
Objective-CのNull許容性の表現
オプショナル型とNull許容性の関係
CHAPTER16 Objective-Cとの連携
16.1 SwiftとObjective-Cをビルドする
Xcodeの新プロジェクトをSwiftで作る
Objective-Cの情報をSwiftから参照する
Objective-CのヘッダをSwiftのインタフェースとして見る方法
Swiftの情報をObjective-Cから参照する
16.2 Objective-Cのオブジェクトを使う
Objective-CとSwiftのメソッドとイニシャライザ
Objective-CのクラスをSwiftから使う例
Objective-Cのプロパティに関する注意
Objective-Cのクラスを継承する
コマンドラインからコンパイルするには
Swiftに見せる情報を変更する
エラー情報を返すメソッド
セレクタを使ったメソッド呼び出し
セレクタを使ったメソッド呼び出しから返り値を得る
16.3 SwiftのクラスをObjective-Cで使えるようにする
Swiftのクラスと@objc属性
SwiftとObjective-Cのクラスを互いに使う例
Objective-Cに見せる名前を指定する
16.4 GUI部品との連携
ターゲット&アクション・パラダイム
Cocoaバインディング
16.5 文書化コメント
Xcode向けのコメント
文書化コメント
APPENDIX
A.Swift標準ライブラリ
B.構文図