[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語
はじめに
本書は,Swiftの言語仕様と実践的な利用方法を解説した入門書です。ほかの言語の経験はあるがSwiftの経験はない方や,Swiftの知識をより深めたい方を対象としています。
Swiftは,iOS,macOS向けアプリケーションの開発言語として2014年に登場しました。現在では,以前の開発言語であるObjective-Cからの移行は着実に進んでおり,これからiOS,macOS向けアプリケーションを開発するのであれば,開発言語にはSwiftを選択するべきです。また,2015年12月のオープンソース化と同時にLinuxのサポートを開始し,今後はより広い範囲での利用が予想されます。
Swiftの最大の特徴は安全性です。バグを招きやすいあいまいな記述は許されず,多くのプログラムの誤りは実行前に検出されます。安全性に次ぐ特徴は,高い表現力です。モダンな言語が持つ先進的な機能を取り入れながらも,それらを直感的に利用できるようにデザインされています。
Swiftは簡潔な言語ですが,その言語仕様を理解し,正しく使うことはけっして容易ではありません。Appleの公式ドキュメントをはじめとして,どんな(what)言語仕様があり,それらをどのように(howt)使うかに関しては豊富な情報源があります。しかし,それらがなぜ(whyt)存在し,いつ(whent)使うべきかについてまとまった情報があるとは言えません。本書は,読者のみなさんの「なぜ」や「いつ」を解消することにも主眼を置いています。
本書では,はじめにSwiftの標準的な機能を一通り解説し,続いて型の設計指針や非同期処理,エラー処理などの実装パターンを説明します。最後に,実践的なSwiftアプリケーションの開発を通じて,それまでに説明した機能と実装パターンの具体的な活用方法を示します。
本書が対象とするバージョンはSwift 4です。また,説明に使用する開発環境はXcode 9です。執筆時点での両者の最新バージョンはSwift 4.0.3とXcode 9.2です。
2017年12月
石川 洋資
西山 勇世
謝辞
本書の執筆にあたり,多くの方に助けていただきました。
レビューに参加していただいた岸川克己さん,池田翔さん,三木康暉さんには,本書全体に渡って技術的ミスや不明瞭な箇所をご指摘いただきました。レビュアーのみなさんのおかげで,混乱しやすい箇所を最小限にとどめることができたと思います。本当にありがとうございました。
また,編集者の稲尾尚徳さんには,執筆の機会をくださったこと,思うように筆が進まない著者2人を根気強くリードしてくださったことに感謝しています。稲尾さんがいなければ,本書を書き上げることはできなかったと思います。
すばらしい言語を開発したSwiftの開発チーム,そして言語の特性を活かすプラクティスを磨き上げてきたSwiftコミュニティのみなさんに感謝します。本書を通じて,少しでもコミュニティに還元できれば幸いです。
石川 洋資
クックパッド株式会社のすばらしいメンバーに感謝します。日々のディスカッションから多くの着想を得ることができました。
また,妻の真理子のサポートがなければ,本書を完遂することはできませんでした。いつも,本当にありがとう。娘の友理佳にも感謝します。その成長を楽しみにする気持ちが,執筆の糧になりました。
西山 勇世
改訂新版での更新点
本書の初版は2016年にリリースされたSwift3に対応していましたが,改訂新版では2017年にリリースされたSwift 4に対応しました。
Swiftの過去のメジャーバージョンアップでは,非常に大きな変更が行われてきました。2015年にリリースされたSwift 2では,プロトコルエクステンションが登場し,プロトコルがSwiftユーザーの間で幅広く使われるようになりました。また,do
-catch
文によるエラー処理や,defer
文による遅延処理などの新たな記述方法が導入されました。Swift 3では,新たな命名規則が登場し,既存のSwiftのコードはすべて,新しいスタイルに修正する必要がありました。
これらのメジャーバージョンと比べると,Swift 4の変更はやや地味なものと言えるでしょう。しかし,変更は文字列や範囲などの基礎的な箇所から,エンコード,デコードなどの応用的な箇所にまでおよび,確実にプログラミングを前進させています。また,Objective-Cとの連携の改善も引き続き行われています。
基本的な言語仕様の変更は,本書の第1章から第9章までの説明に反映されています。また,Objective-Cとの連携の仕様変更は第15章の説明に反映されています。エンコードとデコードの新しいしくみはプロトコルを説明する第7章で簡単に紹介し,第14章でその実践的な使用方法を例示します。このしくみは既存のコードを大幅にシンプルにするもので,第14章に登場するサンプルコードを初版と比べ4ページ分も削減したほどです。