/BondSample

SwiftBondを使ったサンプルプロジェクトです。

Primary LanguageSwiftBSD 2-Clause "Simplified" LicenseBSD-2-Clause

BondSample

SwiftBondを勉強するために作ったサンプルプロジェクトです。 SwiftBond →https://github.com/SwiftBond/Bond

  • 1_HelloBond
    • Observable と map() と bindTo()だけを使って触ってみたサンプル
  • 2_PostQuestion
    • QAサイトに投稿する画面っぽいものを、SwiftBondで作ってみたサンプル

SwiftBondを触ってみての感想

記録としてのメモ書きです。飽きるまで増えていきます。

  • 画面のロジックを、「イベントの変換」として「繋げていく」やり方はとても良いと思う。

  • 簡単にbindTo()で繋げる事ができるため、ここが混線する事がある。

    • とくに1つのObservableに対して複数からbindTo()すると、どのEventで値が変わったのかがわかりにくくなる。
    • NSNotificationCenterを乱用した時と同じような複雑さが発生しうる。
    • また簡単にループも作れてしまう。最悪無限ループに陥る?
  • 混線しないように、設計段階での方針が重要になると思われます。

    • 主役のObservableを決め、他は「それに追従する」ようにした方が良さそう。王は二人要らない。
    • クラスのプロパティとして公開するObservableは最小にした方が良さそう
  • Observableについて

    • Observableは、「T型の値を保持し、新しい値が代入されたら通知を飛ばす」もの。
      • Tはいろいろ。StringやIntやMyEnum。Optional型も入る
      • 新しい値の代入は、Observable.next()で行う。
      • String型やInt型が、通知を飛ばしているわけではなくて、ラッピングしているObservableが飛ばしている。
    • Observableは、ありとあらゆる「変数」「プロパティ」として使えてしまうが、使いすぎると混乱する
      • クラスのプロパティにObservableを並べるのは、オススメしない。。。。混線して後悔しました。
  • 仕組みは、GoFのObserverパターンの派生系に見える。

    • GoFパターンの「Subject」がSwiftBondの「Observable」に該当? EventProducerかもしれない?
    • GoFパターンの「Subject」が、「Observer」の役割も持つので、繋げる事が出来ている?
  • まだ良くわかっていない事:

    • disposeBag()はまだ良くわかっていない。bindToで「配線した」ルールを「切断」するためのモノだと思うけど。
    • リアクティブプログラミングで「ストリーム」と呼ばれているモノは、SwiftBondで言うObservableに該当しそう。「時間軸」は.next()
    • 言葉の揺らぎ:田村的には、bindTo()やobserve()は「接続する」「配線する」という、ケーブルの配線に例えるのがしっくりきているが、この辺どうなのだろう?
  • これから調べていきたい:

    • Observable->map->bindTo した時と、イベントが発生した時に、どんな処理が行われるのか。
    • 用意されている変換(transform)のバリエーション(mapやfilter等など)
    • ObservableやEventProducerの関係。なんとなく「EventProducer」の方が重要な気がする。
    • 画面の「動き」にBondが使えるかどうか。アニメーションとか。

参考にしたページ