iOSアプリ開発のためのFunctional Architecture情報共有会2のまとめ

2020/11/25にiOSアプリ開発のためのFunctional Architecture情報共有会2を開催しました!その発表のまとめを書いておきます。

情報共有会について

そもそもFunctional Architectureとは?

Functional Architectureとは何かみたいなものを一応解説しておくと、その答えはどこにもありません。しかし発端としては@inamiy(稲見さん)の『SwiftUI時代の Functional iOS Architecture』という発表により紹介された各種フレームワークや、関数型プログラミングの考えを取り入れたiOSアプリ開発についての情報を共有するという会です。

第1回目の開催まとめについては別記事を参照してください。

発表まとめ

当日の発表についてまとめます。私は2つの発表を行いました。

TCAでViewStoreにKeyPath DynamicMemberLookupが使われてる件

『TCAでViewStoreにKeyPath DynamicMemberLookupが使われてる件』@yimajo

もうね、時代はSwift5.1からのKeyPath MemberLookupですよ。これ使ってたら勝ちでしょうよ。という気分だったんですが、The Composable Architectureで本当にKeyPah MemberrLookupを使うことに意味あるのかな?というのが発端です。

結論からするとインタフェースの対称性としては意味ありそうと思っています。

Swiftのstruct・enumと代数学_part1

『Swiftのstruct・enumと代数学_part1』@kalupas0930さん

point-freeの #4, #9, #19 の記事の解説と解釈について。

基礎知識として、たとえばSwiftのフラットなenumが実現するパターン数はそのcaseの足し算ということは公式のドキュメントでも知られている話だとは思うのですが、この資料ではVoidが1、Neverが0に相当するというところに言及されています。本題としては代数学によって無駄のないパターンを数学的に発見できるというものでした。

感想

上記資料URLSessionの結果のように直感的に違和感がある物事に対して数学的なアプローチでその理由を解説できるということが、Swiftの良い点だよねーという感じでしょうか。point-freeはアカデミックに話を展開していくんですがステップバイステップで具体と抽象をうまく使って物事を説明してくれるのですごいですね。

この資料自体は本来CathPathを知りたくてその基礎のさらに基礎からという段階なので、こっからまだまだCathPathへの道のりが遠いというのが面白いところでしょう。

さらにHaskellの場合の余談なんてとても良い感じです。

TCAでのClient/Managerの利用パターンでは副作用のActionやErrorを分離できる

『TCAでのClient/Managerの利用パターンでは副作用のActionやErrorを分離できる』@yimajo

TCAのサンプルコードではClient/Managerという副作用実行をまとめている型があるんですが、そいつらがActionとErrorを独自に用意し、Reducerにさらにそれを反映できてるんですな。もう大体言いたいことはそれで全部なんですが、Client/Managerをどういうふうに用意すればいいのか、ということについてまとめています。ちなみにviewStoreだけがActionを実行できると思いこんでいていてはダメで、ActionからActionを呼び出せるのと同じように、Actionから実行されたClientはEffect.runでActionを呼び出せるわけです。つまり、Core Dataなんかがデータ更新された際に自動でActionを呼び出せたりする、そういうことを書いてます。

全体的な感想

  • 参加者数は私を含めて2人!!それでも勉強会/情報共有会はできる!!!
  • 発表ドリブンで調べられたのがモチベーション的に良かった

基本的には私は発表ドリブンで調べ物するのが得意ではないのでいつも知ってることしか発表しないんですが、自分で開催する情報共有回のために調べ物をしてまとめるという体験は結構良いです。こういう狭いテーマの勉強会/情報共有会の場でないと、狭い話がしづらいというのを考えていて、そういう意味ではFunctional Architecture情報共有会というのは定義の曖昧さがいい感じじゃないかと勝手に思っております。

次の開催は?

できれば2020年12月開催ですが無理そうなら2021年1月開催を目処としています。