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
実践 Reactive Cocoa で MVVM
Search
Tomohisa Takaoka
August 04, 2014
Technology
800
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
実践 Reactive Cocoa で MVVM
Reactive Cocoa を使用して約1ヶ月で使用した感想です。RACSignalについて理解出来るように図を作って説明しています。
Tomohisa Takaoka
August 04, 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
94
Sekiban + Microsoft Orleans のアクターをAWS対応しました / Sekiban + Microsoft Orleans actors are now supported on AWS.
tomohisa
0
170
純粋なイミュータブルモデルを設計してからイベントソーシングと組み合わせるDeciderの実践方法の紹介 /Introducing Decider Pattern with Event Sourcing
tomohisa
1
2.5k
.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
350
DCB版のSekibanのコード、動作、ベンチマークのデモ/dcb sekiban code and benchmark
tomohisa
0
96
Other Decks in Technology
See All in Technology
AIをフル活用してオンコール機能のプロトタイプを2日で作った話 / Building an AI-Powered On-Call Prototype in Just Two Days
nari_ex
0
170
Tech-Verse 2026_Keynote
lycorptech_jp
PRO
0
130
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
130
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
340
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
0
190
5分でわかるDuckDB Quack
chanyou0311
4
310
『AIに負けない』より『AIと遊ぶ』」〜ワクワクが最強のテスト・QA学習戦略_公開用
odan611
1
370
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
1
1k
【FinOps】データドリブンな意思決定を目指して
z63d
3
600
AIに「使われる」時代のSaaS戦略 〜既存WebAPIのMCPサーバー化における開発ノウハウ〜
ekispert_api
0
280
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
300
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
360
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
170
Designing Experiences People Love
moore
143
24k
Raft: Consensus for Rubyists
vanstee
141
7.6k
How to make the Groovebox
asonas
2
2.3k
30 Presentation Tips
portentint
PRO
1
340
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
WENDY [Excerpt]
tessaabrams
11
38k
My Coaching Mixtape
mlcsv
0
160
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Why Our Code Smells
bkeepers
PRO
340
58k
Transcript
実践 Reacive Cocoa でMVVM @tomohisa Tomohisa Takaoka 2014.08.04 Swift&Obj-C&Xcode開発周り勉強会 - 0x03
[link] http://swifuku.connpass.com/event/7455/
None
डୗ։ൃ ʴ ΤϯλʔϓϥΠζ J-Tech Creations, Inc www.jtechs.com
前回発表 約1ヶ月新規プロダ クトに使用してみた!
ReactiveCocoaͱʁ Function Reactive Programming (FRP) ΛObjective-CͰ࣮ݱ͢ΔͨΊͷϑϨʔϜϫʔΫ https://github.com/ReactiveCocoa/ReactiveCocoa
関西のRAC勉強会! ここに必要な情報はほぼある! [link] http:// ninjinkun.hatenablog.com/entry/ 2014/08/03/204348 ReactiveCocoa勉強会関西を開催しました #rac_kansai - ninjinkun's
diary
MVC MVVM ViewControllerɺେ͖ͳҙຯͰͷ VʹؚΉ
• 分からないことが最初多い • 他の人が入りにくい(かも) • 謎挙動することが(たまに)ある cons
Pros • viewControllerがスッキリ • viewModelで複雑なことをやりやすい • 疎結合が綺麗に実現される • プログラムするのが楽しい(綺麗に出 来るので)
• 学習曲線が緩やかだけど、マスターす れば綺麗にはやく出来そう
Reacive Cocoa + MVVM 概観
ReactiveCocoa ≒ RACSignal ※特にRAC3.0以降 おおざっぱに言うと…
Signal subscribe sendError: sendCompleted: Subscriber sendNext: value ReactiveCocoa RACSignal のライフサイクル
Signal subscribe sendError: sendCompleted: Subscriber ReactiveCocoa RACSignal のライフサイクル sendNext: value
sendNext:(id)value はcomplete前は何度でも送れる
X Signal subscribe sendError: sendCompleted: Subscriber sendNext: value X ReactiveCocoa
RACSignal のライフサイクル subscribe前のsignalは届かない completed, error後はsignalのイン スタンスが無くなるのでsendNext: 出来ない。
Signalを作成する
Signalを購読(subscribe)する
Signalから値を変更する 2つの例は同じことをしている。 RAC(object, property) = RACSignal でnextの値をpropertyに 継続的に代入出来る
ReactiveCocoa がすごいのは ここから!
• sendNextの結果を受け取って次の処理 • Signalを連結して一つの処理に • sendNextにフィルタをかける • Signalのマージ などの面倒な処理を綺麗に書ける!
@matuyuji さんのスライドが良かった!
filter:
filter: signal subscriber sendNext:value filter: return NO; sendNext:value filter: return
YES; sendNext:value
flattenMap:
flattenMap: signal subscriber sendNext:value flattenMap: sendNext:value sendError:
flattenMap:のcompleted signal subscriber sendNext:value flattenMap: sendNext:value sendCompleted まだ、引き継いだsignalが動いているの で、subscriberにはcompletedを送らない 引き継いだsignalも
終わっているので completedを送る 基本的に意図した通 りに動くが結構めん どうな仕組み
MVVM
基本的には、 •VCに対応してViewModelを作る •ステータスなどはVMに持つ •VCはVMにバインドさせるか、単 純な表示機能だけ作る •Modelとも出来るだけ疎結合に し、入力中のデータは確定され るまでModelに反映させない
UITableViewはセルを再利用するのでバイン ドに向いていない viewModelに配列でデータを持たせて、 reloadする時にsendNext:が呼ばれる signalをviewModelに持たせて、あと は普通にセルを作る
takeUntil: のシグナルで、購読期間を指定する cellが再利用の準備に入ったら (再描画前を含む) 一度購読を終了することによって二重購読 などを防ぐ
RACCommand 複数回発生して、パラメーターをと るSignalを作成出来る。enabledを設 定することによって、実行の制限も かけられる。 基本的にはsignal UIButtonなどと連結出来るのが便利
RACScheduler UI変更がある時にメインスレッドでsignal を受け取ることを指定出来る。
時間があれば live coding
non-RAC RAC まとめ 習得に時間かかるけどメンテナンス性の良 いものができる
綺麗に出来た時に楽しい! すこしづつ組み込んでいったら 良いと思う!
おまけ#1 • ίʔσΟϯάϑΥϯτ • http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/rictydiminished.html
None
おまけ#2 Xcode Package Manager ϓϥάΠϯͷཧ http://alcatraz.io
CocoaPods マネージャー便利! コマンドたたく必要なし!
ϑΥϯταΠζΛ ⌘ʴ ⌘ʔ Ͱม͑ΒΕΔ
None
None
UIColor補助
None
[subscriber sendNext:@“Thank you!”]; ! ! //Any Question?