関 義隆, 松館 大輝, 史 翔新, 田中 賢治, 鈴木 大貴, 杉上 洋平 - iOSアプリ設計パターン入門

    プロジェクトをシェアして応援しよう

  • このエントリーをはてなブックマークに追加
執筆決定!!1058人が応援しています

iOSの設計パターンを入門から徹底解説「iOSアプリ設計パターン入門」執筆プロジェクト!

iOSアプリ設計パターン入門

アーキテクチャ設計のすべてを濃縮!
すべてのiOSアプリ開発者が待ち望んでいた、アプリケーション・アーキテクチャ解説本の執筆プロジェクト!
近年ますます大規模&複雑化しているiOSアプリ開発において、今求められているのは「アプリをどう設計するか」 「アーキテクチャをどのように設計すれば、将来に渡って安心してメンテナンスできるアプリを実現できるか」への解です。 本書は、古典的MVCから最新のFlux/Reduxまで、現代のiOSアプリで使われているアーキテクチャをまるごと詳解します。
また、第一線の開発者による導入事例も紹介します。 今からアプリ開発を始める方にとっての聖典に、ベテラン開発者にとっての補完書となることでしょう。
ぜひ皆さんの応援でプロジェクトを成立させてください!


成立締切日
2018年06月05日 23:59
リリース予定日
2018年10月31日
フォーマット
PDF(250ページ〜)

プロジェクト成立!
執筆が決定しました!

1058人がこのプロジェクトを応援しています

プロジェクトを成功させるには、たくさんの応援が必要です。
プロジェクトをシェアして応援しましょう!

電子版 + 製本版 プラン169人が購入

電子版に加えて、製本版をお届けするプランです。執筆完了後、ご住所を伺い配送いたします。(送料込)

  • 電子版書籍
  • PDFがダウンロードできます。

  • 製本版書籍*1冊
  • 製本版を指定のご住所まで配送します。執筆完了後、ご住所を伺います(海外発送はいたしません)。

  • アーリーアクセス
  • 執筆完了前の書籍を、書き上がった章から閲覧いただけます。HTML版の公開を予定しています。また、リリース前のベータ版をPDFで配布いたします。

価格(税込)

4,500

電子版プラン389人が購入

電子版書籍がダウンロードできるプラン

  • 電子版書籍
  • PDFがダウンロードできます。

  • アーリーアクセス
  • 執筆完了前の書籍を、書き上がった章から閲覧いただけます。HTML版の公開を予定しています。また、リリース前のベータ版をPDFで配布いたします。

価格(税込)

2,500

《数量限定》アーリーバードプラン500人が購入 (残り:0)

《500円OFF》いち早くご購入いただける方に、お得な早割りプラン

  • 電子版書籍
  • PDFがダウンロードできます。

  • 製本版書籍*1冊
  • 製本版を指定のご住所まで配送します。執筆完了後、ご住所を伺います(海外発送はいたしません)。

  • アーリーアクセス
  • 執筆完了前の書籍を、書き上がった章から閲覧いただけます。HTML版の公開を予定しています。また、リリース前のベータ版をPDFで配布いたします。

価格(税込)

4,000

500円 OFF!
  • 完売いたしました
購入者数が目標に達しプロジェクトが成立した場合、購入額の決済は【プロジェクト成立締切日の翌日】に行われます。(目標人数に達しなかった場合はプロジェクト不成立となり、決済は行われません。)

プロジェクト概要

本書は、iOSアプリ開発で使われるアプリケーションアーキテクチャの内容と、活用事例の真髄を学ぶ解説書です。

近年、iOSアプリ開発の大規模&複雑化が止まりません。昔と異なり、アプリは様々な入口からアクセスされ、画面遷移は巨大迷路のようになり、通信先のAPIも常に変化します。様々な処理は並列に動かさなければいけません。アプリの寿命も長くなり、開発者が何度も入れ替わる中で、安定した動作が求められます。

今、このように複雑化したiOSアプリ開発に求められているのは、「アプリをどう設計するか」「アーキテクチャをどのように構成すれば、安心して開発し続けられるアプリを実現できるか」への答です。

私たちは、あなたがその答を導き出せるようにするために集まりました。

本書では、アプリ開発プロセスのうち設計部分にフォーカスして、古典的MVCから最新のFlux/Reduxまでの、現代のiOSアプリで使われるアーキテクチャを詳解します。1つ1つを子細に説明した上で、同じテーマを異なるアーキテクチャを使って実装・説明し、それぞれのメリット・デメリットが分かりやすくなるよう心がけます。

もちろん、単なるカタログブックにならないよう十分な注意を払っています。「そもそも設計とは何なのか」に立ち戻り、からみあった要素を丁寧に整理・解説することで、あなたの中にある堅固な基盤を作り上げます。本書を読めば、どんな設計の問題にも立ち向かう力が身につくことでしょう。

さらに、第一線で活躍する開発者が、過去にアーキテクチャの悩みに立ち向かったときの貴重な経験も紹介します。結果だけでなく当時の思考過程にまで踏み込み、どのように問題を解決していったかを時系列で解説します。結果だけではわからない、アーキテクチャ設計の本質に迫ります。 アーキテクチャの歴史や経験者の思考過程を追体験できることのメリットは、きっと大きいはずです。

私たちは、本書に書かれた内容が、あなたの「血肉」となって生き続けることを目指し執筆します。

対象読者

  • アプリをどんなアーキテクチャで作るか迷っている方
  • ViewController, ViewModelがすぐに肥大してしまう方
  • 今後もメンテナンスし続けるアプリを作る方
  • アーキテクチャ変遷の歴史を知りたい方
  • そもそも設計って何?という方

著者プロフィール

takasek関 義隆 Twitter GitHub

フリーランスiOSエンジニア。主なお手伝い先は株式会社FiNC。Xcode Source Editor Extension [PasteTheType]やOSS [ActionClosurable]を公開している。今年の抱負は個人開発iOSアプリのリリースだが、プロジェクトが設計の実験場として使われがちのため予定は未定。

「Martin Fowlerって知ってますか?」「誰ですか?」
きょとんとする私の前で、職場の先輩は持ち出したホワイトボードにプレゼンテーション・ドメイン・セパレーションの図を書き、一日がかりの大講義を始めました。オレオレ設計で自惚れていた私はその日、圧倒的な先人の知恵に叩きのめされ、翌日からのプロジェクトの進捗は大きく上向いたのでした。
先輩の一人日を潰さずとも、代わりにあの日の私を導いてくれる一冊に本書がなりますように。

d_date松館 大輝 Twitter GitHub

フリーランスのiOSエンジニア。学生の頃にiPhoneアプリを作り始め、スタートアップ数社を経てフリーランスに。Open API Generatorのコントリビューターであり、try!Swift Tokyoのオーガナイザーでもある。趣味は旅行。

Objective-CでiPhoneアプリを作り始めた2011年、木下誠さんの「iOS開発におけるパターンによるオートマティズム」という黄色い本で初めて「設計」という概念に触れました。
その本を読みながら当時自分が作っていたアプリを「設計」し、リリースしてからその威力を知ったのでした。
Swiftが登場してから、様々な設計パターンがiOSの世界にもらたされましたが、まだ初・中級者におすすめできる設計の本が書店にありませんでした。
僕自身、新人にiOSのアプリを作るための設計をどう学んでもらおうか悩んだことがあります。
そんな人のための本が出ます。お楽しみに。

lovee史 翔新 Twitter GitHub

Auto Layout絶対○すマンとして知られる過激派なのになぜか業務ではAuto LayoutおじさんになってしまっているiOS開発者。NotAutoLayout作者。個人プロジェクトではオレオレMVCを操りながら業務ではMVVMを書いたり。

最近はMVPやMVVMなどのアーキテクチャが様々な勉強会やカンファレンスで登場するようになり、「MVC」という言葉がなんとなく化石と感じ取れるようになった気がしないでもないですが、もちろんMVC、特にCocoa MVCは「Massive ViewController」と揶揄されたりすることも多いですが、多くの場合それはMVCを正しく理解せずに作ってしまったエンジニアが悪いであって、MVCが悪いわけではないと私は思います。
ですのでMVPやMVVM、ひいてはClean ArchitectureやVIPERが流行っているこのご時世で、敢えてもう一度MVCを振り返ってみて、条件反射的に「MVCなんてもう時代にそぐわない」と考えずにもう一度MVCを再評価した上でプロジェクトのアーキテクチャ選定に当たって頂きたい、という気持ちで執筆に入りたいと思います。願わくばみなさんのアーキテクチャ選定基準の一つの突破口にもなれたら幸いでございます。

ktanaka117田中 賢治 Twitter GitHub

百合好きのダンボールの人。Swiftは生まれた時から触ってる25歳。 技術ブログを年100本ペースで書いていて、最近は設計やテストに関心が向いています。 iOSオールスターズ2やiOSDCなどのイベントで設計に関するトークを披露しました。 直近では技術書典4で『Swiftで書いておぼえるTDD』という同人誌を出したりなども。

私が仕事で初めて作ったアプリは、約12人月ほどのそこそこの規模にもかかわらず、設計に対する考慮がまったくと言ってよいほどありませんでした。どの役割にどんな責務を担わせるかという指針もなく、コードは読みづらくなってしまい、修正や機能開発がとてもつらかったことを覚えています。
この本は、そんな当時の私のように悩んでいる方々に送る一冊です。様々な設計指針を紹介するとともに、どういう判断基準でそれらを使い分けるかが書かれた、素晴らしい本になるでしょう。
ああ願わくば、当時の自分が一番欲しい本だった。

marty_suzuki鈴木 大貴 Twitter GitHub

株式会社サイバーエージェントでiOSアプリの開発を行っています。2017年出版のモバイルアプリ開発エキスパート養成読本に共著で参加しています。GithubではFluxをはじめとするiOSアプリのデザインパターンのサンプルなどを公開しています。

iOSアプリ開発を1人で担当していた学生の頃と新卒の頃は、MVCでしか開発したことがありませんでした。当時の私にとっては、1人で開発する上ではMVCで必要十分であったということもありますが、MVC以外の設計に触れる機会が特になかったということもあります。 アプリ開発をする上で、設計はアプリ自体の品質に大きく関わります。他のメンバーや数ヶ月後の自分が見にくい設計であるが故に修正が困難であったり、テストが考慮されていない設計であるが故にリリースの度にバグが出てしまったりすることなどが起きてしまいます。ただ、チームの体制や開発規模によって合っている設計は変わってきます。そして、それらを判断する上でもいろんな設計に触れてみたりすることが必要になってくるので、本書がそういったものの参考になれば良いなと思っています。

susieyy杉上 洋平 Twitter GitHub

フリーランスエンジニア。フルスクラッチからのアプリ開発経験は CocoaMVC x 5, MVVM w/ Rx x 2, Redux x 1

プログラム言語は多様な目的を達成できうるよう汎用的に作られています。汎用さは解決のアプローチに多様性と表現の豊かさをもたらしてくれる反面、一貫性、抽象化、局所化、拡張性、保守性、信頼性、可読性など昨今の開発において求められる高い要件は書き手に委ねられます。
求められる要件の背景にある、ユーザが満足する高い品質を届けるため、ロバストでサスティナブルでかつ、高速な改善サイクルを担えるサービスのため、そして、チームのメンバーや自分自身が書く時も読む時も良き拠り所となるように、本書による先人方の英知と筆者らの経験に基づく周密精到な解説による設計指針が、読者の皆様の日々の開発の礎になり、さらなる素晴らしいモノづくりへのお役に立てることを願います。

目次

はじめに

第一部では、「設計とはそもそも何か」を整理・解説します。設計の技術は、iOSが生まれるよりも遥か昔から先人が積み上げてきた知見の結晶です。時代が変わっても変わらない概念を踏まえることで、iOSアプリ開発において、あるいは他プラットフォームにおいても通用する視座が身につくことでしょう。 また、iOSあるいはSwift特有の事情がアプリ設計に与える影響についても、併せて解説します。

第1部 設計を知る

第1章 設計するということ takasek 関 義隆

  1. プログラミング・パラダイム今昔物語
  2. オブジェクト指向の原則

第2章 設計を型システムに落とし込む takasek 関 義隆

  1. コンパイラに設計を助けてもらおう

第3章 iOSアプリにおけるアーキテクチャ takasek 関 義隆

  1. 層を分ける、層を繋げる
  2. Cocoa frameworkが与える影響

第4章 アーキテクチャのパターンを鳥瞰する takasek 関 義隆

  1. Presentation Domain Separationを基にしたアーキテクチャ
  2. アプリ全体を通じたアーキテクチャ
  3. 新しいパラダイムのアーキテクチャ

第2部 iOSアプリのための設計パターン

第二部では、最近iOSアプリ開発によく用いられている設計のパターンの基本形を紹介します。 同じ要件のサンプルアプリをそれぞれのアーキテクチャで実装してみることで、そのアーキテクチャの向き不向きを理解し、実際にアプリを開発する際に、どのアーキテクチャがあなたのアプリに適しているか判断できるようになります。

第5章 MVC lovee 史 翔新

第6章 MVP ktanaka117 田中 賢治

第7章 MVVM ktanaka117 田中 賢治

第8章 Clean Architecture d_date 松館 大輝

第9章 Flux marty_suzuki 鈴木 大貴

第10章 Redux susieyy 杉上 洋平

第11章 アプリの起動経路 - Application Coodinatorの導入 d_date 松館 大輝

第12章 画面遷移のパターン - Routerの導入 ktanaka117 田中 賢治

第13章 第二部のまとめ - アーキテクチャの選定基準 d_date 松館 大輝

第3部 設計をサービスに導入する

第三部では、第二部で紹介した設計のパターンの各サービスへの導入事例を紹介します。第二部で理解した各パターンをサービスに導入する際に、どのように形に落とすのか、妥協した点は?導入して良かったこと、悪かったことなど、現場の生の声をお届けします。設計パターンはあくまで理想形であり、要件やサービスの規模、開発者のレベルに応じて変わっていくのです。

第14章 Clean Architectureの導入例 - APIのリプレイスに伴う設計の見直しと多層化とその効果 d_date 松館 大輝

第15章 Fluxの導入例 marty_suzuki 鈴木 大貴

第16章 Reduxの導入例 - 大規模アプリにReduxを導入する susieyy 杉上 洋平

更新情報

プロジェクトを公開しました

2018.05.21. 更新

本日、プロジェクトを公開・開始しました!たくさんの支援をお待ちしております。