Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アーキテクチャ概論 / 20220217-geekcamp-slides-usami

USAMI Kosuke
February 17, 2022

アーキテクチャ概論 / 20220217-geekcamp-slides-usami

アーキテクチャ概論

【エンジニア向け勉強会】iOSアプリ アーキテクチャ入門
https://talent.supporterz.jp/events/24a30aa4-ced6-402d-93df-4e5f99f50607/

技育CAMP
https://talent.supporterz.jp/geekcamp/

USAMI Kosuke

February 17, 2022
Tweet

More Decks by USAMI Kosuke

Other Decks in Programming

Transcript

  1. アプリ開発におけるレイヤー UI (User Interface )を持つアプリの場合。 どのようなUI を実現するかは、アプリの中でも重要な要素のひとつ。 UI の実現の仕組みはそれ自体がわりと複雑。 UI

    の実装はプラットフォーム(iOS / Android / Flutter / Web など)に依存する。 そこで、「UI 」と「それ以外」の2 つのレイヤーに分離する。 「UI 」レイヤーは「View 」、「それ以外」レイヤーは「Model 」と呼ばれる。
  2. View と Model の役割分担 ユーザーの操作を受け付けるのはView が行う。 View は、ユーザーの操作が発生したことをModel に伝える。 Model

    は、実際の処理を実行する(例えばサーバーへ情報を送信したり情報を受信したりする)。 関心の分離という原則に従って分担できている。
  3. MVC (Model-View-Controller) 古くから存在するアーキテクチャ。同じ「MVC 」という言葉でも内容が異なる場合があるので注意。 ここでは、Apple が提唱したCocoa MVC について。 ユーザー Controller

    View Model Controller が中心的な存在で、Controller はView とModel の両方を参照する。 View は情報の表示だけを受け持ち、ユーザー操作の受け付けはController が行う。 シンプルなアーキテクチャで分かりやすい。 Controller の責務が大きくなりがち。
  4. MVP (Model-View-Presenter) これも同じ「MVP 」という言葉でも内容が異なる場合があるので注意。 Cocoa MVC に似ている。Controller の役割を見直し、名称を変更した。 ユーザー View

    Presenter Model Presenter はView とModel の両方を参照する。 ユーザー操作の受け付けはView が行う。 シンプルなアーキテクチャで分かりやすい。 iOS の場合、 UIViewController との関係がやや曖昧になりがち。 ` `
  5. MVVM (Model-View-ViewModel) Controller やPresenter に代わってViewModel が登場。 現在、iOS アプリ開発で採用率が比較的高いアーキテクチャ。 View ViewModel

    Model ViewModel はView を直接参照しない。 View とViewModel はデータバインディングで連携する。 データバインディングの仕組みが必要になる。 そのため、Reactive プログラミングが採用されることが多い。
  6. View と Model の分離以外のアーキテクチャ ここまで、「UI 」と「UI 以外」の分離が重要、という観点で話してきた。 しかし、それ以外にも気にしておくべきことはある。 「UI 以外」と一括りにした部分も、もう少し細かく考えることができる。

    実のところ、サーバとの通信処理やデータ保存処理など、UI 以外の処理も重要。 そのため、View とModel の分離とは別に、適切なレイヤー分けを考えるべき。 システムアーキテクチャ、と呼ばれることがある。