HOME » Natsu note »  » [書評] 開発のプロが教えるSwift標準ガイドブック

[書評] 開発のプロが教えるSwift標準ガイドブック 2015/02/17/|

AppleによりSwiftが発表されてからもう半年以上が経ちました。Swiftの導入度合いはいかがでしょうか。私はというと、Objective-Cが身に染みこんでいる今の状況では、なかなか頭の切り替えができずに苦労しています。理解が進むと、「ああ、もうObjective-Cには戻れないかも」と思うのですが、はたまた少し複雑なことをしようとすると「Objective-Cならすぐに書けるのに・・」と気持ちも揺れています。

そんな、移行期間にある開発者を確実に手助けしてくれるであろう一冊が発売されています。献本いただきましたお礼を兼ねて書評を書きました。

Swift習得への最初の手がかり

タイトルにあるように、「開発のプロ」が経験を踏まえてSwiftという言語について教えてくれます。

新しい言語を覚えるためには手を動かしてみるのが一番早いです。ところが、全くのゼロスタートだと、どうやって手を動かしていいのかすら分かりません。数行のサンプルすら書けないこともあります。本書では、実践を踏まえて解説されているため、とりあえず触って感触をつかむことができます。

Playgroundと基本文法

Playground。名前は見たことがあるけれど、イマイチ使い方が分かっていないという方もいるのではないでしょうか。Playgroundを使うと、Swiftでのプログラミングを容易に試せます。ただし、あくまでもプログラミングの遊び場であって、アプリのようなプロダクトを作るためのものではありません。

他のSwift本と同様に、本書におけるPlaygroundの解説もほんの数ページです。しかし、その内容は濃く、REPL(Read-Eval-Print-Loop)の使い方も書かれています。REPLとは、Swiftを対話的に実行する仕組みです。そして、LLDBでブレークしている最中にもREPLは動作するため、デバッグ中にちょっとしたコードを試したいときなどに役立ちそうです。

実践的な内容の多い本書ですが、基本的な文法もきちんと解説されています。何らかのプログラミング言語の経験者であれば十分な解説と言えるでしょう。もし、プログラミング自体が初めてなのであれば、もう少し噛み砕いた説明が必要になるかもしれません。

Swiftの肝!オプショナル型の説明

個人的には、Swiftの肝はオプショナル型を正確に理解することだと思っています。この理解が浅いと正しいコードが書けなかったり、“なんとなく”動いているアプリになりかねません。そもそもSwiftでは曖昧な表現がほとんど許されておらず、少しでも間違った記述があればコンパイラがはじいてくれます。しかし、エラー箇所の問題点を理解した上で修正するのと、エラーがなくなるように試行錯誤するのとでは大きく違います。

オプショナル型は「!」と「?」というたった2つの記号を正しく使えるようになればいいのです。しかし、それがそう簡単なことではありません。逆にたった2つしかないため、試行錯誤でコンパイルエラーをなくすことは簡単です。でも、本当にそれで大丈夫でしょうか。

本書のオプショナル型の説明は丁寧です。実践を踏まえた説明になっているので理解しやすく、それでいて、重要な部分は繰り返し言葉でも説明されています。

中でも私が付箋を貼り、さらにマーキングもした2行をここで引用しておきます。

まずはP.185より、「!」についてです。

Optional型の変数に対して記号「!」を用いると、アンラップを意味します。変数ではなく型に対して「!」を付与すると、Implicitly Unwrapped Optional型を意味します。

「?」については、同様の説明がP.189にあります。

型に対して「?」を付与するとOptional型を意味します。Optional型もしくはImplicitly Unwrapped Optional型の変数に対して、「?」を付与するとOptional Chainingとなります。

たった2つの「!」と「?」ですが、型に付けるか変数に付けるかでその意味合いが変わってきます。この違いを明確にした上で挙げられたコード例が、理解を手助けしてくれます。なお、Implicitly Unwrapped Optional型とは、簡単に言えばアンラップせずに値にアクセスできる特別なオプショナル型です。

オプショナル型に関する詳細は、機会があれば別記事にてまとめようと思います。

実践へ向けて

Swiftの文法が理解できても、それを開発に活用できなくては意味がありません。まだまだ過渡期にあるSwiftですので、場合によってはObjective-Cとの共存も必要になってきます。また、フレームワークによっては、Objective-Cとは違った点に注意しなくてはなりません。

これらの問題を解決するためにも本書が役に立つことは間違いないでしょう。

Objective-Cとの共存と移行

Objective-CとSwiftとの共存は、積極的に行われることはあまりないかもしれません。でも、例えばSwiftで開発中の最新プロジェクトにて、過去の資産である手持ちのコードを利用したくなったり、依然としてObjective-Cで開発しているプロジェクトに、Swiftで書かれた最新のオープンソースライブラリを組み込みたくなることはあるかもしれません。

本書では、このような状況も踏まえて両者をプロジェクト内で共存するための方法も解説されています。もちろん、どのようなコードでも共存できるわけではありませんが、利用できないコードや利用時の注意点も説明されているため安心です。

また、節を改めて、AVFoundationとSocialフレームワークを利用したチュートリアルが掲載されています。解説では、SwiftとObjective-Cのコードが両方載せられており、Objective-Cに対してSwiftが優位となる点が説明されています。ひと通り手を動かしてみることで、Swiftを使うことの意味を理解できるでしょう。

フレームワークごとの解説

各フレームワークのSwift対応は順次進められていますが、細かい注意点が必要なフレームワークもあります。

例えば、FoundationフレームワークにおけるStringとNSStringの違いやその取り扱い方などが解説されています。コードを書いていく上で必ず遭遇する場面だと思いますので、理解は必須です。特に、脳みそがObjective-C色に染まっている開発者には嬉しい解説になっているのではないでしょうか。

続くUIKitの解説では、iOS 8で追加された機能を中心にObjective-Cと比較しながら説明されています。さらには、KVC・KVO、そしてCore Data利用時の注意点も挙げられています。

パターンの紹介

最後に、個人的には結構ツボだったのがパターンの紹介です。GoFデザインパターンのうち、次の8パターンの実装方法が紹介されています。

  • Factory Method
  • Prototype
  • Singleton
  • Adaptor
  • Composite
  • Decorator
  • Facade
  • Strategy

普段からパターンを意識して書いている(もしくは意識せずとも自然とそうなっている)開発者であれば、Swiftによる各パターンの書き方を見るがSwiftという言語を理解するための近道になるかもしれません。

まとめ

新しい言語を覚えるためのアプローチは人それぞれです。とりあえず見よう見まねでコーディングしてみる人もいれば、最初に文法を奥深くまで理解する人もいるでしょう。その開発者が置かれている環境と、性格、求められるアウトプットなどから自ずとやり方は決まってきます。

どんなやり方をとったとしても、本書から得るものは大きいのではないかと思います。すでに、Swiftでの開発が軌道に乗っている人でも、本書には実践面での様々なアドバイスが掲載されています。ぜひ一度、手に取ってみて損はないでしょう。

著書の紹介

こちらもあわせてどうぞ(Objective-Cです)。