Submit Search
Upload
2つの同期 4つの状態 #roppongiswift
•
1 like
•
542 views
Kenji Tanaka
Follow
2018/12/21開催のROPPONGI.swift 第6回の登壇資料です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 41
Download now
Download to read offline
Recommended
An Introduction to WSO2 Microservices Framework for Java
An Introduction to WSO2 Microservices Framework for Java
WSO2
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
DataStax Academy
JavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EE
Rodrigo Cândido da Silva
[POSS 2019] OVirt and Ceph: Perfect Combination.?
[POSS 2019] OVirt and Ceph: Perfect Combination.?
Worteks
Developing Micro-Services for Cloud using Java
Developing Micro-Services for Cloud using Java
WSO2
Dev Ops Geek Fest: Automating the ForgeRock Platform
Dev Ops Geek Fest: Automating the ForgeRock Platform
ForgeRock
Dropwizard
Dropwizard
Abdulhadi ÇELENLİOĞLU
Docker pipelines
Docker pipelines
Chris Mague
Recommended
An Introduction to WSO2 Microservices Framework for Java
An Introduction to WSO2 Microservices Framework for Java
WSO2
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
DataStax Academy
JavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EE
Rodrigo Cândido da Silva
[POSS 2019] OVirt and Ceph: Perfect Combination.?
[POSS 2019] OVirt and Ceph: Perfect Combination.?
Worteks
Developing Micro-Services for Cloud using Java
Developing Micro-Services for Cloud using Java
WSO2
Dev Ops Geek Fest: Automating the ForgeRock Platform
Dev Ops Geek Fest: Automating the ForgeRock Platform
ForgeRock
Dropwizard
Dropwizard
Abdulhadi ÇELENLİOĞLU
Docker pipelines
Docker pipelines
Chris Mague
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #pixiv_ios_arch
Kenji Tanaka
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #app_mp
Kenji Tanaka
Monitoring Docker with ELK
Monitoring Docker with ELK
Daniel Berman
淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2
Wen-Tien Chang
Agile startup company management and operation
Agile startup company management and operation
Jiang Zhu
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
Amazon Web Services Japan
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoop
clairvoyantllc
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
Rafal Gancarz
Nodejs web,db,hosting
Nodejs web,db,hosting
Kenu, GwangNam Heo
Workflow Manager - a technical overview (Sam Vanhoutte)
Workflow Manager - a technical overview (Sam Vanhoutte)
Sam Vanhoutte
20140211 BTUG.be - Workflow Manager
20140211 BTUG.be - Workflow Manager
BTUGbe
Play Framework and Activator
Play Framework and Activator
Kevin Webber
Rapid development with Rails
Rapid development with Rails
Yi-Ting Cheng
12 Factor App Methodology
12 Factor App Methodology
laeshin park
Best practices for developing your Magento Commerce on Cloud
Best practices for developing your Magento Commerce on Cloud
Oleg Posyniak
Building a Platform-as-a-Service with Docker and Node.js
Building a Platform-as-a-Service with Docker and Node.js
Kevin Swiber
Agiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As Code
Mario IC
DrupalCon 2011 Highlight
DrupalCon 2011 Highlight
Supakit Kiatrungrit
Geo servershell
Geo servershell
Jared Erickson
Icinga Camp Bangalore - Icinga integrations
Icinga Camp Bangalore - Icinga integrations
Icinga
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
Kenji Tanaka
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
Kenji Tanaka
More Related Content
Similar to 2つの同期 4つの状態 #roppongiswift
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #pixiv_ios_arch
Kenji Tanaka
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #app_mp
Kenji Tanaka
Monitoring Docker with ELK
Monitoring Docker with ELK
Daniel Berman
淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2
Wen-Tien Chang
Agile startup company management and operation
Agile startup company management and operation
Jiang Zhu
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
Amazon Web Services Japan
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoop
clairvoyantllc
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
Rafal Gancarz
Nodejs web,db,hosting
Nodejs web,db,hosting
Kenu, GwangNam Heo
Workflow Manager - a technical overview (Sam Vanhoutte)
Workflow Manager - a technical overview (Sam Vanhoutte)
Sam Vanhoutte
20140211 BTUG.be - Workflow Manager
20140211 BTUG.be - Workflow Manager
BTUGbe
Play Framework and Activator
Play Framework and Activator
Kevin Webber
Rapid development with Rails
Rapid development with Rails
Yi-Ting Cheng
12 Factor App Methodology
12 Factor App Methodology
laeshin park
Best practices for developing your Magento Commerce on Cloud
Best practices for developing your Magento Commerce on Cloud
Oleg Posyniak
Building a Platform-as-a-Service with Docker and Node.js
Building a Platform-as-a-Service with Docker and Node.js
Kevin Swiber
Agiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As Code
Mario IC
DrupalCon 2011 Highlight
DrupalCon 2011 Highlight
Supakit Kiatrungrit
Geo servershell
Geo servershell
Jared Erickson
Icinga Camp Bangalore - Icinga integrations
Icinga Camp Bangalore - Icinga integrations
Icinga
Similar to 2つの同期 4つの状態 #roppongiswift
(20)
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #app_mp
Monitoring Docker with ELK
Monitoring Docker with ELK
淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2
Agile startup company management and operation
Agile startup company management and operation
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoop
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
Nodejs web,db,hosting
Nodejs web,db,hosting
Workflow Manager - a technical overview (Sam Vanhoutte)
Workflow Manager - a technical overview (Sam Vanhoutte)
20140211 BTUG.be - Workflow Manager
20140211 BTUG.be - Workflow Manager
Play Framework and Activator
Play Framework and Activator
Rapid development with Rails
Rapid development with Rails
12 Factor App Methodology
12 Factor App Methodology
Best practices for developing your Magento Commerce on Cloud
Best practices for developing your Magento Commerce on Cloud
Building a Platform-as-a-Service with Docker and Node.js
Building a Platform-as-a-Service with Docker and Node.js
Agiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As Code
DrupalCon 2011 Highlight
DrupalCon 2011 Highlight
Geo servershell
Geo servershell
Icinga Camp Bangalore - Icinga integrations
Icinga Camp Bangalore - Icinga integrations
More from Kenji Tanaka
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
Kenji Tanaka
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
Kenji Tanaka
ポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfire
Kenji Tanaka
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
Kenji Tanaka
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_night
Kenji Tanaka
Swiftで聞いておぼえるテスト書き
Swiftで聞いておぼえるテスト書き
Kenji Tanaka
設計時空のリファクタリング
設計時空のリファクタリング
Kenji Tanaka
WACATE 2018 Summer
WACATE 2018 Summer
Kenji Tanaka
テスト駆動開発入門 by Swift
テスト駆動開発入門 by Swift
Kenji Tanaka
An iOS Engineer challenges Web.
An iOS Engineer challenges Web.
Kenji Tanaka
エンジニアのためのブログ講座Ver4
エンジニアのためのブログ講座Ver4
Kenji Tanaka
TDDやってみよ
TDDやってみよ
Kenji Tanaka
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
Kenji Tanaka
節子、それViewControllerやない...、FatViewControllerや...。
節子、それViewControllerやない...、FatViewControllerや...。
Kenji Tanaka
iOS 11からのDeviceCheck #とは
iOS 11からのDeviceCheck #とは
Kenji Tanaka
設計に答えはないから探してみよう
設計に答えはないから探してみよう
Kenji Tanaka
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有
Kenji Tanaka
iOS 11からのアプリ間ファイル共有_公開用
iOS 11からのアプリ間ファイル共有_公開用
Kenji Tanaka
参加者と振り返るWWDC17 公開用
参加者と振り返るWWDC17 公開用
Kenji Tanaka
WWWDCの振り返りを始めるために
WWWDCの振り返りを始めるために
Kenji Tanaka
More from Kenji Tanaka
(20)
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
ポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfire
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_night
Swiftで聞いておぼえるテスト書き
Swiftで聞いておぼえるテスト書き
設計時空のリファクタリング
設計時空のリファクタリング
WACATE 2018 Summer
WACATE 2018 Summer
テスト駆動開発入門 by Swift
テスト駆動開発入門 by Swift
An iOS Engineer challenges Web.
An iOS Engineer challenges Web.
エンジニアのためのブログ講座Ver4
エンジニアのためのブログ講座Ver4
TDDやってみよ
TDDやってみよ
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
節子、それViewControllerやない...、FatViewControllerや...。
節子、それViewControllerやない...、FatViewControllerや...。
iOS 11からのDeviceCheck #とは
iOS 11からのDeviceCheck #とは
設計に答えはないから探してみよう
設計に答えはないから探してみよう
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有_公開用
iOS 11からのアプリ間ファイル共有_公開用
参加者と振り返るWWDC17 公開用
参加者と振り返るWWDC17 公開用
WWWDCの振り返りを始めるために
WWWDCの振り返りを始めるために
Recently uploaded
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Curtis Poe
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
charlottematthew16
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Mark Billinghurst
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Manik S Magar
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
2toLead Limited
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Addepto
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
Commit University
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
null - The Open Security Community
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
charlottematthew16
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
Dubai Multi Commodity Centre
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Mark Simos
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
Scott Keck-Warren
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Enterprise Knowledge
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
DianaGray10
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
Mattias Andersson
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
Kalema Edgar
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Fwdays
Recently uploaded
(20)
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
2つの同期 4つの状態 #roppongiswift
1.
2.
• / @ktanaka117 • •
: • R&D Swift TDD • PEAKS iOS
3.
4.
• GUI • 2
4 • GUI
5.
• • GUI Architectures https://martinfowler.com/eaaDev/uiArchs.html •
Flow Synchronization https://www.martinfowler.com/eaaDev/FlowSynchronization.html • Observer Synchronization https://www.martinfowler.com/eaaDev/MediatedSynchronization.html
6.
2 • • GUI
7.
• • • • etc…
8.
GUI • MVC • MVP •
MVVM • Flux • Redux • etc…
9.
GUI • GUI • View
Model • • = Presentation Domain Separation(PDS) • PDS GUI
10.
11.
2 • (Observer Synchronization) •
(Flow Synchronization)
12.
• • • • • ex.) NotificationCenter
center.post(name: .someNotification, object: nil)
13.
• • • • • ex.) label.text
= “hoge” SessionManager.shared.authToken = “1234567890”
14.
15.
4 • 4 • Screen
State • Presentation State • Session State • Record State
16.
Screen State • GUI •
ex.) label.text, imageView.image
17.
Presentation State • Screen
State Screen State Session State • Screen State Session State • ex.) presenter.labelText, presenter.iconImage, presenter.favState Twitter on/off (Screen State) (Session/Record State)
18.
Session State • Record
State • Record State • ex.) API/DB
19.
Record State • • • ex.)
Realm API
20.
21.
GUI • •
22.
Clean Architecture State Presenter ViewModel UseCase Repository APIClient DBClient Presentation
Layer Domain Layer Data Layer Clean Architecture GUI Clean Architecture State View ViewController
23.
Presenter ViewModel UseCase Repository APIClient DBClient Presentation Layer Domain
Layer Data Layer GUI ViewController View Screen State View ViewController Clean Architecture State
24.
Presenter ViewModel UseCase Repository APIClient DBClient Presentation Layer Domain
Layer Data Layer View UseCase Presenter/ViewModel Presentation State View ViewController Clean Architecture State
25.
Presenter ViewModel UseCase Repository APIClient DBClient Presentation Layer Domain
Layer Data Layer UseCase Repository Data Layer Data Layer Session State View ViewController Clean Architecture State
26.
Presenter ViewModel UseCase Repository APIClient DBClient Presentation Layer Domain
Layer Data Layer DB Record State API DB DB View ViewController Clean Architecture State
27.
Presenter ViewModel UseCase Repository
APIClient DBClient MVC, MVP, MVVM GUI Screen State State View ViewController GUI
28.
Screen State GUI Presenter ViewModel UseCase Repository APIClient DBClient Presentation
Layer Domain Layer Data Layer View ViewController
29.
Fat GUI APIClient DBClientView ViewController
30.
31.
32.
Screen/Presentation State Session/Record
State b ModelView(Controller) (Cocoa) MVC
33.
34.
Twitter Presentation State
Screen State MVP(Supervising Controller) View Model Presenter
35.
Session/Record View MVP(Supervising Controller) View
Model Presenter
36.
37.
Screen State Presentation
State MVP(Passive View) View ModelPresenter
38.
GUI • •
39.
• 2 4 •
GUI • •
40.
2019/01/10 in FiNC App
Client Melting Pod #1
41.
2019/01/15 in pixiv
Inc. iOS
Download now