3/2 毎日リアクティブ #tryswiftconf
try!Swiftのセッションまとめシリーズです。Agnes Vasarhelyiさんの「Everyday Reactive」についての記事になります。
資料
内容
Reactive programming manages asynchronous data flows between sources of data and components that need to react to that data. MATT GALLAGHER, COCOAWITHLOVE.COM
- データソースの非同期データ管理をするのがリアクティブ
- リアクティブなパラダイムを用いると何が良いか
- ステートを減らすことができる
- ステートが多いとエラーが多くなりうる
- howではなくwhatで書くことができる
- ステートを減らすことができる
- 何を使えばリアクティブなコードを書けるのか
- ReactiveKit, ReactiveSwift,ReactiveCocoaなどいろいろある
- 背後にあるアイディアは同じ
- 1回学べば少なくとも見覚えがある、という状態にできる
- いつ自分のプログラムに適用するのか
- ある時点まではリアクティブにすると複雑になるが、それを過ぎれば複雑さがなくなる
- どこに適用するのか
- 非同期通信、MVVMなど
- データストリム上でやり取りされている値を観測するというパターンが良く使われている
- リアクティブにするとパターン数が削減できる
- トランスフォーム、結合によってできる簡素化について
- 問題
- 1.デバッグ
- コールスタックはいいお友達ではない
- 何が起きたかを正確に把握できない
- そのため、一定のストリームに疑いがあるときイベントストリームにコンソールログを仕込む
- 2.Fancy KVO
- 全てのリアクティブはパフォーマンスも落ちてしまう
- オブザベーションをマニュアルで直すとリアクティブを使う意味がなくなる
- 3.副作用を丁寧に扱う
- 4.カオスは避けられない
- 必要がないところでも入れようとしてしまった
- いつでも役に立つわけではないということを念頭に置くこと
- 非常に複雑なネットワーク処理をシンプルにする
- 一つの変化が起こっただけで1人の人間が対応できないようなものにならないように
- 1.デバッグ
- リアクティブプログラムの展望
- よりシンプルにできるところで使っていく
Q&A
新しいデベロッパーを雇う時、それに関して問題があったことがありますか?
- 大変な時期もあった
- リアクティブなコードを全く見たことがない人は学ぶのは楽ではない
- だがキャッチアップして追いつくことができる
- コミュニティの中でもリアクティブを試す人が増えている
全てのリアクティブなライブラリがリストされていたが使っているのはどれ?
- いろいろ試したけど自分たちで実装したものを使っている
関連リンク
- 引用文中の筆者が作ったリアクティブプログラミングフレームワーク
その他このトークに関する情報源
- 毎日リアクティブ | try! Swift Tokyo 2017 #tryswiftconf Day1-6 聞き起こし - niwatakoのはてなブログ
- [速報レポート] try! Swift TOKYO 2017 1日目 午後I #tryswiftconf | Developers.IO
- try! Swift 2017 Tokyo に参加してきた - 2. 1日目 - My Favorite Things - Coding or die.