iOSアプリ設計パターン入門 を読んで

2022-01-29 オフ 投稿者: FDrumer

はははーい。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という言語自体の思想もより理解できます。

かなりの良著です。個人的にはマストバイ案件


ではまた。

The following two tabs change content below.
社会人ドラマーのFです。ドラム、ベース、DTM、作曲をしてます。 写真と酒と町歩きが好き。 YouTubeに動画上がってます。