iOSアプリ設計パターン入門 を読んで
はははーい。Fです。
またこのシリーズです。
今回は、iOSアプリ設計パターン入門になります。
https://peaks.cc/books/iOS_architecture
実は結構なボリュームを上記ページから試し読みできるので、気になった方はぜひ覗いてみてください。
ここからは例によって勉強になったところのメモ
だんだん章立てが適当になってきたよ。まいったね。
Swiftらしい設計
名前をよく考える
→責務、役割を正しく示す
→名前と振る舞いに矛盾があれば怪しい
SOLID原則
Single Responsibillty Principle
単一責任原則
クラスを変更する理由は1つ
Dependency Inversion Pricile
依存関係逆転の原則
上位下位共に抽象に依存
詳細が抽象に依存
SwiftではProtocolを利用して解決する。
Interface Segregation Principle
インターフェース分離の原則
クライアントに、クライアントが利用しないメソッドへの依存を強制しない
→enumに幅広く持たせすぎないなど
Open/Close Principle
拡張に対して開いていて、修正に閉じている
変わる部分、変わらない部分を明確に
associated Valueで、enum内に異なる型を持たせるなど
依存性注入
Dependency Injection → DI
Swift Error Handling
関数の予備元で回復可能
→Swiftでは、原因が明白なのでnil/原因が複数あるのでError詳細を返す。
回復不可能
プログラムを停止させるべき or 呼び出し側のバグ
GUIアーキテクチャ
MVP
iOSの基礎的なスタイル
MVx/MVVP
MVVMはバインディングにより監視を行う
コード的には記述せず、疎結合になる
双方向、あるいは単方向
バインディングは開発プラットフォームの仕組みにより享受する
元祖はWPF
→多分バインディング自体はSwiftUIでは標準的
Flux
単一方向にのみデータのやり取りが行われる
これによりメンテ性を上げる。
Redux
React用にFluxを改善したもの
iOSにおいては、RxSwiftなどで、Protocolによる制約を与えて実現する
システムアーキテクチャ
CleanArchitecture
アプリ開発のプラットフォームに依存しないという点でclean
分け方はOnionに近い
依存性逆転をProtocolなどできれいに表すとテストが容易になっていく
画面遷移パターン
VIPER
クリーンアーキテクチャーにRouterを足したもの
Routerが画面遷移を新たに担う
Coordinator
従来の画面遷移は、前の画面が次の画面を知っている
これを廃止するための統括管理者Coordinator
感想
各種設計原則やアーキテクチャパターンと、それらをSwiftで表すとどのようになるか、の両方が学べます。
また、上記を通じて、Swiftという言語自体の思想もより理解できます。
かなりの良著です。個人的にはマストバイ案件
ではまた。
最新記事 by FDrumer (全て見る)
- macOSで読み込めないCD - 2023-07-24
- Cubase10.5のままmacOS13 Venturaに上げてみたんじゃ【DTM、動画投稿】 - 2023-07-18
- Final Cut Proのプロジェクト容量を小さくして、データ保存しやすくしよう - 2023-04-19