【 大阪オフィス開設1周年勉強会 】第3回 Swiftのアツさを語る! 〜AKIBA.swift in Osaka〜 2017/4/28 #cm_osaka

http://dev.classmethod.jp/news/mobileteam-inosaka-vol-3/ 勉強会での発言をまとめました!
0
にわタコ @niwatako

MVCでは、ViewControllerの責務過多がよく言われます。 MVPについてお話するためにMVCのお話をしましょう #cm_osaka pic.twitter.com/7tMWt1HBvs

2017-04-28 19:44:22
拡大
拡大
にわタコ @niwatako

こうなりがちではないでしょうか #cm_osaka pic.twitter.com/zVB6tkBLk9

2017-04-28 19:44:30
拡大
にわタコ @niwatako

View管理をしたり、描画のためのデータソースを持ったり、描画ロジックを持ったり… これは責務過多です。ViewControllerに役割が集中し、1000行を超えていきます。 このパターンを緩和するために、MVPにおけるプレゼンターが入るとどうなるでしょう。 #cm_osaka pic.twitter.com/J6q43J4gqH

2017-04-28 19:45:53
拡大
拡大
拡大
にわタコ @niwatako

描画とドメイン層の間を取り持つ架け橋の役割を担います。 プレゼンターが間に挟まることでViewControllerとビジネスロジックの間に役割を分けるプレゼンターがあります。 #cm_osaka pic.twitter.com/aaDYcl7KAc

2017-04-28 19:46:38
拡大
にわタコ @niwatako

プレゼンターがあることで、画面遷移、View操作、管理、ビジネスロジックとの架け橋になる部分を担って、ViewControllerは必要なものをプレゼンターに求めるようになる。 #cm_osaka pic.twitter.com/JZ3H9ZZmAO

2017-04-28 19:48:26
拡大
拡大
にわタコ @niwatako

プレゼンターにインターフェースを介してVCを渡せばプレゼンターの支持を受けて処理が走る #cm_osaka pic.twitter.com/9logBs7dXJ

2017-04-28 19:48:33
拡大
にわタコ @niwatako

ViewController が実体。 プレゼンターは指示するだけ。 描画処理はリーダブルになる。 ViewControllerに書くと、通信結果を受けてこのビューにはこのプロパティを設定しこっちのViewには…という処理が積み重なってFatになっていく。 #cm_osaka pic.twitter.com/Bx9SDlP2d5

2017-04-28 19:50:11
拡大
にわタコ @niwatako

実際の実装はViewControllerに於いてプレゼンターが指示するだけにすることでスッキリする #cm_osaka

2017-04-28 19:50:15
にわタコ @niwatako

メソッドの書き方の問題ではないか、という指摘もあるかもしれないが、責務が別れてわかりやすくなった、という点が重要だと思います。 責務わけを行うことでやることが明確になってリーダブルになる。費用対効果が大きい。 #cm_osaka pic.twitter.com/hMvaraG76B

2017-04-28 19:51:26
拡大
にわタコ @niwatako

プレゼンターは低コストで導入できるのでオススメ。 描画処理の見通しが格段に上がり、責務が別れるのでビジネスロジックにより注力できるように。 是非明日からMVPを #cm_osaka pic.twitter.com/2r00y75tir

2017-04-28 19:52:08
拡大
にわタコ @niwatako

ソフトウェア設計はコンポーネントの明確な役割の共通認識を開発者間で持つための一手段である #cm_osaka pic.twitter.com/UagqxGBPjO

2017-04-28 19:53:12
拡大
拡大
拡大
にわタコ @niwatako

ではプレゼンターの役割は何でしょう 言葉で表すとエンジニアごとに認識が違ったりします。意図は同じだが違うものに見えるとか。 言葉は同じでも役割の実体が異なったり。 そういうことはよくある。 #cm_osaka pic.twitter.com/l7m2PmxX5x

2017-04-28 19:53:56
拡大
にわタコ @niwatako

それを回避するのに効果的なのは、僕達は、コードを書くことができる。役割が果たす前後を一緒に書いてみてみてみることができる。 こういう場合はどちらが受け持つのだろう、という話をしたりできる。 ぜひ、コードで語って欲しい こういう話が好きな人、ぜひ懇親会で! #cm_osaka

2017-04-28 19:55:15
🥞 @jpmartha_jp

「クラスメソッドに入ると会社のお金でカンファレンスが楽しい💰」 #cm_osaka

2017-04-28 19:55:53
にわタコ @niwatako

・クラスメソッドに入るとカンファレンスに会社の金で行ける MVAを探すには話し合い・その元ネタが大事 ・MVPはいいぞ コードで語り合うことが大事。設計書や仕様書だけじゃなくて! #cm_osaka pic.twitter.com/RkBUTmdjGD

2017-04-28 19:56:27
拡大
にわタコ @niwatako

try! swiftで話されていた方だが、後のiOS Meetupでこの人と話をした。 多くはMVPやMVVMで良いのではないか。 複雑ならVIPERやクリーンアーキテクチャなどを使えば良いのではないか。 #cm_osaka pic.twitter.com/0Fqd672t24

2017-04-28 19:57:39
拡大
拡大
Daiki Matsudate @d_date

.@niwatako さんが息をはくようにリアルタイムツイートしているので、TOKYOからでも 📦が何を話しているのかわかる #cm_osaka

2017-04-28 19:58:29
にわタコ @niwatako

MVPもMVVMもやりたいことは同じ。ビジネスロジックを明確に分けたい、ViewControllerの責務過多を解消したい。 #cm_osaka

2017-04-28 19:58:41
にわタコ @niwatako

ViewModelというのがまだエンジニアに馴染みがないのでは Presenterは実際には表示ではなく表示の準備をしているので命名がしっくりこない #cm_osaka

2017-04-28 19:58:44
にわタコ @niwatako

設計はプラットフォームにかかわらず話せる。そしてそれだけ重要。 そういうところが楽しい #cm_osaka

2017-04-28 19:59:09
にわタコ @niwatako

AKIBA.swift、ぜひ着てください、来るだけじゃなくて登壇してください! そしたら1周年Tシャツ差し上げます!! #cm_osaka

2017-04-28 20:01:13
にわタコ @niwatako

今なら言える、クラスメソッドとSwiftの歴史〜開発現場の光と闇〜 @kongmingtrap さんから 今はバックエンドやってます。 #cm_osaka pic.twitter.com/3AEpaT7774

2017-04-28 20:03:57
拡大
にわタコ @niwatako

岡山出身です いろいろなところを転々としてまいりました #cm_osaka pic.twitter.com/495IAE2XXG

2017-04-28 20:04:46
拡大
拡大