今年に入ってからSwiftの学習を始め、その後iOSアプリの開発にチャレンジしているのですが、その過程で使っている書籍などについて紹介します。
ほとんどメモがわりですが、追々書評や誤字脱字についてコメントを入れていきたいと思います。
Swift関連(言語中心)
詳解Swift第5版(読了)
Amazonの書評★★★★☆/個人的な書評★★★★★
かなり読み応えがあるものの、これを一冊読み通せば Swift という言語の理解は概ねできる一冊。2020年の正月から読み始め、サンプルを動かしながら動作を確認し、理解し(いまでも理解できてないことは多いけど)、読了したのが2月頭だったので、かなり時間をかけて読んだ一冊。
かなり細かいことも書いてある上に、それらの説明は必ず裏付けが伴っています。従って、アプリ開発を行なっている際記述や定義に迷ったときにはまずこの本を読み直しますし、読めば概ね解決できます。
言語の仕様を確認できるサンプルコードがかなり多数掲載してあり、かつそれらは全て Xcode の playgorund から実行できるようになっています。従って、ただ読み通すだけでなく、サンプルコードを動かし、動くコードを確認し、それから自分なりの改良を加え失敗を重ねながら言語を体得できるというのが良い点だと言えるでしょう。
また、サンプルプログラムについてもよく考えられているため、「なぜそのような記述が必要なのか」ということが理解できます。また「このように書いても失敗する」という点にも言及してあるため非常に参考になります。
ただし、全くの言語初級者に対して書かれた本ではないので、変数への代入とか、基本的な制御文とか理解していないと苦労するとおもいますし、説明についても初歩の段階からC言語の知識が少なからず必要なことについては理解しておく必要があると思います。
この本はあくまでも言語仕様について説明した本なので、実際のデザインパターン(Delegateモデルなど)に関する説明はあまりありません。従って、デザインパターンについては別の本を探して学習するのが良いとおもいます(探しているところ)。
[改訂新版]Swift実践入門(読了)
Amazonの書評★★★★☆/個人的な書評★★★★☆
まさに実践入門のための書籍。前述の「詳解 Swift 第5版」はプログラミング言語を研究する研究者が書いた本であり、その視点から書かれている部分も多い一方、こちらは実際にアプリを開発している第一線のプログラマによる実践的な本と言えると思います。
説明も例題もかなり抽象化してあり、理解するのはしばらく時間がかかりそうな感じがします。抽象的というのは「わかりにくい」ということではなく、オブジェクト指向的にどのようにコーディングすべきかとか、ジェネリクスとかをどのように設計に活かすべきかとか、そのような視点で書かれています。
総まとめとして、GitHubへAPIを使ってアクセスするコンソールプログラムを作るのですが、高度に抽象化されているため、プログラムの見通しやコード量は大変少なくなっているのですが、残念なことに自分の理解がまだ及んでいません。
しかし、抽象化を進めるとここまで完結に記述できるのだ、という目標ができる点では良い書籍だと思います。
また、前述の「詳解 Swift 第5版」ではあまり触れられていなかったデリゲート(delegate)パターンやオブザーバパターン、数多くの非同期処理についてページを割いて説明してある点は評価できます。
今改めて目次などを見直してみましたが、最初読んだ時よりも理解できるように思えます。なので、アプリ開発のサンプルプログラムなどいくつか理解し、どのような構造になっているのか理解すると、この書籍の記述ももっと理解できるのかもしれません。
アプリ開発基礎(初心者向け)
たった2日でマスターできるiPhoneアプリ開発集中講座(Xcode 11, Swift 5 対応)(読了)
iOS開発をやり始めるときに挫折しそうなのは、Swiftという言語の仕様もさることながら、Xcode を使ったソフトウェア開発の手順について覚えることが多い点にあると思います。コードを記述することはさほど難しくなくとも、Interface Builter を使った playground の作成は、分かったようなわからないような状態になることが多いように思えます。
そういう背景が分かっているのか、この書籍はとにかく Xcode の使い方を丁寧に、しかも徹底的に教えます。6本のサンプルプログラムを作成するのですが、その全て Interface Builder の使い方を詳しく、手順を追って解説してあります。
多くの書籍が、冒頭では詳しく記述してあるものの、途中からは「もう分かっているよね?」という感じで説明をはしょるのですが、この本はそういうことがありません。
ちなみに、この書籍は
たった2日とありますが、私の場合は事前にSwiftの基礎を抑えておきましたし、C言語であればプログラムはそれなりに書けたので、1日ちょっとで読み終わることができました。
本気ではじめる iPhone アプリ作り(読了)
Amazonの書評★★★★☆/個人的な書評★★★★☆
手元にある本は古く、Swift4時代の本。しかし、Swift5であっても慣れてくると書き換えはそれほど難しくはありません。最新版はXcode10対応となっていますが、おそらくSwift5対応だとおもいます(Xcode10はSwift4/Swift5の過渡期の製品のため)。
この書籍も前半は文法に関する基本的な内容から始まっていますが、全般的に一度他の言語でプログラムを組んだ人向けの説明となっています。
アプリの開発に関する説明も、初めてXcodeに触る人に向けた内容として書かれているもののやや省略が多く、読み進めるうちに混乱が起きる可能性は否定できません。
一方、練習問題として取り組む内容のレベルは適度にレベルが高く、TableViewを使ってセルにデータを表示させるだけでなく、データの追加・削除の方法について丁寧に記述されています。
また、画面遷移の方法についても、Segueを使った方法、StoryBoardにIDを振り、コード中からインスタンス化(instantinate)する方法まで掲載されており、初心者が画面遷移を使ったアプリを作る上で疑問に思う点が解説してある点は評価できると思います。
加えて、UserDefaultsにカスタムクラスを保存する方法やDispatchQueueを用いた非同期処理の方法、シングルトンによるクラスの一元管理など、応用が効く開発方法についても広く言及されています。
このように、初心者レベルよりレベルが高い内容ですし、中間部分までは訂正な説明が施してあるのは良いのですが、後半になると一気に説明が減るため、理解不足に陥る可能性も否定できません。
なので、タイトル通り、初心者を抜け「本気で」アプリを作りたいと思ったときに読むとちょうど良い本だと思います。
絶対に挫折しない iPhoneアプリ開発「超」入門 第8版 【Xcode 11 & iOS13】 完全対応
親切すぎる iPhone アプリ開発の本
SwiftUI
詳細!SwiftUI iPhoneアプリ開発入門ノート iOS 13 + Xcode11対応(読了)
SwiftUI 徹底入門
UIKit関連
Swift4プログラミング入門
Swiftポケットリファレンス改訂新版(2020年3月5日読了)
Amazonの書評★★★☆☆/個人的な書評★★★★☆
Swiftというよりも、UIKit など iOS 開発に必要な各種クラスについて解説してある書籍です。
購入したのは2年くらい前ですが、C言語だけで Swiftの知識もない状態で読んだのが失敗でした。Swiftについてきちんと押さえ、また初心者向けの書籍である程度アプリの作り方などを理解した後に読んだら、2日間ほどで通して読めました。
もっとも、この本はあくまでもリファレンスなので、巻頭から順番に読んでゆく本ではありません。しかし、書籍は体系づけて記述してあり、それなりに詳しく記述してありますから、頭から順番に読んでいっても難なく読めると思います。
もちろん、Apple にも公式ドキュメントがありそれらもかなり詳しく記述してありますが、日本語で記述してある上、きままに読めるという点では書籍には敵わないと思います。
繰り返しになりますが、初心者が理解するには多少難を伴うので、少なくともアプリ開発指南本を最低1冊読み通し、実際にアプリを作ってみてからこの本に目を通した方がいいと思います。
出版が2016年で、2018年に改訂してあるものの、Xcode 9とSwift 4をベースにして記述されて本のため、一部現行の Swift 5.2 にはそのまま適用できない部分も多少なりありますが、言語の基礎をおさえておけばその辺りは修正が効くと思います。