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

MTC2018 - ViewControllerのTypeErasureを実装する

mercari
October 04, 2018

MTC2018 - ViewControllerのTypeErasureを実装する

Speaker: 齋藤 暢郎

我々はiOSDCで発表したMicroViewControllerに加えてMicroFrameworksの考え方も導入してアプリケーションを開発しています。MicroFrameworksに付き物なのが循環依存の問題ですが、MicroViewControllerの型を導入することで、「ViewControllerに対してTypeErasureを実装する」ことが可能になりました。我々はこれをViewControllerRequestと名付けて利用しています。循環依存の問題を解決し、更にはリファクタリングの工数を大幅に縮めた虎の子「ViewControllerRequest」について、お話しします。

mercari

October 04, 2018
Tweet

More Decks by mercari

Other Decks in Technology

Transcript

  1. 全てのモジュールは Kit/Entityをimport アプリは全ての モジュールをimport     MercariKit     MercariEntity     Prod1

        Listing     ItemDetail     Search     Mercari     Prod2     Prod3
  2.     MercariKit     MercariEntity     Prod1     Listing     ItemDetail

        Search     Mercari     Prod2     Prod3 ItemDetailはSearchを import出来ない
  3.     MercariKit     MercariEntity     Prod1     Listing     ItemDetail

        Search     Mercari     Prod2     Prod3 Get all resources Mercari from EnvironmentProvider EnvironmentProvider User GetProfileRequest MercariEnvironment
  4.     MercariKit     MercariEntity     Prod1     Listing     ItemDetail

        Search     Mercari     Prod2     Prod3 Requestの定義 型クラス 型 実装 DIP(Dependency inversion principle) protocol struct function
  5.     MercariKit     MercariEntity     Prod1     Listing     ItemDetail

        Search     Mercari     Prod2     Prod3 3 protocols defines in MercariKit Injectable/Interactable
  6.     MercariKit     MercariEntity     Prod1     Listing     ItemDetail

        Search     Mercari     Prod2     Prod3 Make ViewControllers Input/Output in MercariEntity Injectable/Interactable Input Output
  7.     MercariKit     MercariEntity     Prod1     Listing     ItemDetail

        Search     Mercari     Prod2     Prod3 Mercari can import Search Injectable/Interactable Input Output let vc = SearchVC(...)
  8.     MercariKit     MercariEntity     Prod1     Listing     ItemDetail

        Search     Mercari     Prod2     Prod3 Get ViewController instance from EnvironmentProvider API Gateway for VC ViewControllerRequest Search IO let vc = SearchVC(...)
  9.     MercariKit     MercariEntity     Prod1     Listing     ItemDetail

        Search     Mercari     Prod2     Prod3 コードは参照できない 機能は正しく動いている
  10.     MercariKit     MercariEntity     Prod1     Listing     ItemDetail

        Search     Mercari     Prod2     Prod3 ViewControllerRequest ViewControllers IO WrapperOfObjC _人人人人人人人人_ > 莫大な埋蔵金 <  ̄Y^Y^Y^Y^Y^Y^Y^ ̄