【朝活】「iOSアプリ設計パターン入門」勉強会 by UZUMAKI #2を開催しました
今週月曜1/21、【朝活】「iOSアプリ設計パターン入門」勉強会 by UZUMAKI #2を開催しました。
このイベントはPeaks社から発売されている「iOSアプリ設計パターン入門」をみんなで読み合わせる朝活です。
2回目の開催ですが朝8:00から開始にもかかわらずたくさんの方々に参加いただきました。
今回のファシリテーターは@tikidunponさん。
4章のMVCと5章のMVPを読み合わせました。
共著の一人@takasekさんも参加し、設計についての指針を話し合いました。
随時参加者からの質問や疑問を拾っていきます。
書籍に書かれた内容の理解や、実際のプロジェクトでどのように使われているかなどを話し合え、有意義な時間をすごせました。
資料
iOS_architecture_samplecode/02
内容
MVC -> ドメインロジックと表示を分離させた#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
View-> Compositeパターン
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
Controller->Strategyパターン
Model->Observerパターン#uzumaki_swift
dependent->smalltalkで使われていた#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
dependent->配列で依存関係を登録#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
Cocoa MVC -> ViewとModelを完全に分離。Controllerの再利用性は諦めた。作り直す#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
CocoaのMVC資料はこれhttps://t.co/00OIEhcO9B#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
ModelはNotificationCenterで通知を送信する。
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
でもあんまりNotificationCenter使っている現場みたことないな。#uzumaki_swift
原初MVCはViewがcontrollerを保持していた
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
そうなんだ!#uzumaki_swift
原初MVCってどの言語でどんなUIで実装されていたんだろう??
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
smalltalkかな?
smaltalkってどんなPCで動いてたっけ?#uzumaki_swift
https://t.co/S4R3g895qi#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
複雑なUIってiOSのwikiでも書いてる。
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
>マルチタッチパネル、加速度センサなどを生かした、従来にはない特徴的なユーザインターフェイスで注目を集めた。https://t.co/FH7RbZqOqJ#uzumaki_swift
昔はマウスのクリック or 液晶でもワンタップしかなかったはずで、それだけなら「入力」->「出力」は単純になりますね#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
続いてMVP#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
MVPのModelは6章ではでてこない。クリーンアーキテクチャの章で解説#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
InputとOutputのprotocolを定義する。注目#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
presenterの責務を分けるときの名前は「xxxxxxPresenter」でなくてもいい#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 21, 2019
cellにif文やswiftの判断がはいっていいかどうか問題->MVPやMVVMにしてもUIKitの作りから判断がViewに入りやすい。Viewのロジックが簡単(テストしなくてもいい)なら許容する。#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 21, 2019
Viewのロジックが「テストしたいほど複雑」なら分離する#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 21, 2019
Twitterでのやりとり
Viewにどのぐらい処理を入れるかどうか
UITableViewCellにif文が出てきたら設計間違っているかも#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
どういう事だろ🤔 https://t.co/fqpDlHLSWv
— かっくん (@fromkk) January 20, 2019
MVPなどビジネスロジックとView実装責務を分ける文脈でViewにビジネスロジックが入り込む例として上げました!#uzumaki_swift
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 21, 2019
セルの種類を振り分ける時なのか、一つのセルの中でコンテンツのセットをする時なのかが気になりました
— かっくん (@fromkk) January 21, 2019
その例ですと「セルの種類を振り分けるとき」が該当しやすいかも。
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 21, 2019
今日の朝活の議論でもあったのですがで「セルにif文入るのは悪い」といのは言い過ぎでした。UIKit使う以上多少は入ってしまうので「テストが必要なほど複雑なロジックを入れるべきではない」ぐらいに言い直します
それなら理解しました。ありがとうございます!
— かっくん (@fromkk) January 21, 2019
- Viewの処理は単純にする。
- しかしUIKitの仕組み上、どうしてもif文やswitch文が入ってしまう。
- どこまでが「複雑なのか?」の判断基準は「テストをしたくなるかどうか」。
- テストが必要なロジックがViewに入り込んだら切り分けるべき。
原始MVC
原初MVCってどの言語でどんなUIで実装されていたんだろう??
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 20, 2019
smalltalkかな?
smaltalkってどんなPCで動いてたっけ?#uzumaki_swift
MVCが最初に組み込まれたのはSmalltalk-80というGUI付きのOSモドキの言語処理系で、1980年代にXEROXのDマシンと呼ばれるAltoの後継機(ワークステーション)や、HPやTextronixの同じくワークステーション、DECのミニコン、AppleのLisa/Macで動いていて、こんなUIでした→https://t.co/HEJe7tUVuI
— sumim (@sumim) January 21, 2019
マウスクリック、マウスの選択範囲は出来てたのですね!勉強になります!
— SatoTakeshi【iOS 12 Programming発売中】 (@hatakenokakashi) January 21, 2019
Appleほど作り込んではいないですが、たかだか150程度のクラス(MVC以前のSmalltalk-76の場合)でこのGUIを処理系込みで実現していたのはすごいです。ジョブズがこれを見て手をばたばたさせながら『この会社はなんでこいつを発売してないんだ?何が起きてるんだ?わからん!』なんて叫んだのも頷けます
— sumim (@sumim) January 21, 2019
- 原初MVCが最初に組み込まれたのはSmalltalk-80というGUI付きのOSモドキの言語処理系
- 時代は1980年代
- Youtubeをみると「マウスクリック」「テキスト選択」のUIができていた模様
- 画期的な設計だったんだなと興味深い。
次回開催
すでに次回開催イベントを募集中です!
ご興味ある方はぜひこちらから参加よろしくおねがいします!
【朝活】「iOSアプリ設計パターン入門」勉強会 by UZUMAKI #3 - connpass