Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ReactiveCococaのMVVMで綺麗なコードができるのか.pdf
Search
Tomohisa Takaoka
June 27, 2014
Technology
4
3.3k
ReactiveCococaのMVVMで綺麗なコードができるのか.pdf
Tomohisa Takaoka
June 27, 2014
Tweet
Share
More Decks by Tomohisa Takaoka
See All by Tomohisa Takaoka
dnx で実行できるコマンド、作ってみました
tomohisa
0
96
AIと協働し、イベントソーシングとアクターモデルで作る後悔しないアーキテクチャ Regret-Free Architecture with AI, Event Sourcing, and Actors
tomohisa
2
8.8k
Azure Cognitive Services / Speech で話者分離の音声文字起こしをする / Speaker-Diarized Transcription with Azure Cognitive Services Speech
tomohisa
0
170
DCB版のSekibanのコード、動作、ベンチマークのデモ/dcb sekiban code and benchmark
tomohisa
0
34
Microsoft Orleans, Daprのアクターモデルを使い効率的に開発、デプロイを行うためのSekibanの試行錯誤 / Sekiban: Exploring Efficient Development and Deployment with Microsoft Orleans and Dapr Actor Models
tomohisa
0
340
Distributed applications made with Microsoft Orleans (& Dapr) and Event Sourcing using Sekiban
tomohisa
0
67
MCPを使ってイベントソーシングのAIコーディングを効率化する / Streamlining Event Sourcing AI Coding with MCP
tomohisa
0
250
AIコーディング新時代を生き残るための試行錯誤 / AI Coding Survival Guide
tomohisa
9
14k
イベントソーシングとAIの親和性ー物語とLLMに理解できるデータ
tomohisa
1
310
Other Decks in Technology
See All in Technology
社内外から"使ってもらえる"データ基盤を支えるアーキテクチャの秘訣/登壇資料(飯塚 大地・高橋 一貴)
hacobu
PRO
0
7k
Digital omtanke på Internetdagarna 2025
axbom
PRO
0
110
DDD x Microservice Architecture : Findy Architecture Conf 2025
syobochim
13
4.8k
今すぐGoogle Antigravityを触りましょう
rfdnxbro
0
170
AS59105におけるFreeBSD EtherIPの運用と課題
x86taka
0
270
AI × クラウドで シイタケの収穫時期を判定してみた
lamaglama39
1
390
How We Built a Secure Sandbox Platform for AI
flatt_security
1
110
プロダクト負債と歩む持続可能なサービスを育てるための挑戦
sansantech
PRO
1
980
雲勉LT_Amazon Bedrock AgentCoreを知りAIエージェントに入門しよう!
ymae
2
210
ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる
yuki_ink
3
420
経営から紐解くデータマネジメント
pacocat
2
130
米軍Platform One / Black Pearlに学ぶ極限環境DevSecOps
jyoshise
2
530
Featured
See All Featured
Thoughts on Productivity
jonyablonski
73
4.9k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Statistics for Hackers
jakevdp
799
230k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
BBQ
matthewcrist
89
9.9k
Six Lessons from altMBA
skipperchong
29
4.1k
RailsConf 2023
tenderlove
30
1.3k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
The Cult of Friendly URLs
andyhume
79
6.7k
GitHub's CSS Performance
jonrohan
1032
470k
Transcript
ReactiveCococaͷMVVMͰ៉ ྷͳίʔυ͕Ͱ͖Δͷ͔ @tomohisa Tomohisa Takaoka 2014/6/27
None
डୗ։ൃ ʴ ΤϯλʔϓϥΠζ J-Tech Creations, Inc www.jtechs.com follow me @tomohisa
ຊͷεϖγϟϧίϯςϯπ Twitter @tomohisa ͔ΒͲ͏ͧ follow me @tomohisa
iOSΞϓϦͷ։ൃख๏ MVCύλʔϯ
•View - xib, Storyboard •Controller - UIViewController •Model (ಠࣗʹ࡞͢Δ) https://developer.apple.com/jp/devcenter/ios/library/japanese.html
͜ͷυΩϡϝϯτ͕ྑ͍ײ͡ͰMVCΛઆ໌͍ͯ͠·͢
ViewController͕େ͖͘ͳΓ͗͢Δʂ ※OSXʹɺCocoaόΠϯσΟϯάͱ͍͏ ViewͱσʔλΛ݁߹ͤ͞Δػೳ͕͋Δ͕ɺ iOSʹଘࡏ͠ͳ͍
ࣾ༻ͷλΠϜγʔτཧΞϓϦ
Background : parse.com ϢʔβʔཧͳͲͬͯ͘ΕΔ
ViewControllerʹσʔλऔಘͷίʔυ͕ͪ͝Ό·ͥ vVC (ංେԽͨ͠Ϗϡʔίϯτϩʔϥʔ)ʹͳͬͯ͠·ͬͨ
ReactiveCocoa Λͬͯ MVVM ʹॻ͖͑Δ
ReactiveCocoaͱʁ Function Reactive Programming (FRP) ΛObjective-CͰ࣮ݱ͢ΔͨΊͷϑϨʔϜϫʔΫ https://github.com/ReactiveCocoa/ReactiveCocoa
http://maoe.hatenadiary.jp/entry/20100109/1263059731
MVVMͱ http://www.teehanlax.com/blog/model-view-viewmodel-for-ios/
MVC MVVM ViewControllerɺେ͖ͳҙຯͰͷ VʹؚΉ
M V VM Model ViewController + IB ViewModel
M V VM Model 1.
Ϟσϧͷํ๏ View, ViewModel͔Β͢Δ
Ϟσϧͷํ๏̍ σʔλ(JSONͳͲͰදݱ͞ΕΔΦϒδΣΫτ) ֤σʔλΛද͢ΫϥεΛ࡞Δ JSON, XML, ParseObject ͳͲͷ DictionaryΞΫηεΛແ͘͢ ͪΌΜͱܕΛ࡞Δ σʔλʹ༝དྷ͢ΔϩδοΫ͜͜ʹॻ͘
ʢྫ͑̎ͷڑΛٻΊͨΓɺΦϒδΣΫτͰܭࢉ͠ ͨΓ͢Δ͍͋ʣ
worktime[“startedTime”] = [NSDate date]; worktime.startedTime = [NSDate date]; × ◦
Ϟσϧͷํ๏̎ σʔλͷಡΈॻ͖ͳͲڞ௨Ͱ͑Δػೳ (Downloader, Uploader, Calculator, Aggregator) ! σʔλͷશମ͔ΒΞϓϦͰूܭ͍ͨ͠ͳͲ μϯϩʔυ͢ΔػೳͳͲ ※parse
sdkʹඞཁͳػೳ͕͋ͬͨͷͰࠓճ࡞ͤͣ
Ϟσϧͷํ๏̏ ΞϓϦʹ݁߹͢Δͷ (ઃఆϑΝΠϧɺConstͳͲ) AppDelegateʹmodelϑΝΠϧΛ࣋ͨͤΔ AppDelegateʹͪ͝Όͪ͝Ό͔͔ͳ͍ʂ ΞϓϦͱͯ͠อ͍࣋ͯ͠Δσʔλ
͏ͱ͖ એݴ ΞϓϦʹ݁߹͢ΔmodelΛ࡞͢Δ
M V VM View Model 2.
https://github.com/ReactiveCocoa/ReactiveViewModel
None
RACCommand: ଞͷΦϒδΣΫτ͔Β࣮ߦग़དྷΔɻ ඇಉظॲཧͷ௨Λड͚Δ͜ͱՄೳ RACSignal: ௨ͷγάφϧΛड͚Δ͜ͱ͕Ͱ͖Δ KVOͰड͚औͬͨΒΓɺ௨ͷޙʹ͞Β ʹ࣍ͷ࡞ۀΛఆٛ͢Δ͜ͱՄೳ
M V VM View and ViewController 3.
ViewModelΛ࡞ͯ͠ɺViewModelͱViewΛόΠϯυ͢Δ
ϘλϯԡԼͷΠϕϯτΛViewModel ͷRACCommandͱؔ࿈͚Δ
ςΩετೖྗ࣌ʹViewModelͷσʔλΛߋ৽ ViewModelͰNoteͷߋ৽Λࢹ͠ɺߋ৽Λֻ͚Δ
ྑ͔ͬͨ •ViewModelʹUIίʔυ͕ͳ͍ͨΊɺUnitTest͕Մೳ •ViewModelʹStatusͳͲΛ࣋ͨͤɺදࣔΛௐ͢Δͷ͕ ༰қͦ͏ •ͦΕͧΕͷίʔυ͕͍ͯ͠ΔͷͰ͔Γ͍͢ •σʔλͷνΣοΫͳͲΛΈࠐΊΔ •εϨουͷཧͳͲ͕ߦΘΕ͍ͯΔͨΊɺόοΫάϥ ϯυͰUI͕มߋ͞ΕΔͳͲͷ͕͋·Γग़ͳͦ͞ ͏
Cons - ѱ͍ •ΊΜͲ͍͘͞ •Θ͔Γʹ͍͘ •ObjCͷػೳΛશ໘తʹ͍ͬͯΔͷͰɺSwift͚ͩͰͲ Ε͚ͩग़དྷΔͷ͔ʁ •ReactiveCocoaΛೖΕΔͱϓϩδΣΫτ͕ॏ͘ͳΔϏϧ υʹͨΒ͕͔͔࣌ؒΔ •ॳΊ͚ͯͩͲ·͔ͩΒͳ͍ڍಈ͕͋Δ
ɹʢ͔Δਓ͍ͨΒڭ͍͑ͯͩ͘͞ʣ
૯ׅɿ େنʹͳΕɺྑ͍ͷ͕ͭ͘Εͦ͏ɻ डୗ͕͍࣌͠ʹϓϩδΣΫτΛखͬ ͯͩ͘͞ΔϑϦʔϥϯε͞Μืूதʂ