iOS, Swift, SwiftUI

「1人でアプリを作る人を支えるSwiftUI開発レシピ」を出版します

私、佐藤タケシの2回目となる商業出版が決定しました!
インプレスR&D社より「1人でアプリを作る人を支えるSwiftUI開発レシピ」というタイトルで出版されます。

2020年11月13日予約開始、11月20日に発売開始です。




https://nextpublishing.jp/book/12491.html

「SwiftUIでアプリを作る!」をコンセプトにSwiftUI自体の解説とそれを組み合わせた豊富なサンプルアプリでどんな風にアプリ実装すればいいかが理解できる本となっています。
もちろん9月リリースされたばかりのiOS 14、Xcode 12対応済みです!

こちらは今年3月に開催された「技術書典 応援祭」で出展した同名の同人誌を加筆修正したものになります。

コンセプト

新しいフレームワークは覚えるのが難しいものです。
全く新しい概念が使われてこれまでの知識が応用できなかったり、先行事例が少なかったりで手が止まってしまうことがあるでしょう。

一般に物事を理解するには原理原則を理解し、それをどう組み合わせていけばいいかのパターンを把握することが大切です。

----------2020-11-14-23.50.55

本書では徹底的にSwiftUIの原理原則を解説しました。

レイアウトシステムから座標空間、データ管理、去年から登場したApple非同期処理フレームワーク「Combine」の解説もあります。

そして、それらの応用としてサンプルアプリをハンズオン形式で作成します。
ただ見た目を整えるだけでは持続的なアプリ実装は難しいため、データ周りの設計も解説しています。具体的にはすべてのアプリにアーキテクチャにMVVMを採用し、ViewとViewModelを分離させてアプリを実装しています。
MVVMに馴染みのない方も、3つあるサンプルアプリに繰り返し使われるので、次第に実装方法に慣れていくでしょう。

対象ユーザー

アプリ開発を一度は経験しているけど、SwiftUIはまだという方や、Apple公式のチュートリアルを試したが自分でアプリを作るイメージがつかない!といった方を想定しています。
初級者から中級者を対象としています。

逆にSwiftを全く触れていない方や、アプリ開発者の入門者は難しいと思うかも知れません。
Swift文法自体の解説は本書にはありませんし、アーキテクチャについての言及もあります。

ただSwiftUIでアプリを作るために必要な知識をこれ一冊に凝縮させたので読む価値はあります。

この本のここがすごい!

この本の売りは、なんといってもiOS 14、Xcode 12対応を解説していることです。
iOS 14になりSwiftUIは順調に進化をとげています。
iOS 13では実現できなかった表現がiOS 14ならできるようになりました。

本書のiOS 14対応内容は次のとおりです。

  • iOS 14のコンポーネント解説
    • LazyVStack、LazyHStack
    • TabViewのiOS 13とiOS 14の違い
    • LazyVGrid、LazyHGrid
    • その他、TextEditor、ProgressView、Link、Labelなど
  • SwiftUIだけでアプリを作る方法(Appプロトコル)
  • @StateObject、@AppStorage、@SceneStorage
  • WidgetKit

まだまだiOS 14に言及した解説本は少ないので、今年からSwiftUIを始める方にはピッタリの本となります。

また、実践的なサンプルアプリが豊富に収録されています。

  • GitHub APIを使ってHTTP通信でデータを取得する
  • お絵かきアプリでドラッグジェスチャーやスクリーンキャプチャを撮る
  • 写真フィルターアプリで写真を加工する

どれも応用が効くアプリとなっています。
本書をあなたの作りたいアプリがきっと作れるはずです。

各章の見どころ

各章の見どころをご紹介します。

第1章 SwiftUI概要

SwiftUIってどんな特徴があるの?というのをざっくり解説。
宣言的シンタックスやデータバインディング、プレビュー機能で開発効率が上がるという話をします。

第2章 SwiftUIのレイアウトシステム

SwiftUIはUIKitのAuto Layoutとは異なるレイアウトシステムでViewをレイアウトしていきます。それがどういうものなのかを解説します。
基本的にSwiftUIは子Viewが自身の大きさを決定し、親へ伝達する仕組みですが、各フローに区切って解説しています。
VStack、HStackの兄弟関係でレイアウトフローも掲載します。

第3章 SwiftUIの座標空間

UIKitのUIViewにはboundプロパティやframeプロパティがあり、それでViewの座標空間を表していました。ところがSwiftUIにはそれらのプロパティが定義されてありません。
どうすればいいのでしょうか?
SwiftUIには座標空間を表現するGeometryReaderという特別なViewが存在します。
GeometryReaderを通してSwiftUIで座標空間を扱う方法を解説します。

27

第4章 基本Viewの使い方

SwiftUIでは予め定義されている基本Viewがたくさんあります。
よく使う主要なものをピックアップして解説しています。
TextやImage, Buttonなどなどです。

ただドキュメントを写しているだけでなく、私が実装して気づいたTipsも掲載しています。

例えばButtonのタップ領域を広げる方法や、角丸の枠線をつける方法、Spacerにタップ領域を追加する方法などです。

タップ領域を広げる
角丸枠線を作る
タップができないSpacerでもタップさせる

先ほど「本書のここがすごい」で話したとおり、iOS 14のコンポーネントの解説もしています。

第5章 iOS 14新機能: App、Scene、WindowGroup

section9_01

iOS 14からSwiftUIのみでアプリ開発ができるようになりました!
iOS 13ではSceneDelegateといったUIKitクラスを使わないといけなかったんですが、iOS 14では100%SwiftUIアプリが作れます。

どんな風に作っていくのかを解説します。

第6章 SwiftUIのデータ管理

SwiftUIで開発しているとデータ管理のPropertyWrapperがよく登場します。
@State、 @Binding、@ObservedObjectなどをよく目にすると思います。
どんな使い分けをしていけばいいか迷ってしまうこともあるでしょう。

ご安心ください!
本書ではSwiftUIでのデータ管理のPropertyWrapperの使いわけを完全解説しました。

どんなPropertyWrapperがあり、どんな時に使えばいいかがバッチリ理解できます。

第7章 Combine

去年Appleが発表した非同期処理フレームワークがCombineです。
以前からiOSアプリ開発ではOSSのRxSwiftやReactieveCocoaが非同期処理フレームワークとしては有名でしたが、ついにAppleから直々に発表されました。

Combineにはどんな登場人物がいてどんな使い方ができるのかを解説します。

第8章 レシピ:GitHubAPIリポジトリー検索アプリ

section7_01_1

サンプルアプリ一つ目です。
GitHubAPIを使ってリポジトリー検索アプリを作ります。
Combineを使ってHTTP通信処理をまとめます。
Viewには近年モバイルデザインで話題のカードUIでレイアウトを行います。

ネットワーク通信とSwiftUIの連携方法が学べます。

第9章 レシピ:お絵かきアプリ

section6_05

キャンバスに指でなぞると絵がかけるお絵かきアプリを作ります。
ドラッグジェスチャーや画面をキャプチャーする方法が学べます。

第10章 レシピ:写真フィルターアプリ

section8_01

section8_02

section8_03

Image Pickerから写真を選んでそれに加工フィルターをかけるアプリです。
SwiftUIからImage Pickerの連携方法、画像をフィルターする方法、下からシュッとでるバナーの実装方法などが学べます。

第11章 iOS 14新機能: Widget

section11_35

iOS 14の目玉機能の一つWidgetを解説します。
Widgetの概要から始まり、既存アプリにWidgetを組み込む手順をハンズオン形式で解説します。

TodoリストアプリにWidgetを追加していくのですが、Core Dataでのデータ取得、ホストアプリとApp Groupsでデータを共有する方法、WidgetからホストアプリにDeep Linkする方法も解説します。

Widgetの開発だけでなくホストアプリとの連携も学べる一章です。

さいごに

本書は私自身、SwiftUIの開発に向き合って執筆した一冊です。
今年の1月から同人での執筆を始め、約8ヶ月間SwiftUIの調査と執筆を続けてきました。

WWDC20終わった直後はWWDCのビデオで言及された機能がまだXcode beta版で実装されていないことがあり、確認に手間取ったこともありました。

本書では、ただドキュメントを羅列するのではなく、私が実際に試して得られたTipsをふんだんに取り入れています。

また本書は私の友達にレビューをしていただいています。
独りよがりな文章が他人の目が入ることで読みやすく、わかりやすいものになりました。
同人誌版にはKooichi Tanaka(@tikidunpon)さん、akifumifukaya(@akifumifukaya)さんにレビューを頂きました。
そして商業誌版としてkenmaz(@kenmaz)さん、kagemiku(@kagemiku_en)さんにレビューを頂きました。
お忙しい中レビュー本当にありがとうございました。
内容がブラッシュアップされて、最高の一冊になりました。
この場をお借りして感謝いたします。




https://nextpublishing.jp/book/12491.html

ぜひ本書を手に取り、SwiftUIアプリ開発に役立てていただければ幸いです。

Author image

About Sato Takeshi

  • Tokyo, Japan