日高 正博 小西裕介 藤原聖 八木 俊広 - Android アプリ設計パターン入門

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

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

TechBoosterの新刊!「Android アプリ設計パターン入門」執筆プロジェクト

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

大人気の技術書を多数リリースしているTechBoosterによる最新刊執筆プロジェクト!第一線の著者陣がAndroidアプリケーションの設計パターン入門書を書き下ろします。

設計の基本を理解できるだけでなく、第2部では生きた設計をテーマとして、実際のプロダクトをベースにソースコードを見ながら各アーキテクチャの特徴、設計指針、実装を解説します。「この本を土台にAndroidアプリケーション設計の議論ができるようにしたい」という代表 日高氏の言葉の通り、最初の一冊かつ、誰もが知る設計の基礎知識を担う本になることと思います。

みなさんの応援でぜひプロジェクトを成立させてください。

購入締切日
2017年08月04日 23:59(終了しました)
リリース予定日
2017年10月31日
フォーマット
PDF(250ページ〜)

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

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

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

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

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

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

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

価格(税込)

5,000

  • 購入期間は終了しました

電子版プラン203人が購入

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

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

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

価格(税込)

3,000

  • 購入期間は終了しました

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

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

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

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

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

価格(税込)

4,000

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

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

プロジェクト概要

本書はモバイル分野のAndroidアプリケーション設計手法を解説する入門書です。

設計というテーマで書籍をまとめようと思った動機として「設計手法の選択は、とても難しい判断であり、正解はやってみないとわからない」ことが挙げられます。

バランスの問題と言い換えてもいいかもしれません。アプリの要件や開発プロセスなどプロジェクトの背景や開発者の技術的嗜好およびスキルセットなど技術的背景によってベストな手法が変化していくでしょうし、新規開発では大胆にチャレンジできても差分開発では地に足をつけた方法を選ぶことがあります。 開発者はこのような背景を抱えながらも、設計を通じてコミュニケーションを図り、今後の変更に柔軟に対応できて、不具合が出にくい強固なソフトウェアを目指します。

近年ではスマートフォンの普及、利用シーン拡大によりアプリの果たす役割は拡大し、変化を続けています。 本書は設計手法をすべて収集して解説するといった図録的な役割は持ち合わせていないでしょう。やりたいことは設計について議論する土台を作ることです。 アプリの設計を評価し、利点や欠点を率直にまとめること、プロジェクトの背景や技術的背景を知り、どのようなケースで有用なのかという実例を収録します。

これらの例は自分たちのアプリ開発で、どの設計がベストなのか疑問を話し合う土台として有効に機能するはずです。自分たちのプロジェクトを改善するための視点の獲得や見えていなかった課題の気付きといった形で現れると大変うれしく思います。

収録内容は、アプリ開発のプロフェッショナルが四苦八苦しながら形にした知識、知見です。役に立ってくれるに違いありません。 さきほど話の流れでついプロフェッショナルと表現しましたが、いたって普通の開発者です。というのもモバイルアプリのアーキテクチャは移り変わりが激しく、今良いと思って勧めたものでも将来に渡って良いかは保証されておらず、間違えたことを言っていないかと常に不安がつきまといます。このような不安は開発者全員が持ち合わせているのではないでしょうか。 そこで本書を書き終えるまえにベータ版として出資者のみなさんに読んでもらい、疑問点やヒントをもらいたいと考えています。すべての人が満足するように結果を反映するのは難しいですが、多くの目に触れてレビューし、議論し、設計に関して多くの視点をもつことがより良い選択に繋がると信じているからです。

対象読者

  • すべてのAndroidエンジニア

著者プロフィール

mhidaka日高 正博 Twitter GitHub

DroidKaigiや技術書イベントの技術書典を主宰。技術の共有やコミュニケーションに興味があり、TechBooster のブログや書籍、講演活動を通じて開発情報を発信してます。

プロジェクトが成立したら最高の記事を書いて取り分💰を技術書典や書籍づくりにつぎ込むぞ!!!という気持ちです。

konifar小西裕介 Twitter GitHub

Quipper Limited. でAndroidの開発をメインでやっています。GitHubにライブラリやプラグインのコードを公開しており、DroidKaigi2016、2017のアプリもOSSで作っていました。

ある設計に則ったコードを見た時、なぜそう作っているかわからなかったり無駄に冗長だと感じたりして、誰かに解説してもらいたいと思ったことはないでしょうか?私はあります…!「その設計で何の問題を解決しようとしているのか」「こう作ると何が嬉しいのか」といった私自身が知りたいことを、出来るかぎり丁寧に書いていきたいと思います。

satorufujiwara藤原聖 Twitter GitHub

株式会社サイバーエージェントでAndroidの開発やエンジニア向けイベントの主催などやっています。Shibuya.apkというAndroidエンジニア向けコミュニティのオーガナイザーの1人。GitHubではFluxやArchitecture Componentsなどを用いたAndroidアプリ設計のサンプルを公開しています。

アプリケーションアーキテクチャには完全な正解などなく、いつも迷いながら作っているのが正直なところです。プロジェクトが成立していろいろな人のいろんなアーキテクチャ、考え方を知れるのをとても楽しみにしています!

sys1yagi八木 俊広 Twitter GitHub

Androidアプリケーションの開発者。 現在はクックパッド株式会社から独立した株式会社トクバイでAndroidエンジニアと技術部長を兼任しています。 また個人の活動としてGitHubでAndroid向けのライブラリをいくつか公開しているほか、DroidKaigi等のカンファレンスで登壇したりしています。

皆アプリケーションアーキテクチャ周りどうやってんだろうというのが正直な気持ちで、他の著者の話めっちゃ読みたいと思っています。僕の経験してきたこと考えてきた事も出していくので是非フィードバック欲しいです。

目次

はじめに

第1部ではアプリケーション設計の基礎を解説します。第2部は実際のアプリケーション開発現場に注目してどのような課題を解決するための設計なのかいろいろなアプローチを紹介します。第3部は、最近登場したコンポーネントやKotlinが及ぼす設計への影響を議論します。

第1部 アプリ設計を知る

第1章 Androidアプリの基本構成 mhidaka 日高 正博

第2章 MVPパターンを使ったアプリ構成 mhidaka 日高 正博

第3章 MVVMパターンを使ったアプリ構成 mhidaka 日高 正博

ソフトウェア設計は課題を解決し、目的を達成する手段といえます。アプリケーションの設計には答えはありませんが、設計手法を知ることは、よりよい開発の一助となります。 ここではAndroidプラットフォームの特徴について解説し、アプリの基本構成としてMV*パターンを学びます。第1部ではAndroid ArchitectureのTODOアプリをサンプルに基本的なパターンを紹介していきます。TODOアプリは面白みはありませんが要件が明確なことから各パターンの違いを見比べ、知れます。それぞれの設計手法に優劣はありませんが、どのような構成が自分にあっているかという得手・不得手はあります。第1部では各手法の性質を確認できます。

第2部 生きた設計を見る

第4章 差分開発にみる設計アプローチ mhidaka 日高 正博

新規開発と継続(差分)開発は考慮するべきことは異なります。長期にわたる開発では、アーキテクチャや設計思想の変遷、Androidのバージョンアップ、流行、メンテナンス性を維持するために払うコストなどさまざまな要因の影響を受けるためです。 本章では差分開発での課題と解決するための設計というテーマを中心におき、著者の所属するメルカリのAndroidアプリを題材として開発イテレーションのなかで整合性を維持し、今後も使い続けていくコードをどのように育てていけばいいか、という日々のチャレンジがしやすい設計について紹介します。

第5章 OSSにおける設計者の役割 konifar 小西裕介

DroidKaigi 2017のカンファレンスアプリでは、GitHubで公開後に60人以上のエンジニアから250を超えるPullRequestが集まりました。色々な人が関わるオープンソースプロジェクトなので、あまり複雑になりすぎず、かつAndroidアプリを作る上での問題を解決できるようMVVMを採用しています。中には、DataBindingの活用の仕方に戸惑ったり、ViewModelの役割に少し疑問を持つ方もいるかもしれません。 本章では、MVVMを採用した経緯から、パッケージ・クラスの分け方の指針まで、DroidKaigiアプリ設計の「なぜ」の部分を詳しく説明していきます。また、ここはこうした方がよかったかも、といった実際の反省点にも触れる予定です。Androidアプリの設計に悩む皆さんにとって少しでも参考になれば幸いです。

第6章 Fluxアーキテクチャ satorufujiwara 藤原聖

FluxアーキテクチャはFacebookのMobile Web Applicationで用いられているアプリケーション設計です。著者の所属する株式会社サイバーエージェントではAbemaTVをはじめとした多くのAndroidアプリケーションで、このFluxアーキテクチャをAndroidアプリケーションのアーキテクチャとして、(各チームがそれぞれアレンジを加えながら)用いています。 本章では実際にFluxアーキテクチャをどのように用いているかを解説しながら、アプリケーションで実際に用いた上で感じたメリットデメリットについて書く予定です。 これからAndroidアプリケーションにFluxアーキテクチャの導入を考えている方にとって少しでも参考になれば幸いです。

第7章 チームとアーキテクチャ sys1yagi 八木 俊広

アーキテクチャはチームのために存在しています。チームとは人です。すなわち人がプロダクトを正しく作るためにアーキテクチャは存在しています。 人を支えないアーキテクチャは意味がありません。Androidが出た当初は、限られたリソースの中でうまく動作させるために、組み込みアプリケーションの方法論が重要でした。時代は進み、いまやAndroid端末のスペックは一昔前のPCと遜色がありません。提供する機能は複雑化し、画面も増加し、品質の要求は上がり、開発規模が増大して関係者も増えました。今こそアーキテクチャの出番がやってきたというわけです。 本章では中長期的にチームでAndroidアプリケーションを開発するにあたって直面した課題と、解決するために考えたこと、実際に行ったことを紹介します。取り扱うソースコードはGitHubで公開しているMastodonのAndroidクライアントアプリケーション「DroiDon」です。DroiDonは個人で開発を進めていますが、これまでのチームでの経験をすべて詰め込んで設計し、VIPERアーキテクチャを採用しています。これに近いアーキテクチャを著者の所属するトクバイのアプリでも採用してます。アーキテクチャ設計の議論のたたき台として活用できることでしょう。

  1. 設計指針のない複雑度が爆発したソースコードの教訓
    1. どこになにがあるかわからない問題
    2. 予期せぬ副作用問題
    3. オンデマンドでその場に実装しちゃう問題
    4. 密結合テスト不可能問題
    5. 状態管理ソムリエ問題
  2. 抽象化とアーキテクチャ
  3. アプリケーションがすることはなにか
  4. モデルの分解と配置
  5. 短絡的な効率よりも正しさを選択する
  6. ほどほどにやる
  7. DroiDonのアーキテクチャ
    1. VIPERアーキテクチャとは何か
    2. VIPERアーキテクチャの要素と役割
    3. DroidDonでの構成
      1. 単位と構造
      2. Contractインタフェース
      3. ファイル配置の戦略
      4. キャッシュ戦略
        1. 実例: タイムラインを表示する
        2. ファイル数の多さは自動化で解決しよう
          1. 考えなくてもよいことは考えないで済むようにするということ

第3部 設計を考える

第8章 Android Architecture Components satorufujiwara 藤原聖

  1. 新しいアーキテクチャのためのコンポーネント
  2. Androidのコンポーネントのライフサイクルと課題
  3. LifeCycleコンポーネントがやっていること
  4. LiveDataとLifeCycle
  5. ViewModelとLiveData
  6. 双方向DataBindingを使う
  7. Android Architecture Componentsが想定するアーキテクチャ
  8. Android Architecture ComponentsとMVVM
  9. Android Architecture ComponentsとVIPER

第9章 Kotlinが設計に与える影響 sys1yagi 八木 俊広

  1. Googleが公式の開発言語として採用したKotlin
  2. null許容型の特徴と設計に与える影響
  3. 拡張関数の特徴と設計に与える影響
  4. デリゲートの特徴と設計に与える影響

第10章 みんなの広場

出資者の設計上の課題をきいて、一問一答形式で案を出すコーナー

おわりに

更新情報

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

2017.07.13. 更新

目標人数を達成し、プロジェクトが成立しました!たくさんのご支援ありがとうございます。プロジェクトの進捗・執筆状況はは随時こちらで報告していきます。引き続きよろしくお願いいたします。