Edited at

RxSwift ファーストインプレッション

More than 3 years have passed since last update.


RxSwift ファーストインプレッション


はじめに

以前触ったことがあったObjective-C製のReactiveなライブラリとしてReactiveCocoa(RAC)がありますがObjective-Cで書かれてることもあって、マクロごりごりで組まれていてSwiftで書くとあまり書きやすいイメージがありませんでした。

なので今回は、よりSwiftの世界に歩み寄ったReactiveなライブラリということでRxSwiftを体験してみました。


そもそもRxSwiftとは?

6407041.png

RxSwiftとはReactiveX (Reactive Extensions)のSwift実装のライブラリで、よく名前を耳にするReactiveProgramming(RP)をSwiftの世界で実現してくれるものです。

ReactiveXはSwiftだけでなく様々なプログラミング言語でライブラリが存在しており、他のプラットフォームでもその概念を持ち込むことが可能です。


各プログラミング言語ごとのRxライブラリ一覧

Language
Library

Java
RxJava

JavaScript
RxJS

C#
Rx.NET

C#(Unity)
UniRx

Scala
RxScala

Clojure
RxClojure

C++
RxCpp

Ruby
Rx.rb

Python
RxPY

Groovy
RxGroovy

JRuby
RxJRuby

Kotlin
RxKotlin

Swift
RxSwift


開発環境


  • iOS 8.4

  • Xcode 6.4


Cocoapods

今回はサクッとRxSwiftを入れたかったのでCocoapodsを利用していきます。

なので以下のようなPodfileを作成しました、RxSwiftはdynamic libraryなのでuse_frameworks!を忘れないようにします。


Podfile

# Uncomment this line to define a global platform for your project

platform :ios, '8.0'
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!

pod 'RxCocoa'
pod 'RxSwift'


Podfileの作成が済んだら、作成したディレクトリで以下インストール用のコマンドをターミナルで叩きます

pod install


Playground

動かすのもサクッといきたいのでPlaygroundでRxSwiftを利用できるように環境を作っていきます

Cocoapodsの準備が終わっているならば以下のようなファイル構成になっているはずなのでxcworkspaceを開きます

スクリーンショット 2015-08-24 15.31.14.png

Xcodeが起動したらメニューから、File > New > File...の順で項目を選択

Playgroundを選択してファイル名を入力して追加します

ファイルの追加まで完了したならば追加したPlaygroundにRxSwiftとRxCocoaをimportします


Playground

import RxSwift

import RxCocoa

この段階でエラーが出てなければ開発環境の導入は完了です


RxSwiftを体験

var a = 1

var b = a + 1
a = 10 // aを書き換える
println(b) // => 11

Reactive Programmingの説明でよく使われる上記の例を実際にそうなるのかRxSwiftで書いてみます。


Playground

let a = Variable(1)

let b = combineLatest(a, Variable(1), +)

var ret: Int = 0
b >- subscribeNext { next in
ret = next
}

println(ret) // => 2

a.next(10) // aを書き換える

println(ret) // => 11


aに対して加えた変更が計算結果に影響を与えていることが分かるので、Reactiveに動いてると言えますね。

今回動かしたサンプルをGitHubに挙げてます、リンクはこちら

(サンプルの方で確認したいときはCloneしてきて、ディレクトリ内でpod installすれば確認できます)


おわりに

ReactiveX、RxSwiftともにまだまだ初学者ですが、RPを使いこなしてコードが組めるようになるとプログラマとして次のステップに行けるような気がしています。

あと単純に触っていて面白いので試しに遊ぶ分でも十分楽しめると思います、是非体験してみてください。


Reactive Programmingについての参考リンク一覧