はじめに
第1章 RxSwift入門
第2章 RxSwiftの導入
第3章 RxSwiftの基本的な書き方
第4章 比較しながら、簡単なアプリを作ってみよう!
第5章 さまざまなRxSwift系ライブラリー
第6章 次のステップへ
著者紹介
この本を手にとって頂き、ありがとうございます。
本書では「比較して学ぶ」をテーマに、callback、delegate、KVO、RxSwiftそれぞれを使った実装パターンを比較しながら、RxSwiftについて解説します。
解説は、RxSwiftをまったく触ったことのない人に向けて、その思想・歴史から基礎知識、よく使われる文法、実際にアプリの部品としてどう書くかまで、できるだけわかりやすく説明しています。
RxSwiftは2016年頃にiOSアプリ開発者の間で一気に普及し、2018年現在ではいわゆる「イケてる」アプリのほとんどがRxSwift(もしくはReactiveSwift)を採用しています。……若干主語が大きいですが、筆者の観測範囲の中ではそれくらいあたりまえのように使われています。(もちろん使われていない現場もありますよ)
しかし、その概念を習得するためには学習コストが高く、iOSアプリエンジニアになってから日の浅い人にとっては、高い壁になっているのではないかと感じます。
筆者も開発者としてキャリアが浅かった頃は、Google検索で出てきた技術ブログやQiitaの解説記事、RxSwiftのリポジトリー内のドキュメントなど、各メディアに分散している知見を参照しながら実装しており、「RxSwiftを体系的に日本語で学べる解説書が無いかなー、あったら楽だなー。」と思いながら、試行錯誤してコードを書いていました。
本書はそんな過去の自分と、これからRxSwiftについて学びたい方に向けて体系的に学べるコンテンツを提供したいという思いから生まれました。この本を読んで、RxSwiftの概念がわかった!理解がもっと深まった!完全に理解した!RxSwiftチョットデキル!となって頂けたら幸いです。
本書は次の読者を対象としています。
・SwiftによるiOSアプリの開発経験が少しだけある(3ヶ月〜1年未満)
・RxSwiftライブラリーを使った開発をしたことがない・ほんの少しだけある
Swiftの基礎知識やiOSアプリ開発における基礎知識については、本書では解説しません。
・Swiftの基本的な言語仕様
─if、for、switch、enum、class、struct
─よく使われる高階関数の扱い(mapやfilterなど)
・Xcodeの基本的な操作
・よく使われるUIKitの大まかな仕様
─UILabel、UITextView、UITableView、UICollectionView
以下を知っておくとより理解が進みます。
・設計パターン
─MVPアーキテクチャ
─MVVMアーキテクチャ
・デザインパターン
─delegateパターン
─KVOパターン
─Observerパターン
・OSX High Sierra
・Xcode 10
・Swift 4.2
・cocoapods 1.5.3
─https://twitter.com/k0uhashi
・サンプルリポジトリは「第5章 簡単なアプリを作ってみよう!」と「第6章1節 さまざまなRxSwift系ライブラリ - RxDataSources」のみ用意しています。その他の章・節は用意しておりませんので予めご了承下さい。
・第5章 簡単なアプリを作ってみよう!
─https://github.com/ios-app-yaru/rxswift4-section05
・第6章1節 さまざまなRxSwift系ライブラリ - RxDataSources
─https://github.com/ios-app-yaru/rxswift04-section06
本書に関するツイートはハッシュタグ『#比較して学ぶRxSwift』を付与してのツイートをお願いします。感想、批評、何でも良いのでつぶやいて頂けると作者が喜びます!
本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。
本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。
本書籍は、技術系同人誌即売会「技術書典5」で頒布されたものを底本としています。
現在のiOSアプリ開発は、ほぼSwift一択という状況ではないでしょうか?
Swiftの登場によって、Objective-Cより強い静的型付け・型推論の恩恵を借りて安全なアプリケーションを作ることができるようになりました。また、Storyboard機能の充実によりUIの構築が楽になり、今では初心者でも簡単にiOSアプリを開発できます。
しかし、簡単に開発できるようになったと言っても、まだいくつかの問題があります。たとえば、「複雑な非同期処理を実装した場合、callback地獄で読み辛くなってしまう」「処理の成功・失敗の制御が統一しにくい(例:通信処理)」などです。
これらを解決するひとつの方法が、RxSwift(リアクティブプログラミング)の導入です。
具体的にどう解決できるのか、簡単なサンプルを見ながら学んでいきましょう!
・Reactive Extensions
─「オブザーバーパターン」「イテレータパターン」「関数型プログラミング」の概念を実装したインターフェース。
・オブザーバーパターン
─プログラム内にあるオブジェクトのイベント(事象)を、他のオブジェクトへ通知する処理で使われるデザインパターンの一種。
・RxSwift
─Reactive Extensionsの概念をSwiftで扱えるようにした拡張ライブラリー。
・RxCocoa
─Reactive Extensionsの概念をUIKitで扱えるようにした拡張ライブラリー。RxSwiftと一緒に導入されることが多い。
RxSwiftとは、Microsoftが公開した.NET Framework向けのライブラリーである「Reactive Extensions」の概念をSwiftでも扱えるようにした拡張ライブラリーで、GitHub上でオープンソースライブラリーとして公開されています。
同じくReactive Extensionsの概念を取り入れた「ReactiveSwift」というライブラリーも存在しますが、本書ではこれには触れず、RxSwiftにのみ焦点を当てて解説していきます。
Reactive Extensionsの詳細については後述しますが、RxSwiftを導入することによって、非同期操作とイベント/データストリーム(時系列処理)の実装が容易になります。