とりあえずやってみればいいじゃん

読者です 読者をやめる 読者になる 読者になる

とりあえずやってみればいいじゃん

エンジニア関連のことについてつらつら書くブログ

3/2 毎日リアクティブ #tryswiftconf

iOS カンファレンス try!Swift Swift

try!Swiftのセッションまとめシリーズです。Agnes Vasarhelyiさんの「Everyday Reactive」についての記事になります。

資料

内容

  • Ustreamの人
  • 安定していて可読性の高いものを心がけている
  • 楽しいからリアクティブで書いている
  • いくつかのパラダイムを意図的にミックスしていて様々なパターンで書いている
  • リアクティブの説明
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で書くことができる
  • 何を使えばリアクティブなコードを書けるのか
  • いつ自分のプログラムに適用するのか
    • ある時点まではリアクティブにすると複雑になるが、それを過ぎれば複雑さがなくなる
  • どこに適用するのか
    • 非同期通信、MVVMなど
    • データストリム上でやり取りされている値を観測するというパターンが良く使われている
  • リアクティブにするとパターン数が削減できる
  • トランスフォーム、結合によってできる簡素化について
  • 問題
    • 1.デバッグ
      • コールスタックはいいお友達ではない
      • 何が起きたかを正確に把握できない
      • そのため、一定のストリームに疑いがあるときイベントストリームにコンソールログを仕込む
    • 2.Fancy KVO
      • 全てのリアクティブはパフォーマンスも落ちてしまう
      • オブザベーションをマニュアルで直すとリアクティブを使う意味がなくなる
    • 3.副作用を丁寧に扱う
    • 4.カオスは避けられない
      • 必要がないところでも入れようとしてしまった
      • いつでも役に立つわけではないということを念頭に置くこと
      • 非常に複雑なネットワーク処理をシンプルにする
      • 一つの変化が起こっただけで1人の人間が対応できないようなものにならないように
  • リアクティブプログラムの展望
    • よりシンプルにできるところで使っていく

Q&A

  • 新しいデベロッパーを雇う時、それに関して問題があったことがありますか?

    • 大変な時期もあった
    • リアクティブなコードを全く見たことがない人は学ぶのは楽ではない
    • だがキャッチアップして追いつくことができる
    • コミュニティの中でもリアクティブを試す人が増えている
  • 全てのリアクティブなライブラリがリストされていたが使っているのはどれ?

    • いろいろ試したけど自分たちで実装したものを使っている

関連リンク

その他このトークに関する情報源

togetter

Everyday Reactive #tryswiftconf - Togetterまとめ