次の @dimsumthinking さんの過去のプレゼンテーション一覧 #tryswiftconf https://t.co/wTnp7jvS70
— Tsutsumi Shuichi (@shu223) March 2, 2016
Swiftでアプリケーションを書くということはObjective-Cで書かれたアプリケーションをただSwiftに書き換えるだけでなく、Swiftの特徴や哲学を受け入れる必要があります。この講演では、標準的なMVCで構成されたテーブルビューを使用したアプリケーションをSwiftに書き換えるところから始まり、よりSwiftらしいコードにするために、関数型プログラミング、オブジェクト指向プログラミング、デザインパターン、プロトコル指向プログラミングの考え方を適用していきます。
OOP(オブジェクト指向) , POP(プロトコル指向), FP(ファンクショナルプログラミング) を融合する
5枚の手札があってViewControllerに表示する、残念ながらVCはモデルを沢山見ている。
カードを移動したり出来る。
Swiftの気に入っている点はここでプロパティが有ること。VCはモデルについて把握している。+ボタンでActionが呼びだされてカードが増える。 モデルに追加してViewに追加する。ここまでは馴染みがあると思います。これを切り出すとシンプルになる。
セクションに何行あるのか、テーブルビューを埋める、ランク色スーツを表示する
削除は追加の逆でモデルから削除してViewからも削除
これも切り出せる
並び替えはViewは自動ですモデルだけ
モデルはクラスに
このあとstructに変えていくがオブジェクトでやっていく。
テーブルビューを埋めるために何枚有るか確認する必要がある。コンピューテッドプロパティで。
追加削除移動ができるように。
ここまでは馴染みがありますか?これで満足ですか?
ここから20分でどう展開できるかのお話をする。これが最善とは言わないが、こんなのは如何ということで。
Model Class ではなくValueTypeにします プロパティはMuteteされる必要があり Handはvar にならなければならない
Mutatingを削除していきます Mutatingの問題はMutating自体ではなくてRefarenceTypeだとAppleは言っている。
新しいHandのインスタンスを戻すようにする必要がある。Privateで
Handを追加変更するならViewControllerに戻る必要があり、ストアする必要がある
カードを動かすにしろ新しい値をアサインする。
Deleteも、あたらしいデッキインスタンスを作る
でもMoveは違う、ここが良い
これがファンクショナル・アプローチ
. でチェーンしていく。これはどこにも何もセーブすることはありません。
新しいHandに新しいカードをインサート出来るか聞く。
これでスマイルにならないならJavaなりRubyなりやればいいと思いますよ?
カスタムセルを作ります
UITableViewCellのサブクラス。
ここに書いているコードは実際にはコントローラコードです。
皆モデルを分かっている状態でよくなく見える?これから良くなる。
ViewControllerは適切なCellと話す必要が出る。guard let を使います。 このfatalErrorは起きないはずですが、fatalErrorの何がいいかというと開発段階で問題を把握できるということです。
このここのこーどこのコードは長く見えるかもしれません。モデルに戻りましょう、Subscriptを実装します。 そうするとこう出来る
DataSoruceをViewControllerから出しましょう
モデル依存を切り分ける。設計が変わっても実装の変更は必要なくなります。
すべてのこれらのメソッドをプッシュダウンできます。
+ボタンを押すとデータソースに渡します。 DetaSourceに誰のTableViewかを知らせる。このレベルでコネクトします。
これらはちょっと違う、引き上げる。Protocolを使います DataSourceをSourceTypeに準拠させる。
Cardという言葉がいっぱいありますね Itemに置き換えます DataTypeがあるとHandを返していたのをSelfを返すようにします。 Handが準拠するならSelfを返す。DataTypeに準拠している者自身。
ついてきてます?Stopって言ってくれてもいいですよ?
これはあるべきでしょうか
5未満ならDatasourceに上に追加しようと言う。CardではなくてItemにしておきましょう。
他にデータソースからプルアウト出来ないか?
テンプレートパターン
さて休憩です
雪の京都です。
さて、何をしましたか、いろんな簡素化しました。変更しないコードを外に追い出しました。 変更するものを下に持って来ました
OOPだけやるとか、POPだけとかFPだけではなく、全部をやることで調和させました。 ぜひやってみてください。
UITableviewControllerをswiftでOOPやFPを使って抽象化する話だった!すごいわかりやすいプレゼン #tryswiftconf
— カモメ@海の鳥 (@keito5656) March 2, 2016
後半は全然未体験の世界だったのでちゃんと自分で確かめてみたい #tryswiftconf
— yuta-t (@yutat93) March 2, 2016
今のセッションめっちゃわかりやすかったわー。あんな説明が出来るようになりたい #tryswiftconf
— iida (@iida_0213) March 2, 2016
「Brending Culture -よりswiftらしく、よりリーダブルなコードを- #tryswiftconf」をトゥギャりました。 https://t.co/feaoBi9W3N
— トゥギャッター開発まとめ (@tg__dev) 2016年3月2日
気に入った記事は はてなブックマーク
はてなブックマークアプリiOS開発チームから来ました! はてなブックマークにはSwift特集があります! 良い記事を見逃さないように、ご利用ください! http://b.hatena.ne.jp/hotentry/it/Swift
そして良いまとめ記事があったらはてなブックマークでブックマークしましょう! try! Swift の記事で盛り上がると嬉しいです!