Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ご注文はRxですか? -RxSwiftを実際に導入してみた件-

2,280 views

Published on

道玄坂BeerBash#1 LT夏祭 CA系メディアサービス編( http://dogenzaka-beerbash.connpass.com/event/37072/ )での発表資料です。

Published in: Engineering
  • Be the first to comment

ご注文はRxですか? -RxSwiftを実際に導入してみた件-

  1. 1. - RxSwiftを実際に導入してみた件 -
  2. 2. 辰己 佳祐 Twitter:@TK_u_nya Github:cztatsumi-keisuke Qiita:Nietzsche • 所属 – 株式会社CyberZ OPENREC事業部 • 職種 – iOSエンジニア • 個人アプリ – AppStoreで「Keisuke Tatsumi」で検索検索ぅ〜♪
  3. 3. Agenda • はじめに • RxSwiftとは • RxSwiftだとこう書ける • RxSwiftを使ってみた結果
  4. 4. Agenda • はじめに • RxSwiftとは • RxSwiftだとこう書ける • RxSwiftを使ってみた結果
  5. 5. はじめに • なぜRxSwiftを使うことになったのか 1. 2. 3.
  6. 6. はじめに • なぜRxSwiftを使うことになったの? 1. 新規サービスの開発の話が来た 2. 3.
  7. 7. OPENREC Messenger • ゲーマー向け無料コミュニ ケーションアプリ • 一人で複数のプロフィールを 使える • AppStore、Google Play にて、ダウンロード よろしくお願いします!
  8. 8. はじめに • なぜRxSwiftを使うことになったの? 1. 新規サービスの開発の話が来た 2. 開発言語をSwiftに 3.
  9. 9. OPENRECでのiOS開発 • OPENREC.tv は Objective-C で開発 • Version 4.0 で大幅なリニューアルを行った • 今までの技術資産を使うのならそのままでも
  10. 10. OPENRECでのiOS開発 • OPENREC.tv は Objective-C で開発 • Version 4.0 で大幅なリニューアルを行った • 今までの技術資産を使うのならそのままでも ところが、、、
  11. 11. 最近のiOS界隈 「Objective-Cはゴミ箱へ」というツイート Objective-C から Swift への変換サービス
  12. 12. 最近のiOS界隈 「Objective-Cはゴミ箱へ」というツイート Objective-C から Swift への変換サービス 進むSwiftへの移行!
  13. 13. Swiftにしましょうか(ニッコリ )
  14. 14. はじめに • なぜRxSwiftを使うことになったの? 1. 新規サービスの開発 2. 開発言語をSwiftに 3. 流行に乗ろう
  15. 15. RxSwiftにピンッときたら • 最近よく「RxSwiftはいいぞ。」といった内容の 記事やスライドをよく目にする • 他社も導入しはじめている – ニコニコ漫画アプリ(ドワンゴ)、アッテ(メルカリ)、 ヤフオク!(ヤフー) など • RxSwiftの知見が増えてきている
  16. 16. 乗るしかない このビッグウェーブに! ー Butchさん
  17. 17. はじめに • なぜRxSwiftを使うことになったの? 1. 新規サービスの開発 2. 開発言語をSwiftに 3. 流行に乗ろう というわけで、、、
  18. 18. はじめに • なぜRxSwiftを使うことになったの? 1. 新規サービスの開発 2. 開発言語をSwiftに 3. 流行に乗ろう やっはろー !!! RxSwift World! というわけで、、、
  19. 19. Agenda • はじめに • RxSwiftとは • RxSwiftだとこう書ける • RxSwiftを使ってみた結果
  20. 20. RxSwiftとは • RxSwiftではなく、Rx + Swift = RxSwift – RxSwiftとは、RxのSwift版のこと • Rx = Reactive Extensionsの略 – イベントストリームを抽象化するライブラリ (メルカリのishkawaさんの表現をお借りしました) – 他にもいろんな言語のRxがある http://reactivex.io/ ロゴかっこいい → シャケかな? →
  21. 21. イベントストリームを抽象化するライブラリ
  22. 22. (´・ω・`)ちょっと何言ってるかわかんない イベントストリームを抽象化するライブラリ
  23. 23. イベントストリームとは × 受け取った値 エラー 完了開始 マーブル図によるストリームのイメージ 時間 • 流れのイメージは「川」 • 川から流れてくるのは値、エラー、完了の3種類 • 値のみ必要な場合はエラーと完了は無視することもできる
  24. 24. RxSwiftはこの川を監視する
  25. 25. 何をストリームにできるの? • UIイベント • KVO • デリゲートメソッドの呼び出し • 文字列 などなど… ほぼ全てストリームにできます!
  26. 26. ex.1)UIButtonのタップ タップ 時間 タップ 時間差で2回タップしたでござるの巻
  27. 27. ex.2)UITextFieldのテキストの変化 a ab aを入力 時間 bを入力 時間差で文字を入力したでござるの巻 a bを削除
  28. 28. Ex.3)UITableViewの生成 セルのアイテム数を取得 時間 セルそのものを取得 テーブルを作りたいでござるの巻 テーブルの更新
  29. 29. では、実際に書くとどうなる?
  30. 30. Agenda • はじめに • RxSwiftとは • RxSwiftだとこう書ける • RxSwiftを使ってみた結果
  31. 31. ex.1)UIButtonのタップ
  32. 32. ex.1)UIButtonのタップ ① ② ①:@objc を付けなければならない ②:メソッドとして分ける必要がある
  33. 33. ex.1)UIButtonのタップ ①:@objc を付けなくてもよい! ②:メソッドとして分ける必要がない!
  34. 34. ex.2)UITextFieldのテキストの変化
  35. 35. ex.2)UITextFieldのテキストの変化 ① ② ③ ①:デリゲートを宣言しなければいけない ②:デリゲートを設定しなければいけない ③:デリゲートメソッドを使って検知する必要がある
  36. 36. ex.2)UITextFieldのテキストの変化 ①:デリゲートを宣言しなくてよい! ②:デリゲートを設定しなくてよい! ③:デリゲートメソッドとかいらないね!
  37. 37. Ex.3)UITableViewの生成
  38. 38. Ex.3)UITableViewの生成 ① ② ③ ①:デリゲートを宣言しなければいけない ②:デリゲートを設定しなければいけない ③:デリゲートメソッドを使って検知する必要がある
  39. 39. Ex.3)UITableViewの生成 ①:デリゲートを宣言しなくてよい! ②:デリゲートを設定しなくてよい! ③:デリゲートメソッドとかやっぱりいらないね!
  40. 40. RxSwiftすごすぎないですか?
  41. 41. RxSwift使ってみたくなりません?
  42. 42. Agenda • はじめに • RxSwiftとは • RxSwiftだとこう書ける • RxSwiftを使ってみた結果
  43. 43. RxSwiftを導入した結果 短所 • 学習コストは高め – 慣れるためにチーム内で勉強会を開いたり、情 報共有用のスプレッドシートを作成したりしました • ビルドに少し時間がかかる – たまに補完が狂ってコードのハイライトが真っ黒 になるときもある • アプリのバイナリサイズは10MBほど増える
  44. 44. RxSwiftを導入した結果 長所 • 慣れれば超便利 – 使えるようになると、手放せなくなりそう • ストリームで監視するため、フラグが減った – OPENREC.tvの開発時には多数生成していた状態 保持用のフラグがほぼ不要になった • コードの可読性が上がった – デリゲートやボタンの反応など、メソッドの目移り をする必要がなくなった
  45. 45. 結果的には導入して正解!
  46. 46. みなさんもRxSwiftで楽しませんか?
  47. 47. 以上です! ご静聴ありがとうございました!

×