Open keitin opened 7 years ago
実践的モデリング - 入力フォームというエラーのかたまりを例に
入力は、「共通 <=> 多用」
名前と値を使っていてバリデーションが出来る。
struct FormField {
let name: String
let value: Value
func validation() throw {...}
}
バリデーションはフィールドの状態によって異なる。 インタフェースと実装を分ける必要がある プロトコルとジェネリックスを使おう。
protocol FormField {
associatedType Value
var name: String { get }
var value: Value { get }
func validation() {...}
これを構造体に準拠させる。
struct StringFormField: FormField {
//プロパティとメソッドを実装する。
}
1.バリデーションを行う 2.値を取り出す この暗黙のルールを知らない人にとってはこわい
良い設計は、誤った用法をコンパルエラーにする
バリデーションと値を取り出す事を同時にやりたい。
フィールドのエラーとプロダクトをまとめる。
Formもprotocolにしよう。
それぞれのフォームのどれかがバリデーションに引っかかったらFormのバリデーションも失敗するようにする。 → どのフィールドで失敗したか知りたい → フィールドの識別子が必要 → Enumだ!!(enumとswitchは網羅性が高い) それぞれのフィールドをcaseに対応させる。
網羅性を利用できたが、惜しい
ハンドルすべきエラーがあることを知らないとこわい
buildProductの返り値をResult型にしちゃおう! -> Result<>
困ったら別の言語に聞いてみよう!
誤ったコードはコンパイル時に分るように
ちゅぱっ
Takeiさん
Xcode8.2 コマンドラインを使ってプロジェクトを作成する。
パッケージ管理ツール(Apple公式) cocoapods的なやつ
Swiftで堅牢なWebアプリケーションをつくろう
Any型はやだ!
テーブルのカラムと対応したモデルをSwiftで作ってあげる。 Enumによるパターンマッチングはサーバーサイドでも有効 → HTTP Methodとかエラーマッチングとは
Optional型 → ぬるぽが減らせる
Ubuntsuで動くことを最優先に。 Macで動いてもLinuxで落ちるよ!まだSwiftが対応しきれていないよ。
GCDも使える! コンカレント→ 複数のスレッドで処理させる。 GCDで高速なWebアプリを作ろう!
Takei さん https://github.com/noppoMan
Cookpad 西山さん
もともとはObjective-Cが好きだった。
Cookpadの海外版アプリをObj-CからSwiftに全書き換えを行った。 「男はだまって公式ドキュメント」 → 案外この言語難しそうだな。選択肢が多くでドキュメントを読んだだけでは使いこなすのは難しいかな
当初のコンセプト → 実践的なアプリをつくるための知識を載せよう。
言語仕様をしっかり理解しないと、間違った選択をしてしまう。 Swiftなのに、らしくないコードを書いてしまう
Ishkawaさんは後からジョインした。
iOSの話しをしてしまうと、UIKitなどの説明が必要になり、Swiftに特化できない。 最終的にAPIクライアントを作る事に。
執筆は辛いよ。カンヅメ状態つらし。
さらに先へ