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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Tomohisa Takaoka
June 27, 2014
Technology
3.5k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ReactiveCococaのMVVMで綺麗なコードができるのか.pdf
Tomohisa Takaoka
June 27, 2014
More Decks by Tomohisa Takaoka
See All by Tomohisa Takaoka
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
1.5k
Sekibanのコアを5言語で動かす ― イベントソーシング×WASMでやってみた | Running Sekiban's Core in 5 Languages — Event Sourcing × WASM
tomohisa
0
100
Sekiban + Microsoft Orleans のアクターをAWS対応しました / Sekiban + Microsoft Orleans actors are now supported on AWS.
tomohisa
0
180
純粋なイミュータブルモデルを設計してからイベントソーシングと組み合わせるDeciderの実践方法の紹介 /Introducing Decider Pattern with Event Sourcing
tomohisa
1
2.6k
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
170
dnx で実行できるコマンド、作ってみました
tomohisa
0
260
AIと協働し、イベントソーシングとアクターモデルで作る後悔しないアーキテクチャ Regret-Free Architecture with AI, Event Sourcing, and Actors
tomohisa
8
41k
Azure Cognitive Services / Speech で話者分離の音声文字起こしをする / Speaker-Diarized Transcription with Azure Cognitive Services Speech
tomohisa
0
360
DCB版のSekibanのコード、動作、ベンチマークのデモ/dcb sekiban code and benchmark
tomohisa
0
96
Other Decks in Technology
See All in Technology
凡エンジニアがこの先生きのこるためには。〜TypeScript完全に理解したい〜
alchemy1115
2
310
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
980
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
150
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
4
2.4k
タスクの複雑さでモデルを選ぶ ── Thompson Samplingで動かす“トークン/コスト最適化
satohy0323
0
570
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
170
LLM/Agent評価:トップ営業の発言を「正解」にする 〜暗黙的正解による評価を営業資産に変える〜
takkuhiro
1
230
SRE Next 2026 何でも屋からの脱却
bto
0
1k
プロダクト開発組織の現在地(Ver.2026/07) / product-organization
kaonavi
0
120
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
400
脱金融のフューチャー・デザイン / Future Design Beyond Finance
ks91
PRO
0
160
「守りたい体験」を渡すだけで E2E を生成させられるようになった話
hinac0
1
650
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
220
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
280
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
810
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
The SEO Collaboration Effect
kristinabergwall1
1
510
Mind Mapping
helmedeiros
PRO
1
280
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Google's AI Overviews - The New Search
badams
0
1.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Technical Leadership for Architectural Decision Making
baasie
3
440
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ΛೖΕΔͱϓϩδΣΫτ͕ॏ͘ͳΔϏϧ υʹͨΒ͕͔͔࣌ؒΔ •ॳΊ͚ͯͩͲ·͔ͩΒͳ͍ڍಈ͕͋Δ
ɹʢ͔Δਓ͍ͨΒڭ͍͑ͯͩ͘͞ʣ
૯ׅɿ େنʹͳΕɺྑ͍ͷ͕ͭ͘Εͦ͏ɻ डୗ͕͍࣌͠ʹϓϩδΣΫτΛखͬ ͯͩ͘͞ΔϑϦʔϥϯε͞Μืूதʂ