【書評】中級者向けSwift解説書『開発のプロが教える Swift標準ガイドブック』

マイナビ様よりご献本いただきました。

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839953546/22301-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51SAqSbj3qL._SL160_.jpg" alt="開発のプロが教える Swift標準ガイドブック" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839953546/22301-22/ref=nosim/" name="amazletlink" target="_blank">開発のプロが教える Swift標準ガイドブック</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 15.04.12</div></div><div class="amazlet-detail">渡辺 龍司 富家 将己 鈴木 晃 加藤 寛人 <br />マイナビ (2014-12-25)<br />売り上げランキング: 96,644<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839953546/22301-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>


Kindle版も出ています。[達人出版会さんでpdf版も販売](http://tatsu-zine.com/books/kaihatsunopro-swift-hyojun-guidebook)されています。


##数あるSwift解説書の中での立ち位置

出版社の説明によると

> Swiftで効率良くコードを記述するための、本格派解説書。アプリケーションを作成するための説明を必要最低限にとどめ、Swiftを深く理解してもらうことに注力ししています。

とあり、明言されてはいないものの、自分の解釈では本書は**iOSアプリ開発をある程度やっている中級者以上向けのSwift解説書**です。（とはいえXcodeのインストールから解説されているので、入門者にも配慮されています）

「Swiftではじめる○○」という「言語としてはSwiftを使用する、iOSアプリ開発の入門書」は多いものの、中級者以上向けの解説書というのは実はあまりありません。そもそも技術書というもの自体大きく部数が出るものではない中にあって、入門者と比較して中上級者というのはさらに数が減るものなので、こういう**入門書ではない技術書、というのはなかなか貴重**で、今後もあまり多くは出ないと思います。

またSwiftの詳細な解説書、という点では、「詳解 Objective-C 2.0」で定評のある著者（荻原 剛志 氏）が書かれた「詳解 Swift」がありますが、

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797380497/22301-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41-FrdK0A2L._SL160_.jpg" alt="詳解 Swift" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797380497/22301-22/ref=nosim/" name="amazletlink" target="_blank">詳解 Swift</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 15.04.12</div></div><div class="amazlet-detail">荻原 剛志 <br />SBクリエイティブ <br />売り上げランキング: 25,977<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797380497/22301-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

こちらと本書との違いは、「詳解 Swift」は言語の解説にフォーカスしており、そして本書「Swift標準ガイドブック」は言語の解説をベースとしつつも**iOSアプリ開発における実践的な内容もカバー**している、という点かと思います。

具体的には、下記の Chapter 8 の小見出しレベルの目次を見ていただくとわかりますが、**テストやライブラリ、デザインパターン**についても解説されています。

- 8-1　テスト
  - 8-1-1　Swiftでの単体テスト
  - 8-1-2　XCTest
  - 8-1-3　Quick

- 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

またパラパラめくるとわかりますが、これ以外の各章の解説でも、実際のiOSアプリのコードがたくさん載っていて、この本書の「実践的」という特徴を大きく象徴していると思います。


##他のプログラミング言語をブリッジして利用する方法

またおもしろいのが「8-2　ブリッジによる拡張」です。タイトルだけみると「あー bridging header の話ね」と思ってしまいますが、それは7章で詳解されていて、ここはそうではありません。

> Objective-C同様、**他のプログラミング言語もブリッジして利用**することは可能でしょうか

と冒頭に書かれている通り、**mruby を題材として、他のプログラミング言語を Swift で使うための方法**が解説されています。

- 8-2　ブリッジによる拡張
  - 8-2-1　ブリッジする言語の選定基準
  - 8-2-2　スタティックライブラリの準備
  - 8-2-3　プロジェクト作成
  - 8-2-4　言語へのアクセス方法を探る
  - 8-2-5　ブリッジコード
  - 8-2-6　Swiftからのアクセス

こういうハッキーな手法について知ることはそもそものSwiftという言語の成り立ちを理解する助けにもなるので、mrubyや他の言語をブリッジしてSwiftから利用することに興味があってもなくても、大変貴重な節だと思います。


##コラム

章の間に挟まっているコラムに興味深いものがいろいろとあります。

たとえば

- 「**Swiftのメソッド呼び出し速度**」
- 「**コマンドラインでの自作モジュールの作成と利用**」
- 「**低レベル配列処理で速度を稼ぐ**」
- 「**デバッグ出力に便利な特殊リテラル**」

などなど。

他にも下記のような興味深いコラムが載っています。

- 不変性の仕組みと考え方
- LiteralConvertibleとは
- 最適化オプション
- 型の型
- 構造体の中のクラス
- 継承したクラスにおけるメソッド使用上の注意
- 空のコレクション定義
- nilはどんな値よりも小さいと判断される
- NSMutableArrayによる配列操作
- 入れ子のOptional型とUIApplicationDelegate


##その他参考情報

他書との違いを明確にするためちょっと変化球な箇所の紹介に偏ってしまいましたが、もちろん Swift という言語の解説書として大変充実しています。Amazonにはない、**小見出しレベルまで記載した詳細な目次**が、版元のマイナビさんのページにあるので、購入を検討する際のご参考にどうぞ。

- [開発のプロが教える Swift標準ガイドブック | マイナビブックス](https://book.mynavi.jp/ec/products/detail/id=33563)

また、「UIKit徹底解説」の著者 Natsu さんによる紹介記事も参考になります。

- [[書評] 開発のプロが教えるSwift標準ガイドブック | Natsu note](http://natsuapps.com/note/2015/02/swift-guide-book.html)


##というわけで

そろそろSwiftをガッツリやろうと思っているiOSアプリ開発者の方は是非！

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839953546/22301-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51SAqSbj3qL._SL160_.jpg" alt="開発のプロが教える Swift標準ガイドブック" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839953546/22301-22/ref=nosim/" name="amazletlink" target="_blank">開発のプロが教える Swift標準ガイドブック</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 15.04.12</div></div><div class="amazlet-detail">渡辺 龍司 富家 将己 鈴木 晃 加藤 寛人 <br />マイナビ (2014-12-25)<br />売り上げランキング: 96,644<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839953546/22301-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>