Swift 2の文法が分かるオススメ本「詳解 Swift 改訂版」

公開日: : iOSアプリ開発

20160102-131507.jpg

Swift文法書の定番とも言える、荻原 剛志さんの「詳解 Swift」。

Swiftの文法をキッチリ学ぶのにオススメな本「詳解Swift」

当時はSwift 1ベースで書かれていましたが、現在のSwift 2に合わせて「詳解 Swift 改訂版」がついに発売されました!

    

この本の対象者

この本はあくまでもSwiftの文法に関して書かれた本であり、iOSアプリの開発方法などについては特に載っていません。ですので、以下のような方が対象になるのではないかと思います。

  • Swift 1については馴染みがあるので、Swift 2での変更点について学びたい
  • Objective-C については知っているので、Swiftについて学びたい
  • Javaなど他の言語については使用経験があるので、Swiftについて学びたい
  • アプリ開発の入門書は読み終わったが、Swiftの文法についてより詳しく知りたい

    

約500ページでSwiftの文法について詳しく解説

ページ数は約500ページで、Swiftの文法について詳しく解説しています。おおまかな目次は以下の通り。

  • CHAPTER01 Swiftでプログラミング
    • 1.1 データ型と変数
    • 1.2 制御構文
    • 1.3 簡単な実行方法
  • CHAPTER02 関数
    • 2.1 関数定義の基本
    • 2.2 関数定義におけるさまざまな設定
    • 2.3 オーバーロード
  • CHAPTER03 構造体
    • 3.1 構造体の定義
    • 3.2 メソッド
    • 3.3 プロパティ
    • 3.4 添字付け
    • 3.5 プロトコル
  • CHAPTER04 オプショナル
    • 4.1 オプショナル型
    • 4.2 オプショナル束縛構文
    • 4.3 有値オプショナル型
    • 4.4 失敗のあるイニシャライザ
  • CHAPTER05 基本的なデータ型
    • 5.1 整数と実数
    • 5.2 配列
    • 5.3 文字列と文字
    • 5.4 辞書
    • 5.5 集合
  • CHAPTER06 パターン
    • 6.1 タプル
    • 6.2 列挙型
    • 6.3 共用型の列挙型
    • 6.4 パターンマッチ
  • CHAPTER07 演算子
    • 7.1 Swiftの演算子
    • 7.2 演算子の定義
  • CHAPTER08 クラスと継承
    • 8.1 クラス定義
    • 8.2 イニシャライザ
    • 8.3 継承とサブクラスの定義
    • 8.4 解放時処理
    • 8.5 遅延格納型プロパティ
  • CHAPTER09 メモリ管理
    • 9.1 参照型データとARC
    • 9.2 強い参照の循環
    • 9.3 オプショナルチェーン
  • CHAPTER10 プロトコル
    • 10.1 プロトコルの宣言
    • 10.2 プロトコルと型
    • 10.3 プロトコルと付属型
    • 10.4 プロトコルに適合する型の定義方法
  • CHAPTER11 拡張
    • 11.1 拡張の宣言
    • 11.2 拡張定義とプロトコルへの適合
    • 11.3 プロトコル拡張
  • CHAPTER12 エラー処理
    • 12.1 エラー処理構文
    • 12.2 処理の中断と後始末
    • 12.3 アクセス制御
    • 12.4 アサーションとテスト
    • 12.5 デバッガLLDBの簡単な使い方
  • CHAPTER13 クロージャ
    • 13.1 クロージャの宣言
    • 13.2 変数のキャプチャ
    • 13.3 クロージャの使い方と記法
    • 13.4 クロージャと強い参照の循環
  • CHAPTER14 ジェネリクス
    • 14.1 ジェネリクスの概要
    • 14.2 ジェネリック関数の定義
    • 14.3 ジェネリクスによる型定義
    • 14.4 プロトコル指向とは
  • CHAPTER15 C/Objective-Cとのデータ受け渡し
    • 15.1 データ型の互換性
    • 15.2 対応付けられたデータ型
    • 15.3 列挙型とその他のデータ型
    • 15.4 Null許容性
  • CHAPTER16 Objective-Cとの連携
    • 16.1 SwiftとObjective-Cをビルドする
    • 16.2 Objective-Cのオブジェクトを使う
    • 16.3 SwiftのクラスをObjective-Cで使えるようにする
    • 16.4 GUI部品との連携
    • 16.5 文書化コメント

ひたすらSwiftの文法について体系的に詳しく解説している本なので、アプリ開発を学び始めたばかりの方にとっては難しすぎるかもしれません。しかし、この本をデスクの端にでも置いておいて、アプリ開発の学習を進めるうちに気になる文法要素が出てきたら該当ページをつまみ食い的に読んでも良いのではと思います。Swiftについての理解が深まることで、より良いコードを書けるようになることでしょう。

    

Swift 2で追加されたプロトコル拡張やエラー処理構文についても詳しく解説

Swift 2で追加されたプロトコル拡張(Protocol Extension)やエラー処理構文(Error Handling)についても、サンプルコードや図などを交えて詳しく解説しています。

アップルはWWDCなどで、Swiftはプロトコル指向プログラミングも行える言語だと言っています。Swiftの標準ライブラリを見てみると、IntやFloatなどの標準型は

  • AbsoluteValuable
  • SignedNumberType
  • IntegerType
  • IntegerArithmeticType
  • SignedIntegerType
  • UnsignedIntegerType
  • BitwiseOperationsType
  • FloatingPointType

などのプロトコルに適合しており、Array・Dictionary・Setなどのコレクションは

  • CollectionType
  • ArrayLiteralConvertible
  • RangeReplaceableCollectionType
  • DictionaryLiteralConvertible
  • Hashable

などのプロトコルに適合したりしています。プロトコルやプロトコル拡張の言語仕様に詳しくなれば、このあたりの「Swiftのココロ」も分かるようになるでしょう。

また、プロトコル拡張を使うとプロトコルのメソッドやプロパティの既定(デフォルト)の実行が記述できるのですが、更にオブジェクト指向言語で言うところの多重継承、他の言語の持つ機能で言うところのtraitやmixin風の記述が可能となります。

Swiftらしいコードを書きたい場合には、しっかりと押さえておきたい言語仕様です。

    

@akio0911はこう思った。

この本を読破すれば、Swiftの文法に関してはほぼマスターできるのではないかと思います。

アプリ開発初心者の方も、Swiftの文法についてより詳しく知りたくなった段階でつまみ食い読みから初めて見ると多くの知識を得ることができると思いますよ!

この記事を書いた人
あきお(@akio0911
iOSエンジニア、ブロガー。「プログラミングで人々を幸せに」をテーマに活動中。著書に「iPhoneアプリ開発レシピ」「cocos2d for iPhoneレッスンノート」など。東京・大阪にてアプリ開発講座「アプリクリエイター道場」を主催。 MAMORIO株式会社 技術顧問(インタビュー記事)、VISITS Technologies株式会社 技術顧問(インタビュー記事)。ブログ「卵は世界である」を運営。

関連記事

この記事が気に入ったら「いいね!」しよう

follow us in feedly

Feedlyで最新記事を購読

Twitterで更新情報をゲット!

LINEでご感想・ご要望お送りください!
(スマホでLINEを起動 > 友だち追加 > QRコード)

【入門】プログラム・プログラミング・プログラミング言語とは?

こんにちは、@akio0911です。 今回は「プログラム」「プロ

【入門】プログラミング未経験者向けのプログラミング入門連載記事を始めます

こんにちは、@akio0911です。 これからプログラミング未経

【RxSwift】BehaviorRelayとPublishRelayについてまとめてみた

こんにちは、@akio0911です。今回はRxSwiftのBe

【RxSwift】materialize, dematealizeを使ってみた

@toshi0383さんに教えていただいた、RxSwiftのm

【RxSwift】ストリームのcompletedをつぶす(消し去る)方法

RxSwiftで元々のストリームからcompletedをつぶす

→もっと見る

PAGE TOP ↑