早起きに成功したので「iOSアプリ設計パターン入門」勉強会 第3回に参加してきました! #uzumaki_swift

おばんです、pixiv TECH SALONでは男性のための女の子声について喋る田中です。

UZUMAKIさんが開催している「iOSアプリ設計パターン入門」勉強会に参加してきたのでそのレポートをします!

uzumaki-swift.connpass.com

iOSアプリ設計パターン入門」勉強会 by UZUMAKI とは

朝読書会です。始業開始前くらいの時間、8時開始で行われています。

この会は読書会形式で行われており、『iOSアプリ設計パターン入門』の各章を読み合わせる進行です。 詠み合わせて、気になるところで質問したり議論する会となっています。

f:id:ktanaka117:20190217175804j:plain

第3回のテーマは「第7章 MVVM」

この章は私が書きました。\ドヤアァァァ/

著者がいると盛り上がるかな、と思い参加した節もあります! 前回はMVPの章でここも私が書いたのですが、お布団くんが話してくれなくて参加に失敗していました。 MVVMの回では満を持して参加できました。

RxSwiftを用いないMVVM実装

書籍の中ではRxSwiftを用いないMVVMの実装方法(Notification Centerでの実装)についても触れています。 あえてその部分を書いた理由は以下の二つがあります。

標準フレームワークでガチめな実装をするとこんな風になるよというのは、共著者のmarty-suzukiさんが以下のQiitaでまとめてくださってます。

qiita.com

責務の境界について

  1. Modelのロジック(ドメインロジック)とViewModelのロジック(プレゼンテーションロジック)のきりわけはどこで行われる?

これ結構難しいんですが、勉強会の中では 表示のためのStringと計算のためのDouble などの話がされていました。

僕の解釈としては以下のツイートに貼ってあるスライドの通りです。

クソタイポ問題

紙版の説明の中に nvalidate(idText:passwordText:) という表記がありますが、 n が不要です。大変失礼いたしました。

電子版では直ってます、許してください。

Rxを使ったときにUITableViewCellのデータバインディングどうする問題

僕もこれは得意な話ではないのですが、 cellForRowAtIndexPath の中でsubscribeすると購読管理に無理があるので、delegateと併用してやってますよという話が挙がりました。

Resultの.success(())ってなんで通るの?

型としての()がVoidのtypealiasで、

()が空のtupleと同義。空のtupleはつまりVoidだから良いっぽい?

参加してみての感想

実際に読んでくれた人と交流できるのは、著者としてとても良い経験でした。 「あー、その部分の解釈は悩みますよねー」とか、読んでる時のリズムの悪さみたいなのが勉強になりました。今後の本書きの参考にさせていただきます。

さっきエモいことを呟いたんですけど、この本を読んで得たものをまたアウトプットして欲しいですし、議論の叩きにしてもらえたら嬉しいです。質問もお気軽に!

今後も「会いに行ける著者」なので、イベントでは気軽に声かけてください〜。ノシ