iOS 11とSwift開発の学習を始めました

ようやく 1 つ作ってみたい iOS アプリを思いついたというか、本当に欲しいので本腰入れて勉強を始めました、iOS 11 & Swift。5 年前にも iOS 熱は一瞬あって、その時は iOS 6 だし Objective C だったわけで、Stanford の CS193P を英語の勉強ついでに全部見てそれで燃え尽きてしまったけど、今回はちゃんと完成させる(つもり)。

CS193p はやはり素晴らしい

普段はサーバサイドばっかりなので iOS 全く分からず、Xcode を起動したところで最初のウィザードで何を選んでいいのかというところで手が止まってしまうわけです。なので、やっぱり改めて最新の CS193p をずーっと見てます。電車の移動時間等で見れるのでコツコツ続けられます。

CS193p が何なのかというと、Stanford の Computer Science で毎年開講されていて、最新の iOS を使ったアプリ開発をゼロから教えてくれます。講師の Paul Hegarty は NeXT Computer で Steve Jobs と働いていた人で1、そんな人が最新の iOS の技術を語る course が無料でいつでも見られるなんて、本当に幸せな時代です。

course 自体は一般的な CS の学生向けに作られているので、iOS 開発はもちろん UI まわりの開発とかも全く経験がなくても問題ないです。ごく一般的な Object Oriented Programming の知識と Heap や Thread 等の計算機の基礎知識があれば前提条件はクリアです。

内容は、毎回レクチャーだけでなくライブのデモ(Xcode を使って実際にガリガリと開発してデバッグしていく)が多く用意されていて、そのデモの作りの良さに驚愕します。例えば、わざと crash するように実装しつつ動かして実際 crash したのちにそれを fix するとか、syntax sugar へ徐々に誘導したり、refactoring をしたり。しかもそれが複数回の lecture に渡って継承されていくので、とてもとっつきやすい。

実際の course では assignments(宿題)があって、時間があればそれもやりたいのですがちょっとそこまでは厳しいので、やってません。ただ、video を見ているだけでも input としては十分に感じます。まぁ、未だ Xcode 立ち上げてすらいないのでアレですが。。。

あと英語という意味では、Paul の英語は非常に clear で聴きやすく listening/speaking のどちらにもよい勉強になります。iTunes U で見てますが 1.25 倍速でも十分聴けます2。自信のない方は英語字幕もあるので、それもつけるとなお良さそうです(僕は邪魔なのでつけてないです)。

Swift 良い

2013 年にも CS193p を全部流して見てはいたのですが、その時は Objective C だったのが Swift に変化したのが一番大きな違いでした。そして、Swift はさすがに後発の言語だけあって洗練されていて、いろんな言語のいいとこどりをしてるなぁという感覚です。

型推論のある静的型付け言語なのはまぁ普通なんですが、Syntax sugar の豊富さや Optional chaining などの書いて楽しい感じが素敵です。特に、Computed property は他の言語でもほしいなぁと思った機能です。

はやく@objcNS...が全く出てこない世界になるといいですね!ちなみに、まだ Swift 一行も書いたことないですが。。。これからやります。。。

その他参照

CS193p で基本的な流れを学習しつつあるので、あとは必要に応じて情報を見れば十分かなと思ってます。Apple の document は当然ですが、以下の 2 つが最新の状況を実践的に教えてくれるので非常に参考になります。

ちなみにまだ Xcode 起動していないんですが、Core Data が気になってるのでそれを今調べてます。iOS 10 でNSPersistentContainerなんて便利なものが入ったよー3といった辺りは古い情報だけ見てたら気づけ無いので本当に助かります。

データ加工

ちなみに作ろうとしてるアプリは、決まったデータのいい感じの Viewer なので、それに必要なデータ加工のコードをずっと書いてました。そっちは iOS 関係ないので Python でゴリゴリと書いてて、その過程でpipenv最高じゃん、とかattrs欲しかったやつだ、とかの気づきもあったのですがそれは割愛。

まとめ

データ加工が大体目処が立ってきたので、ぼちぼち Xcode で Project を作ろうかなという段階です。MVC を意識しつつ、どの View/ViewController 使おうかなぁ〜、Core Data にデータ突っ込むのどうしよっかなぁ〜などを妄想ばかりして、ずっと Xcode 起動してなかったのでさっきやっと起動しましたよっと。

Footnotes

  1. 2011 の course では丁度 Steve が亡くなった時に Testmonial も述べていた様です。https://www.quora.com/Who-is-Paul-Hegarty-from-Stanford-CS193

  2. 余談ですが、1.25 倍速で見ているのを忘れてて、Paul のタイプ速度尋常じゃなく速いなぁ、やっぱりトップレベルのエンジニアはレベルがちげーなーと思ったことがありましたw

  3. https://useyourloaf.com/blog/easier-core-data-setup-with-persistent-containers/