shuhei's lab

暇なときにテック系とか日常のこととか書きます

技術書典4 : 大きめのAndroidアプリでの設計を考えてみる 〜Pocket〜 を読んでの感想

書籍と概要

今回は @kgmyshinさんの「大きめのAndroidアプリでの設計を考えてみる 〜Pocket〜」を取り上げてみたいと思います。

読む前の準備

前提としてDDD(ドメイン駆動設計)の知識がある程度必要です。文中でもDDDの用語や考え方が出てきます。 私は「エリック・エヴァンスのドメイン駆動設計」を読んで途中で時が止まったままだったので、こちらの「わかる!ドメイン駆動設計 〜 もちこちゃんの大冒険 〜」を読みました。
booth.pm

ただ、こちらだけでは特に戦術的設計の詳細がない(続編で掲載予定?)ので「実践ドメイン駆動設計」も一緒に読むことをオススメします。

実践ドメイン駆動設計 (Object Oriented SELECTION)

実践ドメイン駆動設計 (Object Oriented SELECTION)

DDDは私もイマイチ理解できていない部分が多くて難しいですが、上の2冊をサッと読んで分かった気になってから本書に臨みましょー(適当)

本書の構成

  • なにを作るのか知り尽くす
  • マルチモジュール化
  • レイヤー化アーキテクチャで実装
  • domainレイヤー
  • uiレイヤー
  • usecaseレイヤー
  • infraレイヤー
  • モジュール間連携

感想

DDDの要素でいうと、まえがきの一部分と第1章が戦略的設計でそれ以降が戦術的設計という構成になっています。 筆者の戦術的設計ノウハウがコード例とテストコードともに記述されていて、何故こうするべきか?というところも触れられていてとてもわかりやすかったです。
個人的に1番良かったところはUseCaseレイヤーを追加した経緯が書いてあるところでした。私も大なり小なりアプリをいくつか開発しましたが、UseCaseレイヤーは冗長ではないか?と思うケースが多々ありました。結果UIが膨れるという失敗もしたので、本書を参考に次回以降は良い設計ができるように心掛けたいと思います。
少し惜しいなと思うのは1章(戦略的設計)にもう少しボリュームがあっても良かったかなという点ですが、ここはあえて力を入れず戦術的設計に重きを置いた構成にしたのかもしれないですね。

終わりに

Pocket版とのことなので完全版も期待したくなる内容でした。
本書と「わかる!ドメイン駆動設計」、「実践ドメイン駆動設計」を読むことでDDD知識やより良い設計のノウハウが得られると思います。
ひと通り読み終えた後に何かのサービスを参考にして設計・実装をしてみるのも良いプラクティスになるでしょう。

電子版も検討中とのことなので、売り切れで購入できなかった方は定期的にチェックしておくと買えるかも。

早く途中まで読んだ「エリック・エヴァンスのドメイン駆動設計」のほうを再チャレンジしたいな…