ISBN 9784297112134
[増補改訂第3版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語
- 著者
- 石川 洋資、西山 勇世
- 出版社
- 技術評論社
- 刊行
- 2020-04
概要
Swift の言語仕様を「なぜ・いつ使うか」の視点から体系的に習得する
想定読者
Swift の基本構文を一通り触ったが、Optional や Protocol の設計判断に迷いが残る iOS 開発者。Udemy 等の動画講座を終えて次の一手を探している中級入口の学習者。
こんな人には向いていない
- Swift を全く触ったことがない完全な初学者。本書は「なぜ・いつ」の解説に比重があり、環境構築や入力補完といった入口の説明は薄い
- すでに Swift 5 で中〜大規模プロダクトを運用しており、設計パターンや Swift Concurrency の実践知識を求めている上級者には内容の深さが物足りない
- SwiftUI での宣言的 UI 構築を主目的とする読者。本書の UI 実装例は UIKit ベースで SwiftUI への応用には別途資料が必要
読了後にできるようになること
- Optional の unwrap 戦略(guard let / if let / nil 合体演算子)を状況に応じて選択できる
- Protocol と Protocol Extensions を活用したプロトコル指向設計の判断軸を持てる
- クロージャのキャプチャセマンティクスと @escaping の使いどころを説明できる
- エラー処理パターン(throws / Result 型)を型システムと組み合わせて設計できる
- URLSession を使った Web API との非同期通信を実装できる
- XCTest によるユニットテストの基本的な組み立て方を習得できる
本書のキー概念(章解説)
- 第 1 章 Swiftの基礎 — 型推論・定数と変数の使い分けなど Swift の基本哲学が凝縮されている導入章
- 第 2 章 型の基礎 — 値型と参照型の使い分け指針を早期に定着させる上で重要
- 第 3 章 基本的な型
- 第 4 章 コレクション
- 第 5 章 クロージャ — @escaping とキャプチャリストは後の非同期処理の前提として特に重要
- 第 6 章 関数
- 第 7 章 クラス・構造体・列挙型
- 第 8 章 プロトコル — プロトコル指向設計の核心。Protocol Extensions まで含めて丁寧に読む価値がある
- 第 9 章 ジェネリクス
- 第 10 章 パターンマッチング
- 第 11 章 型の設計指針
- 第 12 章 型の高度な使い方 — クラス継承 vs プロトコル指向の選択基準を整理する章。Qiita の構造体/クラス比較記事でも参照される
- 第 13 章 非同期処理
- 第 14 章 エラー処理
- 第 15 章 モジュールシステム
- 第 16 章 Webサービスとの連携 — 第3版での新設章。URLSession による API 通信の実装パターンを扱う
- 第 17 章 ユニットテスト — 第3版での新設章。XCTest を使ったテスト設計の基礎
ハイライト
- Swiftは簡潔な言語ですが、その言語仕様を理解し、正しく使うことはけっして容易ではありません。本書は、読者のみなさんの「なぜ」や「いつ」を解消することにも主眼を置いています。(本書の独自性が最も端的に表れている箇所。言語の使い方ではなく設計の「理由」を教える姿勢が他の入門書との差別化点)
- より詳細なSwiftの文法を勉強したい時に読むことをお勧めします。Swiftの書籍で一番繰り返し読んでいるのがこちらです。(単発の学習書ではなく繰り返し参照されるリファレンスとして機能している実態を示す)
外部からの言及
- SIer 営業から iOS エンジニアへの転職、独学ロードマップ、実務未経験からの入職など、キャリアチェンジ体験記の複数記事で「Swift の詳細文法を学ぶ際に繰り返し参照した」という位置づけで紹介されている。一冊読み切るより、学習フェーズの中盤以降に辞書的に使うスタイルが多い(qiita)
- 書籍レビュー記事では「各章が『なぜこの機能が存在するか』の動機付けから始まる構成が他書にない特徴」として評価されている。iOS / macOS フレームワークに依存しない純粋な言語仕様の解説のため、サーバーサイド Swift 開発者にも有用とされる(qiita)
- API 通信の実装パターンを解説する記事で「本書 14 章の設計に則っている」として実務コードの根拠として引用されるケースがある一方、Swift 初期版のサンプルコードが冗長という指摘も見られる(JSONDecoder 導入前のパターンに対する批判)(qiita)
編集メモ
Qiita での参照記事は 10 件超が確認されるが、直接のレビュー記事(likes 46: shu223 氏)を除くと多くは参考文献列挙にとどまる。個別 likes 合計は 600 強。繰り返し参照されるリファレンス書としての評価は安定しており practical と判定。essential 基準(qiita_article_count >= 10 かつ qiita_total_likes >= 200 が本書専用 likes)には届かない
読む前に押さえておきたいこと
- プログラミングの基礎経験(変数・関数・条件分岐・ループ)。言語は問わない
- Xcode のインストールと Swift Playground または iOS プロジェクトの最低限の操作経験
- オブジェクト指向の概念(クラス・継承・インターフェース)を別の言語で触れたことがあると 7〜8 章の吸収が早い
学習のコツ
- 1〜4 章の基本型と値型/参照型は通し読みし、5 章クロージャから先は興味のある章に飛んでも成立する構成になっている
- 8 章(プロトコル)と 11 章(型の設計指針)は相互補完関係にある。8 章を読んだ後に 11 章、次いで 12 章を読む順序が理解の定着を早める
- 第3版で新設された 16・17 章は実装パターンの確認用として、他章を読み終えた後に実際のプロジェクトコードと照らし合わせながら読むと効果的
- 本書のサンプルコードは iOS/macOS フレームワークを使わない純粋な Swift で書かれているため、Xcode の Playground で手を動かしながら読むのが最も定着しやすい
出版社による内容紹介
本書は、Swiftの言語仕様と実践的な利用方法を解説した入門書です。増補改訂第3版では、新バージョンのSwift 5に対応し、実践入門という趣旨に合わせて、第16章「Webサービスとの連携」と第17章「ユニットテスト」を新設しました。 Swiftは簡潔な言語ですが、その言語仕様を理解し、正しく使うことはけっして容易ではありません。Appleの公式ドキュメントをはじめとして、どんな言語仕様があり、それらをどのように使うかに関しては豊富な情報源があります。しかし、それらがなぜ存在し、いつ使うべきかについてまとまった情報があるとは言えません。本書は、読者のみなさんの「なぜ」や「いつ」を解消することにも主眼を置いています。 本書では、はじめにSwiftの標準的な機能を一通り解説し、続いて型の設計指針や非同期処理、エラー処理などの実装パターンを説明します。最後に、実践的なSwiftアプリケーションの開発を通じて、それまでに説明した機能と実装パターンの具体的な活用方法を示します。
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。