このチャプターの目次
というわけで、話があちこちに飛んでしまいましたが、最後に全体のまとめです。
今日は主に、Swiftの3つのライブラリに加え、
そこで使われている Optics と Comonadic UI の話をしました。
これらを使うと、UIアーキテクチャを疎結合に分解して合成できる ほか、
アーキテクチャそのものについて深く考える ツールになり得るということがわかりました。
そして、これらの概念の根底にあるのが、やはり 関数型プログラミングと圏論 です。
普段のiOSアプリ開発で使うにはどう考えてもオーバーキルではありますが、
そもそも プログラミングとは何か、その本質情報にリーチするための
これ以上ない強力な武器になることは間違いないでしょう。
ぜひ今日の発表の中で、皆様にとって何か持ち帰ってもらえるものがあれば、幸いに思います。
最後になりますが、今日ご紹介したSwiftの各ライブラリの比較表と・・・
- 🌾 Harvest: Apple's Combine.framework + State Machine, inspired by Elm
- Composable Architecture
- bow-arch: Comonadic UIs
- Brandon Williams - Lenses in Swift
- Lenses and Prisms in Swift: a pragmatic approach | Fun iOS
ライブラリ+Opticsの参考文献になります。ぜひこれらの資料もチェックしてみてください。
- Declarative UIs are the Future — And the Future is Comonadic!
- The Future Is Comonadic! - Speaker Deck
- Comonads for user interfaces - Arthur Xavier
- A Real-World Application with a Comonadic User Interface
- The Comonad.Reader » Monads from Comonads
こちらは、Comonadic UI関連の参考文献です。
-
Reactive State Machine (Japanese) - Speaker Deck
- すべての沼の始まり
-
SwiftでElmを作る (Japanese) - Speaker Deck
- UIKit上で仮想Viewと差分更新を実装する話
-
Algebraic Data Type in Swift - Speaker Deck
- 型の掛け算 (struct) と 足し算 (enum) の話
-
Swiftで高カインド多相 - Speaker Deck
- Swift でモナド・コモナドを扱いたい人用
-
圏論とSwiftへの応用 / iOSDC Japan 2018 - Speaker Deck
- 米田の補題、随伴(カリー化)、モナド・コモナド
-
プログラマのためのモナド(圏論) - Speaker Deck
- 気分はモナディック
-
Making your own Code Formatter in Swift - Speaker Deck
- ソースコード AST を分析するために Optics を使う話
-
Swiftプログラミングと論理 〜そして帰ってきた圏論〜 / Swift and Logic, and Category Theory - Speaker Deck
- 論理とプログラミングの1:1対応、struct / enum の圏論的な見方など
-
圏論とプログラミング - Speaker Deck
- 「圏論とSwiftへの応用」強化版。Kan拡張、アプリカティブ(Day合成)、圏論的Opticsなど。
なお、今日の発表は、過去の私の登壇の 総集編 になっています。
伏線回収のリンクを貼っておきますので、もし「何も分からん」場合は、
上記リンクを時系列順に追っていくと、もう少し理解しやすくなるかもしれません。
というわけで、私からの発表は以上になります。
ご清聴、ありがとうございました。
[Appendix] Ask the Speaker コーナー
Q. 圏論はどこで勉強されましたか?
こちらのリンクにまとまっています。
お手元の圏論の本は、そっと閉じましょう。