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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Tomohisa Takaoka
June 27, 2014
Technology
3.5k
4
Share
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.4k
Sekibanのコアを5言語で動かす ― イベントソーシング×WASMでやってみた | Running Sekiban's Core in 5 Languages — Event Sourcing × WASM
tomohisa
0
83
Sekiban + Microsoft Orleans のアクターをAWS対応しました / Sekiban + Microsoft Orleans actors are now supported on AWS.
tomohisa
0
160
純粋なイミュータブルモデルを設計してからイベントソーシングと組み合わせるDeciderの実践方法の紹介 /Introducing Decider Pattern with Event Sourcing
tomohisa
1
2.3k
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
160
dnx で実行できるコマンド、作ってみました
tomohisa
0
230
AIと協働し、イベントソーシングとアクターモデルで作る後悔しないアーキテクチャ Regret-Free Architecture with AI, Event Sourcing, and Actors
tomohisa
8
38k
Azure Cognitive Services / Speech で話者分離の音声文字起こしをする / Speaker-Diarized Transcription with Azure Cognitive Services Speech
tomohisa
0
320
DCB版のSekibanのコード、動作、ベンチマークのデモ/dcb sekiban code and benchmark
tomohisa
0
89
Other Decks in Technology
See All in Technology
Amazon Bedrock 経由の Claude Cowork を試してみよう・MCP にも繋いでみよう
sugimomoto
0
200
Generative UI × A2UI で AI エージェントを作った話 AI-DLC も使ってみた!
kmiya84377
1
250
大学生が本気でDatabricksを活用してDiscordサークルをデータ駆動させてみた
phantomjuju
0
200
大規模環境でどのように監視を実現する?
yuobayashi
1
150
A Harness for Behaviour: how to get AI to generate code that does what we intend, or "TDD in the age of AI"
xpmatteo
0
460
Typiaで配信JSONの安全性を構造的に担保する(TSKaigi2026)
righttouch
PRO
1
180
TypeScriptはどのようにどこまで推論できるのか ─ とにかく as は禁止で
ypresto
3
450
基礎から解説!Icebergで紐解くSnowflake×Databricks連携の現在地
cm_yasuhara
0
340
freee-mcpを Local→Remote で出してわかった MCP認可実装のリアル
terara
3
810
long-running-tasks
cipepser
2
400
最低限これだけ押さえれ大丈夫_Claude Enterprise/Team企業展開ガバナンス入門
tkikuchi
1
260
eBPF Can Do It! A 5-Minute Tour of 5 Real-World PHP Issues Solved with eBPF
egmc
0
290
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
200
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
220
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
570
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
550
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
200
Site-Speed That Sticks
csswizardry
13
1.2k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
170
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
250
Discover your Explorer Soul
emna__ayadi
2
1.1k
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ΛೖΕΔͱϓϩδΣΫτ͕ॏ͘ͳΔϏϧ υʹͨΒ͕͔͔࣌ؒΔ •ॳΊ͚ͯͩͲ·͔ͩΒͳ͍ڍಈ͕͋Δ
ɹʢ͔Δਓ͍ͨΒڭ͍͑ͯͩ͘͞ʣ
૯ׅɿ େنʹͳΕɺྑ͍ͷ͕ͭ͘Εͦ͏ɻ डୗ͕͍࣌͠ʹϓϩδΣΫτΛखͬ ͯͩ͘͞ΔϑϦʔϥϯε͞Μืूதʂ