会社の勉強会でSwiftの発表をした話

会社のiOSチーム勉強会で発表の順番が回ってきたのでSwiftの良さについて発表をしました。会社の人にすすめられたので、せっかくだし資料を公開します。が、公開前提に作っていないし準備も不足だったので、資料だけ見てもあまり伝わらないと思います(すみません)。次回はもっと改善したい。

主題としては、Optionalという概念をちょっと違った角度から見ると類似物がいろいろあるよ、という話(とその準備)です。今更Swift入門なんかやっても仕方がないのでちょっと進んだ話題を取り扱おうとしたのですが、だいぶ力不足だった感があります。

補足

まったく言及していませんが、要するにモナドの話をしています(chainと呼んでいるものが>>=に対応します)。60ページで

a.chain({ $0.b }).chain({ $0.c }).chain({ $0.i })
// と
a.chain({ $0.b.chain({ $0.c.chain({ $0.i }) }) })

が等価だ、と書いて説明を省いていますが、これがモナド則の結合律に対応しています。だからといってOptional Chainingを>>=にすり替えたのは、いささか強引でよくなかったかもしれませんが……

BFTaskというのはBolts Frameworkに含まれている非同期処理のライブラリで、JavaScriptで言うところのPromiseになっています。PromiseというだけならSwiftネイティヴの実装もいろいろあるのですが、この勉強会の前の回がたまたまこれを題材としていたので(87ページのがその時のスライド表紙でした)、それを使いました。ObjCのライブラリだとid型がAnyObjectになってしまってSwiftのIntStringがそのまま使えないので、やむなくNSNumberNSStringにしています。