iOS
MVVM
Swift
RxSwift

第2回RxSwift勉強会 @ Sansan ブログまとめ枠 #RxSwift_Sansan

More than 1 year has passed since last update.

第2回RxSwift勉強会 @ Sansanにブログまとめ枠で参加して参りましたので、まとめさせて頂きます。

私のスキル的には、RxSwiftの資料をいくつか読んでおり、RxRealmを使用して軽くコードを書いたぐらいで、実アプリに本格導入している状態ではありません。

なお、ブログまとめ枠は2名ありまして、他の方が先に記事を書かれたいのでご紹介致します。
第2回RxSwift勉強会 @ Sansan参加レポート
※ 下の名前が一緒でびっくりしました

ブログまとめ枠ではない、参加者さんのレポートが投稿されていたのでご紹介致します🙋
http://colorbox.hateblo.jp/entry/2016/08/20/011739

RxExampleから学ぶ!RxSwift

@kazu0620さんの発表です。
所属会社であるSansan株式会社さんではEightなどのアプリを公開しているようです。
個人でもヒミツのアルバムにゃんこタウンを公開中されています。

内容は、RxExampleを解説して頂ける内容でした。

RxExampleには、シンプルなサンプルからMVVMの使用例を示すような複雑な内容まで幅広く含まれます。RxExampleはRxSwiftをどのように使って欲しいかを説明してくれる良い資料です。

bindToの中身はsubscribeしてハンドリングしているのと同じというのが印象的でした。推測ですが、bindToのように中身がsubscribeを使っているメソッドが幾つかあり、その場合はsubscribeと同様に呼び出すとそれまでのメソッドを実行してしまうという所は気をつけなくてはならなさそうです。

学習しているとよく出てくる、DisposeBagとshareReplyの話もありました。特にshareReplyは、一件動くけど、パフォーマンスに影響があるポイントなので注意が必要そうです。shareReplyについては、発表者の方がコードレビューの時に特に気をつけるようにという話もありました。

Controllerは何をやるの?

  • Viewのライフサイクル(遷移とか)を管理する
  • ViewとViewModelを繋ぐ

※ ViewModelはviewをbindできるだけ、DisposeBagは保持しない


Driverよくわからなかったけど今回の勉強会で明確になった。
端的にいって、UIパーツをbindするもの。
メインスレッドで実行、エラーを出力しない、複数Viewをbindしても1つのSubscriptionが生成される(hot変換)
https://twitter.com/hatakenokakashi/status/766593558904045568


公式のPlayroundはちゃんと見とくと基礎が身につきそう
https://twitter.com/color_box/status/766588761782104064


Reactive Extension

@dbank0208さんの発表です。
フリーランスとして、受託などをされて活動しているそうです。

発表資料は公開されていないようでしたので、一部Twitterの声をまとめさせて頂きます。


Hotはストリームを稼働させる性質
https://twitter.com/ZuQ9Nn/status/766595846376869888


ColdはSubscribeされるまで動作しない性質
https://twitter.com/ZuQ9Nn/status/766595943135182850


APIを実行しDBに入れて表示する処理を140ステップなので、可読性、保守性が上がる #RxSwift_Sansan
https://twitter.com/ZuQ9Nn/status/766597654545506304


RxSwiftで作るAPIラッパーのパターン

@muratayusukeさんの発表です。

所属されている会社ではBEST10Travelersを公開されているようです。
個人ではMultiTeam for Slackを公開されています。

発表内容では、作成中のTravelersのiOS版をRxSwiftを使いWebAPIと連携した事をお話頂きました。

実に20個ほどのAPIがあると伺いました。これらをうまく束ねるのにRxSwiftの機構が役立ったとのことです。私もRxSwiftを学んで真っ先に思ったのは、このように入力が多いものを束ねて簡単にViewに反映できそうだと言うことでした。そこが一致していて理解がより深まりました。

最初の発表のRxExampleから学ぶ!RxSwiftではRxExampleをつかって基礎的な部分を紹介いただいたのに対して、実際にAPIと組み合わせるとどうなるのかとか、実際に組み合わせてみた実例を紹介頂いたのが面白いと思いました。

余談ですが個人的にはControllerの"C"の下になんかニョロが見えて気になるwがすごく気になりました。

とりあえず投稿機能に ViewModelを 使ってみるための知識🏄🏻

@yuzushiohさんの発表です。これまでの話でも出てきたViewModelの話に着目することにより、MVVMとRxSwiftの関係をより理解を深められる発表でした。

株式会社ソウゾウに入社(インターン)しているそうです。
株式会社ソウゾウはメルカリ アッテを公開している会社さんって感じでしょうか。
なんと未成年なので、打ち上げの🍺が禁止でした!お若いですね。

話の中で特に気になったのは、ViewとViewModelを双方Bindingして利用しているそうです。設計次第ではあるのですがと思うのですが、個人的に双方BindingされているJavaScript系のライブラリを触った経験から、確かにiOSでも双方できると便利そうだと感じました。

質疑応答でメルカリ アッテは、ほぼViewとViewModel方式(MVVMかな)で書かれていると聞き、純粋に凄いなと思いました。

さいごに

発表者のみなさまのおかげでRxSwiftへの理解が深まりました。また、他の方のそのような声もTwitterに投稿されておりました。本当にありがとうございました。

今作っている自分のアプリにもRxSwiftを導入予定です。また、何か発表できることがありましたら私も公開していきたいと考えています。

一部、質疑応答がRxSwiftの理解が深くないため、まとめに含めることが出来ませんでした。以下のような話だったかと思っております。

  • TableViewCellの複雑なケースの対応?
  • publish subject or driver(driver in driverを避けたい?)
  • BoolとObservableの使い分け?

もし、補足していたくことが可能でしたら、編集リクエストまたはコメントいただけますと幸いです。

本日は、発表者の皆さま、会場をお貸し頂きましたSansan株式会社さま、誠にありがとうございました🙇