目次

はじめに

対象読者
必須知識
推奨知識
想定環境
本書に関するお問い合わせ先
サンプルリポジトリ
ツイート
免責事項
表記関係について
底本について

第1章 RxSwift入門

1.1 iOSアプリ開発とSwift
1.2 最初に覚えておきたい用語と、1行解説
1.3 RxSwiftって何?
1.4 Reactive Extensionsって何?
1.5 リアクティブプログラミングとは?
1.6 RxSwiftの特徴
1.7 RxSwiftは何が解決できる?

第2章 RxSwiftの導入

2.1 導入要件
2.2 導入方法

第3章 RxSwiftの基本的な書き方

3.1 メソッドチェーンのように直感的に書ける
3.2 Hello World
3.3 よく使われるクラス・メソッドについて
3.4 HotなObservableとColdなObservable

第4章 比較しながら、簡単なアプリを作ってみよう!

4.1 カウンターアプリを作ってみよう!
4.2 WebViewアプリを作ってみよう!

第5章 さまざまなRxSwift系ライブラリー

5.1 RxDataSources
5.2 RxKeyboard
5.3 RxOptional

第6章 次のステップへ

6.1 開発中のアプリに導入
6.2 コミュニティへの参加
6.3 その他の参考URL・ドキュメント・文献

著者紹介

はじめに

 この本を手にとって頂き、ありがとうございます。

 本書では「比較して学ぶ」をテーマに、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

本書に関するお問い合わせ先

 ・Twitter

  ─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」で頒布されたものを底本としています。



第1章 RxSwift入門

1.1 iOSアプリ開発とSwift

 現在のiOSアプリ開発は、ほぼSwift一択という状況ではないでしょうか?

 Swiftの登場によって、Objective-Cより強い静的型付け・型推論の恩恵を借りて安全なアプリケーションを作ることができるようになりました。また、Storyboard機能の充実によりUIの構築が楽になり、今では初心者でも簡単にiOSアプリを開発できます。

 しかし、簡単に開発できるようになったと言っても、まだいくつかの問題があります。たとえば、「複雑な非同期処理を実装した場合、callback地獄で読み辛くなってしまう」「処理の成功・失敗の制御が統一しにくい(例:通信処理)」などです。

 これらを解決するひとつの方法が、RxSwift(リアクティブプログラミング)の導入です。

 具体的にどう解決できるのか、簡単なサンプルを見ながら学んでいきましょう!

1.2 最初に覚えておきたい用語と、1行解説

 ・Reactive Extensions

  ─「オブザーバーパターン」「イテレータパターン」「関数型プログラミング」の概念を実装したインターフェース。

 ・オブザーバーパターン

  ─プログラム内にあるオブジェクトのイベント(事象)を、他のオブジェクトへ通知する処理で使われるデザインパターンの一種。

 ・RxSwift

  ─Reactive Extensionsの概念をSwiftで扱えるようにした拡張ライブラリー。

 ・RxCocoa

  ─Reactive Extensionsの概念をUIKitで扱えるようにした拡張ライブラリー。RxSwiftと一緒に導入されることが多い。

1.3 RxSwiftって何?

 RxSwiftとは、Microsoftが公開した.NET Framework向けのライブラリーである「Reactive Extensions」の概念をSwiftでも扱えるようにした拡張ライブラリーで、GitHub上でオープンソースライブラリーとして公開されています。

 同じくReactive Extensionsの概念を取り入れた「ReactiveSwift」というライブラリーも存在しますが、本書ではこれには触れず、RxSwiftにのみ焦点を当てて解説していきます。

 Reactive Extensionsの詳細については後述しますが、RxSwiftを導入することによって、非同期操作とイベント/データストリーム(時系列処理)の実装が容易になります。

試し読みはここまでです。
この続きは、製品版でお楽しみください。