ようやく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は他の言語でもほしいなぁと思った機能です。
はやく@objc
やNS...
が全く出てこない世界になるといいですね!ちなみに、まだ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起動してなかったのでさっきやっと起動しましたよっと。
- 2011のcourseでは丁度Steveが亡くなった時にTestmonialも述べていた様です。https://www.quora.com/Who-is-Paul-Hegarty-from-Stanford-CS193 [return]
- 余談ですが、1.25倍速で見ているのを忘れてて、Paulのタイプ速度尋常じゃなく速いなぁ、やっぱりトップレベルのエンジニアはレベルがちげーなーと思ったことがありましたw [return]
- https://useyourloaf.com/blog/easier-core-data-setup-with-persistent-containers/ [return]