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

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

Avatar for USAMI Kosuke 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/

Avatar for USAMI Kosuke

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 の分離とは別に、適切なレイヤー分けを考えるべき。 システムアーキテクチャ、と呼ばれることがある。