メニュー

CombineとUIKitによるiOSアプリ開発

発売日: 2020/12/29 想定ページ数: 48ページ 全文検索: 対応
★★★★★ ★★★★★ 4.0 1件
Combine は Swift を使ってリアクティブプログラミングを行うためのフレームワークです。2019 年 6 月の WWDC で登場して、注目を浴びました。

本書では、Combine を iOS App 開発に活用する手法を述べます。特に、UIKit での開発に Combine を組み合わせて使う事例を考えます。

iOS App 開発では、UI 層とモデル層とのあいだでデータをやり取りする手段が意外と難しいところです。UIKit はそのための仕組みを、あまり明示的には提供していませんでした。ここに Combine を導入することで、UI とモデルとを関連づけることが容易になります。これによって、UIKit を使った開発でのアーキテクチャ設計を改善できます。

本書で述べる内容は、それほど難しいものではありません。しかし、Combine の書籍や記事は内容が高度なものが多く、敷居が高い場合が多いです。基本的なことをできるだけ丁寧に説明した本があったら良いのではないか、と考えて本書を執筆しました。

iOS App 開発では、UI フレームワークとして UIKit が使われてきました。一方、2019 年 6 月の WWDC で、新しい UI フレームワークとして SwiftUI が発表されました。現在の iOS App 開発では、UIKit と SwiftUI のどちらか(あるいは両方)を使って開発することになります。

将来的には、UIKit に代わって SwiftUI が主流になることも予想できます。しかし一方で、UIKit は現在も iOS App 開発の現場で多く使われています。本書では UIKit に焦点を当てることにします。

なお、SwiftUI は暗黙的に Combine を活用しています。そのため、将来的に UIKit から SwiftUI に移行するとしても、UIKit と Combine との組み合わせに慣れ親しんでいれば楽に移行できるでしょう。
目次プレビュー
  • はじめに
  • 第1章 Combine の基礎
  • 第2章 データの変化を伝える
  • UIKit と SwiftUI
  • 本書の前提知識
  • iOS の動作対象バージョン
  • 1.1 Combine とは
  • 1.2 Publisher
  • 1.3 Subscription
  • 1.4 イベント
  • 1.5 Operator
  • 1.6 Combine のコンセプト
  • 1.7 この章のまとめ
  • 2.1 モデルクラス
  • 2.2 @Published
  • 2.3 CurrentValueSubject
  • 2.4 PassthroughSubject
  • 2.5 手段の選択
  • 2.6 Operator の活用
  • 2.7 この章のまとめ
  • 3.1 assign
  • 3.2 UI の更新
  • 3.3 ViewModel
  • 3.4 sink が必要な場合
  • 3.5 この章のまとめ
  • 4.1 UIKit でのユーザ操作の処理
  • 4.2 Notification
  • 4.3 PassthroughSubject の活用
  • 4.4 CombineCocoa
  • 4.5 CombineCocoa の応用
  • 4.6 debounce
  • 4.7 この章のまとめ
  • 5.1 実際の画面の作成
  • 5.2 実装の方針
  • 5.3 LoginModel
  • 5.4 LoginViewModel
  • 5.5 LoginViewController
  • 5.6 設計について
  • 5.7 この章のまとめ
  • Apple のリファレンス
  • WWDC セッションビデオ
  • 書籍
奥付
宇佐見 公輔
iOSアプリ開発エンジニア。技術勉強会での登壇、技術記事や技術同人誌の執筆を精力的に行う。特に、学習の敷居が高いと言われがちな領域について、導入部分を工夫することで敷居を下げて学びやすくした内容に定評がある。また、アプリ開発のプログラミングでは、宣言型プログラミングの手法に関心をもち、リアクティブプログラミングを取り入れている。学生時代は数学専攻。現在も数学系イベントでの登壇なども行う。
この著者の書籍一覧
★★★★★ ★★★★★ 4.0 Tsukubadepot 2021年1月13日
この書籍を理解する前提として「Combine を始めよう」という書籍の理解が必要なのですが(導入部でも促している)、そちらの書籍を先に読み、理解を含めておくとこの書籍の前半半分は繰り返しとなり、やや冗長間が否めません。

重複部分も多いので、書籍の価格としては上がったとしても2つの書籍を合わせ一つの書籍とし、第一部入門編、第二部応用篇としてもよかったのかもしれません。

その点においては、たとえば第二章まではバッサリと切り捨てて、その分 UIKit との連携例を増やしていただいた方が読み応えはあったかもしれません。

それでも、Combine をはじめとするリアクティブプログラミングの考え方、またそれをいくつかのモデルに分ける場合の考え方については、5章で簡潔、かつわかりやすいモデルを用いて説明がありますので、その部分を参照できただけでもこの書籍としても価値はあると思います。

気をつけたいのは、著者も第5章のまとめで述べている通り、「Combine を使うことと、設計アーキテクチャは別である」という点です。そこを明確に述べられている点も評価できるかと思います。

ただ、そういう意味ではモデル間において Publisher をいかに意識させずに(疎な結合として)関連づけさせるべきかという点まで踏み込んでいただければなおよかったのかなと感じています(もちろん、この点はまさにモデル設計と関連してくるので、切り分けも難しいところですが)。