Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
初めてのRxSwift
2016/09/27 Ivan Luque
株式会社ガラパゴス
whoami
Ivan Luque
株式会社ガラパゴス
iOS / Androidエンジニア
たまにRailsエンジニア
前職はバルセロナ地下鉄S.A.の遠隔制御システムのPM
About Galapagos
● スマートフォンアプリの受託開発の会社です!
● https://www.glpgs.com
● 技術:
○ プラットフォーム:iOS, Android, Rails, Windows …
○ 言語:Swift...
自社アプリ
Start fit うごく猫
運動習慣支援アプリ
iPhone, AppleWatch
猫好きホイホイアプリ
iPhone
ひっそり30万DL ニャー
RxSwiftって何?
元々Microsoftが.NET言語で開発したReactive Extensionsという
非同期イベントベースプログラミングフレームワークです。
Rx.NETと呼ばれて、それから色々な言語にポートされました。
RxJS...
Reactive Programmingって何?
Reactive Programmingは非同期データストリームのプログラミング
に加えて関数型系のmap/filter/reduceなどが使えて
快適に非同期処理ができるようになるというプログ...
ストリームってよくわからない…
別の言い方でいうと、経時的なイベントは配列と同じように扱うことができる。
従来とReactiveの比較
従来プログラミング
● 命令型
● コントロールフロー
● ステータス
● ミュータブル
欠点
● 非同期処理の場合はあらゆるスレッドがス
テータスを更新して一貫性を守るのが難しい
Reactiveプログラミング
...
欠点
ハードルが高い
● プログラミングのやり方が変わります
○ 関数型
○ ストリームやObservableなど新しい概念
● オペレーターが多い
○ https://github.com/ReactiveX/RxSwift/blob/rxs...
例)
こういう要件でアプリを作るとなると。。
● テキストフィールドに入力した時に、
● 0.3秒の間はタップしてない場合、
● テキストフィールドに変化があった場合
● APIを叩く
● 結果をUITableViewで表示する
● エラーの場...
従来の場合…
通常のアプリなら
● テキストフィールドのdelegate
● タイマーのハンドリング
● 以前入力されたテキストを覚える
● APIの結果のハンドラー
● エラーハンドリング
あっちこち色々管理しないといけないことたくさんあるよ...
テキストが検索バーに入力されたら
イベントが発信される
0.3秒の間に新しいイベントがなかっ
たら最後のイベントを発信
前回と同じ文字列は検索しないよう
に
解説
リクエストの途中だったらキャンセルして
新しいリクエストを投げる
検索テキストは空の場合は空の配
列を返す
API叩く。エラーの場合は空の配列
を返す
UIを更新するのでメインスレッドで観
察
解説
→ この段階では宣言だけで、まだ実行されませ...
Observable(観察可能)
更新のイベントが来たら Cellを更新
する。
bindToが呼ばれるタイミングで APIリ
クエストが実行されます。
メモリ管理
RxSwift以外のReactive系フレームワーク
● ReactiveCocoa
○ Rxにインスパイアされた歴史長いフレームワーク
○ Objective-Cで開発されてSwiftに乗り換えました
● ReactKit
○ 日本製Reac...
なぜRxSwiftを選んだのか
● 弊社ではiOS/Android両方を開発するので。。
○ クロスプラットフォーム
○ AndroidはRxJavaで!
● ドキュメントが充実している
○ RxSwiftのドキュメントに情報が足りなくても R...
非同期処理が楽
開発が楽しくなる
初期投資のコストが高い
「Rx無しでは生きられない身体に調教されてきた」
まとめ
最後に
● ガラパゴスはエンジニアを募集しています
○ 最先端の技術に興味がある
○ ものづくりが好きだ
○ 難しい課題に挑戦したい
○ フレックスで自由に働きたい
○ などなど
● 一つでも当てはまる方!是非一緒に働きましょう!!
ご静聴ありがとうございました
初めてのRxSwift
Próxima SlideShare
Cargando en…5
×

初めてのRxSwift

820 visualizaciones

Publicado el

RxSwiftという非同期イベントベースプログラミングフレームワークの紹介です。
2016年9月27日に開催された第二回Tech Talkのスライドになります。
Tech Talkとは、「モノ」をつくることにこだわりのあるLIG/ソニックムーブ/ガラパゴス3社が主催する技術者向けの勉強会です。

Publicado en: Software
  • Sé el primero en comentar

初めてのRxSwift

  1. 1. 初めてのRxSwift 2016/09/27 Ivan Luque 株式会社ガラパゴス
  2. 2. whoami Ivan Luque 株式会社ガラパゴス iOS / Androidエンジニア たまにRailsエンジニア 前職はバルセロナ地下鉄S.A.の遠隔制御システムのPM
  3. 3. About Galapagos ● スマートフォンアプリの受託開発の会社です! ● https://www.glpgs.com ● 技術: ○ プラットフォーム:iOS, Android, Rails, Windows … ○ 言語:Swift, Java, Ruby, Python … ○ その他:ディープラーニング , IoT …
  4. 4. 自社アプリ Start fit うごく猫 運動習慣支援アプリ iPhone, AppleWatch 猫好きホイホイアプリ iPhone ひっそり30万DL ニャー
  5. 5. RxSwiftって何? 元々Microsoftが.NET言語で開発したReactive Extensionsという 非同期イベントベースプログラミングフレームワークです。 Rx.NETと呼ばれて、それから色々な言語にポートされました。 RxJS, RxJavaなどあって、去年からRxSwiftもあります!
  6. 6. Reactive Programmingって何? Reactive Programmingは非同期データストリームのプログラミング に加えて関数型系のmap/filter/reduceなどが使えて 快適に非同期処理ができるようになるというプログラミングパラダイム。 ● データやイベント何でもストリームです。 ● 流れてくるデータはどう処理されるかを宣言する。 ● データやイベントが発生した時に宣言された挙動が実行される。 → 全く新しい世界観です!
  7. 7. ストリームってよくわからない… 別の言い方でいうと、経時的なイベントは配列と同じように扱うことができる。
  8. 8. 従来とReactiveの比較 従来プログラミング ● 命令型 ● コントロールフロー ● ステータス ● ミュータブル 欠点 ● 非同期処理の場合はあらゆるスレッドがス テータスを更新して一貫性を守るのが難しい Reactiveプログラミング ● 宣言型 ● ストリームはすべて ● ステータスなどない ● イミュータブル →非同期処理は簡単! 欠点 ● 学習は困難
  9. 9. 欠点 ハードルが高い ● プログラミングのやり方が変わります ○ 関数型 ○ ストリームやObservableなど新しい概念 ● オペレーターが多い ○ https://github.com/ReactiveX/RxSwift/blob/rxswift-2.0/Documentation/API.md ● Hot / Cold Observablesがわかりにくい ○ 観察しなくてもイベントが発信されるかどうか ○ 間違えると不具合の原因になる
  10. 10. 例) こういう要件でアプリを作るとなると。。 ● テキストフィールドに入力した時に、 ● 0.3秒の間はタップしてない場合、 ● テキストフィールドに変化があった場合 ● APIを叩く ● 結果をUITableViewで表示する ● エラーの場合は何も表示しない
  11. 11. 従来の場合… 通常のアプリなら ● テキストフィールドのdelegate ● タイマーのハンドリング ● 以前入力されたテキストを覚える ● APIの結果のハンドラー ● エラーハンドリング あっちこち色々管理しないといけないことたくさんあるよね。 →死ぬ
  12. 12. テキストが検索バーに入力されたら イベントが発信される 0.3秒の間に新しいイベントがなかっ たら最後のイベントを発信 前回と同じ文字列は検索しないよう に 解説
  13. 13. リクエストの途中だったらキャンセルして 新しいリクエストを投げる 検索テキストは空の場合は空の配 列を返す API叩く。エラーの場合は空の配列 を返す UIを更新するのでメインスレッドで観 察 解説 → この段階では宣言だけで、まだ実行されません!
  14. 14. Observable(観察可能) 更新のイベントが来たら Cellを更新 する。 bindToが呼ばれるタイミングで APIリ クエストが実行されます。 メモリ管理
  15. 15. RxSwift以外のReactive系フレームワーク ● ReactiveCocoa ○ Rxにインスパイアされた歴史長いフレームワーク ○ Objective-Cで開発されてSwiftに乗り換えました ● ReactKit ○ 日本製Reactive Programming ● ReactiveKit ○ Rxに近くて使いやすそう ● Interstellar ○ ライトウエイト
  16. 16. なぜRxSwiftを選んだのか ● 弊社ではiOS/Android両方を開発するので。。 ○ クロスプラットフォーム ○ AndroidはRxJavaで! ● ドキュメントが充実している ○ RxSwiftのドキュメントに情報が足りなくても ReactiveX.ioを見ればあるかもしれません ● コミュニティは大きい ○ StackOverflowなどすでに情報が多い ○ Rx化したライブラリーが多い( RxAlamofire, RxCoreDataなどなど)
  17. 17. 非同期処理が楽 開発が楽しくなる 初期投資のコストが高い 「Rx無しでは生きられない身体に調教されてきた」 まとめ
  18. 18. 最後に ● ガラパゴスはエンジニアを募集しています ○ 最先端の技術に興味がある ○ ものづくりが好きだ ○ 難しい課題に挑戦したい ○ フレックスで自由に働きたい ○ などなど ● 一つでも当てはまる方!是非一緒に働きましょう!!
  19. 19. ご静聴ありがとうございました

×