Chapter 01無料公開

はじめに:iOSDC Japan 2016 の振り返り

Yasuhiro Inami
Yasuhiro Inami
2020.09.22に更新

皆さん、こんにちは。稲見泰宏 (@inamiy) と申します。
今回はオンラインでの iOSDC Japan 2020 開催ということで、昨今のコロナ禍で皆様と直接お会いできないを大変残念に思いますが、今年もなんとか良い発表が出来たらと思います。
どうぞよろしくおねがいします。

さて、今年のテーマはこちらの 「SwiftUI 時代の Functional iOS Architecture」 というものになりますが・・・


実は今日の話は、4年前の iOSDC Japan で私が登壇した話の続きになります。
皆さん、当時の内容を覚えていますか?
え、全く記憶にない?
まぁきっとそんなことだろうと思いましたので、ここで簡単に振り返ってみたいと思います。


4年前の iOSDC では、そう、Pokemon Go についてお話ししました。


・・・というのは冗談で、4年前は、当時流行していたWebの世界における React と Redux 、そして Elm Architecture について、Swiftで活用するお話をさせていただきました。


当時の発表スライドは、こちらのURLにアップしています。


その内容を簡単にまとめると、「これからのフロントエンドの時代は MVVM から Elm Architecture の世界に移る」 という話でした。
そしてこの発表では、iOS開発の定番である「関数型リアクティブプログラミング (FRP)」を副作用の計算として取り入れて、 Elm Architecture と FRP の両方の持ち味を活かした、ハイブリッドな設計をする というものでした。

ただこのアプローチは、残念ながらiOSの世界ではまだ React のような仮想Viewフレームワークが存在していない中での話だったのもあり、やや夢物語でもありました。


しかし、あれから4年の月日が経過して、iOSの世界でもようやく転機が訪れます。


そう、皆さんご存知のこの青いロゴですね。


SwiftUI です!
2019年の SwiftUI の登場によって、私たちはついに React と同等の宣言的なビューを構築することができるようになりました。
さらにAppleは、Combine という独自のリアクティブフレームワークも合わせて提供しました。
この年のWWDCは、サプライズの多い当たり年でしたね。


この発表を当時、自宅待機して聞いていた私はというと、テンションはこんな感じでした。
4年前の発表内容について、いよいよ本気を出す日がやってまいりました。


私はさっそく、WWDC開催中に SwiftUI と Combine を組み合わせた 「Harvest」 というライブラリを開発しました。
本日の発表でも軽くご紹介したいと思います。


今日のアジェンダはざっとこのような感じです。
Harvest 以外にも、最近Swiftコミュニティで注目を集めている Composable Architecture や、
個人的に注目している Bow-Arch というフレームワークについてお話しします。
また、これら3つの共通点や違い、さらに ReactElm などのWeb方面との比較について見ていきます。