【絶対に挫折しない iPhoneアプリ開発「超」入門 第8版】と 【Swift実践入門 ──直感的な文法と安全性を兼ね備えた言語】を読んで
こんにちは。最近有休消化で、暇かと思いきや忙しく過ごしています。Fです。(遊びすぎ)
じっくり勉強できるいい機会なので、Swift関係の勉強をしていました。
自分は今まで、C++やjavascript/typescript/objective-cはそこそこ書いてきましたが、Swiftは書いたことがなく、これから使いそうなので、SwiftUI/Swiftの文法関係について勉強すべく、以下の2冊を読みました。
Swift実践入門 ──直感的な文法と安全性を兼ね備えた言語(https://gihyo.jp/book/2020/978-4-297-11213-4)
今回はこの2冊を読んでみての感想と、勉強になった点についてです。
絶対に挫折しない iPhoneアプリ開発「超」入門 第8版 【Xcode 11 & iOS 13】 完全対応
内容
最近(と言っても数年は経ちますが)リリースされたSwiftUIを用いたアプリ開発について、色々なアプリを実際に作りながら学ぶ本です。
アプリの作り方やXCodeの使い方はもちろん、XCodeのダウンロードやアカウントの整備、AppStoreでの公開の流れまで説明されているので、初学者にはかなり良い内容だと思います。
感想
UIの作り方がよくわかる
パーツの配置から、ボタンが押された時の挙動まで、手を動かしながらしっかりと学ぶことができます。
色々なタイプのUIを作ったり、(割と何度も)ボタンの表示を変更したりするので、体で覚えられると思います。
全て図付きで親切
完全な初学者向けに書かれているので、内容が非常に丁寧です。基本的に全て図が付いているので、操作で迷うことはほぼないと思います。
ローカライズなど、発展のためのヒントがある
単純なUIの作り方だけでなく、アイコンの登録/ローカライズの方法など、アプリとして形にするところまでしっかり解説されています。
また、ストアへの登録方法や勉強のためのサイトなど、今後のケアまでしてくれています。
ちょっと古い
2021年にXcode13が出ましたが、本の改訂版が(2021/11/18時点で)まだ発売されていないので、内容が少し古くなっています。
特に、Xcode13では、プロジェクト作成時にSwiftUIを選択すると、本の通りになりません。
参考:
https://qiita.com/omochimetaru/items/31df103ef98a9d84ae6b
具体的には、過去のXcodeでは、SwiftUIを選択してもライフサイクルを「AppDelegate」にすることができました。が、Xcode13では、強制的にSwiftUI Appになります。
他の言語でも、プログラミング経験者であれば読み替えたり調べたりで対応できそうですが、真の初学者にはちょっと辛いかもしれません。
Swiftの言語特性にはあまり触れていない
当たり前と言えば当たり前ですが、あくまで「アプリの作り方」に重きをおいた本なので、Swiftの言語自体の解説はあまりないです。(必要最低限はありますが)
と言うことで、私はSwiftも理解すべくもう一冊読んだと言うわけですね。
まとめ
初学者向け、UIメインと言う内容で、記載も充実しているので、非常に勉強になる本だと思いました。オススメです。
ただ、ちょっと古いのでそこは注意です。(体感的には、2バージョン古いのはちょっと厳しいか・・・?)
自分はobjective-cでのiOSアプリ開発経験があったので、XCodeの準備などはさらっと流しましたが、なんらかの言語経験者であれば1日集中すれば大体理解できると思います。
Swift実践入門 ──直感的な文法と安全性を兼ね備えた言語
内容
Swiftという言語の文法や、言語自体の意図、設計指針などについての本です。
こちらは、iOSアプリ作成はせず、ターミナルで動かすバイナリを作るのみです。(XCodeに触れないレベル)
ぶっちゃけ、swiftはiOSアプリ作成のための言語やろ程度に思っていたので、バイナリ作れるんだねってビビりました(よく考えればそりゃ作れますが)
勉強になった点など
こちらは内容が重いので、勉強になった点を込みで小分けに書いていきます。
基本はC++の流れを組みつつ、記述ははtypescriptぽい
まあ、当たり前に言語の基本文法が説明されています。
基本的なオブジェクト指向の概念(クラス、継承など)は残しつつ、”;”がいらないとか、for分の書式はtypescriptに似ているのかなーというのが第一印象でした。
新目の言語だなって感じです。
安全性重視
本のタイトルにもありますが、swiftは安全性を重視した言語です。この指針の説明がかなり大事なポイントだと思いました。
安全性とは何か、ですが、バグを産みそうなコードはコンパイル通らないようにする、という制限で、危ないコードを産まない、というのがswiftにおけるそれだと思いました。
代表的なのがOptionalを用いたnilの許容で、ありがちなnilアクセスを発生しづらく、また、発生しても特定が容易になるようにされています。
また、シンプルなところでは、swiftは型推論可能ですが、推論できないとコンパイルエラーになります。(このあたりjavascriptは緩い。代わりに実行時エラーになってしんどい)
これらのようにコンパイル時点で、可能な限りバグの目を潰すことで、健全なコードを作らせようとしています。
(本にも書いてありましたが、)慣れるまでコンパイルエラーにたびたびなってしんどい気持ちになりそうですが、その分コンパイラが安全性を担保してくれているので、特性を理解して慣れていきたいと思います。
protocolとジェネリクスによる抽象化
これは、今までのオブジェクト指向言語にはあまりなかった気がするのですが(知らないだけ?)抽象化/汎用化のための手法です。
protocolは継承にも似つつ、新たな選択肢でしょうか。
設計指針や、採用すべき手法
上に色々な手法を書きましたが、書いていないものも含め、実際にはさまざまなプログラムの記述方法があります。
そこで、Swiftの言語意図として、どのような時にどの手法を採用すべきか、などの指針が解説されています。
ここは頭に叩き込むというより、実際にコードを書いたり、人のを読んだりするときに、この本を改めて参照したいところだと思いました。
イベント通知、非同期処理、テスト
このあたりは、大きめのプログラムを作成していくときに必要になってくるものですね。
Swiftという言語で実装するにあたって、の推奨方法などが載っていて、他の言語でやったことあるよ、という人にも役立つところだと思います。
特に、テストにおいて、Protocolを利用して色々・・・というところは驚きのやり方でした。
まとめ
Swiftの言語特性から、どのような形で実装していくべきかなどが丁寧に説明されていて非常にいい本でした。
ある程度プログラムは書いたことがありつつ、Swiftにおいて上質なコードを書いていきたい、という人向けでしょうか。
コードを書きながら、定期的に見返したい本です。
総括
今回の2冊で、「UI部分」「ロジック部分」の2つが学べたので、あとはそれを結合してみていく、というところをやっていけば、結構いいものが作れるようになるのではないか、そう思わせてくれる2冊でした。
あとは調べても本が見つからなかったけど、XCodeの活用方法が知りたい今日この頃。(なので公式みたりしているところ。)
ではまた。
最新記事 by FDrumer (全て見る)
- Final Cut Proのプロジェクト容量を小さくして、データ保存しやすくしよう - 2023-04-19
- THR10-II買いました - 2023-03-06
- VOX VALVENERGY 買いました - 2023-02-21