「iOSアプリ設計パターン入門」を一読しました。

こんにちは、Reoです。

5月頃に購入してずっと積んでた「iOSアプリ設計パターン入門」をようやく一読しました。

一言で言うと、「良書だけどかなり難しい」って感じでしたね。一読で理解するには、自分に足りないものが多すぎる…。

それでは、紹介と感想を書いていこうと思います。

 

概要

iOSアプリ設計パターン入門」はPEAKSという技術書クラウドファンディングから産まれた書籍になります。

PEAKSのサイトからのみ購入することができます。

https://peaks.cc/books/iOS_architecture

個人的にはTwitterで結構読んでる人を見かけるんですが(自分もTwitterで本書を知りました)、書店では購入できないので注意が必要です。そしてPEAKSでの支払いはクレジットカードオンリーとなります。

 

さて、購入方法が限られている本書ですがとにかく良書です。一冊持ってて間違いなしです。

中身は先ほどのサイトの「中身を見る」から全318ページ中の85ページ分を読むことができますので、気になる方はサラッと目を通してみてください。

 

目次

全15章(3部)の構成になっています。

大枠は

  1. 設計を知る (1-4章)
  2. iOSアプリのための設計パターン (5-13章)
  3. 設計をサービスに導入する (14-15章)

各章は

  1. 設計するということ
  2. 設計にパターンを適用する前に
  3. Swiftらしく設計する
  4. アーキテクチャのパターンを鳥瞰する
  5. MVC
  6. MVP
  7. MVVM
  8. Flux
  9. Redux
  10. Clean Architecture
  11. アプリの起動経路 – Application Coordinatorの導入
  12. 画面遷移のパターン – Routerの導入
  13. 第2部まとめ – アーキテクチャの選定基準
  14. Fluxの導入例
  15. Reduxの導入例 – 大規模アプリケーションにReduxを導入する

の全15章です。

対象読者

Webサイトを覗くと、対象読者は以下のようになっています。

  • iOSアプリ開発における代表的な設計について知りたい方
  • どの設計を選択するか迷っている方
  • チーム内で設計の共通認識を持ちたい方
  • iOSアプリ開発以外でも役立つ設計力を身につけたい方
  • 全てのiOSエンジニア

https://peaks.cc/books/iOS_architecture

 

実際に本書を読んだ印象だと、あらゆる設計パターンをSwiftを使って紹介しているだけであり、iOS以外の所でもかなり役に立ちそうだと感じました。

「Swiftを使って紹介しているだけ」と言うと言葉が悪いように感じますが、あらゆる代表的な設計を歴史から説明されているので、MVC?MVP?MVVM?いろいろ聞くけどどう違うの?と思っている全てのエンジニア向けだと言っても良いでしょう。

もちろん、サンプルコードを読めるかどうかの問題はあるので、Swiftを読めるエンジニア向けではあります。言語に対する説明はないので、例えばprotocolやクロージャがわからない人はコードを読むのはツライと思います。

学びは多いですが、プログラミング初学者がアプリを作る前に設計パターンを知っておこう!みたいにして読むものではなさそうですね。まずはある程度作れるようになってから読んだ方がいい気がします。

 

紹介されている設計パターン

説明のある設計パターンは以下の通りです。

  • MVC
  • MVP
  • MVVM
  • Flux
  • Redux

また

  • Clean Architecture
  • Router
  • Coordinator

の説明があります。

聞いたことあるけどよくわかってない!というものがあれば対象読者だと思います(`・ω・´+)

 

第1部の感想

まずは「設計とは何か」から始まります。どうして設計パターンが必要なのかの説明があります。

そして、次に「名前の付け方」についての説明があります。Swiftでは短い名前よりも明確であることが重要視されてるよねとかそういう話です。関係ないけど、Swiftやってると他言語でcx + cy * sとか見るとウッってなっちゃう…。

第3章では、とあるSwiftで書かれたコードを「設計の原則に基づいて」修正していきます。修正前のコードとどうやって修正していくかが紹介されています。

第4章は「アーキテクチャのパターン」の解説になります。この章はSwiftはほとんど関係なく、MVC とは本来どういうものか、と言った本質の話になります。

Model – View- Controller の ModelってモデルってDBとか関係ないのね・・・という知見を得た。ビックリ

 

第1部はあらゆるパターンを適用する前の大前提についての紹介部分と言えるでしょう。ここだけで得るものが多い多い。

正直第1部が一番良かったっていうぐらい良かったですね。自分の実力的な問題もあるんですけども。

 

第2部の感想

第2部はそれぞれのアーキテクチャパターンを実際にSwiftのプロジェクトに適用していきます。作るものはほとんどの章で、GitHubのリポジトリ検索・ローカルへのお気に入り登録アプリです。

自分はMVCのモデルをDBのモデルっていうかエンティティ系のことだと思ってたぐらいには全然知らなかったので、今までやってたのは Cocoa MVC ってやつだったのか!って感じでした。まぁ、Cocoa MVC にも満たないナニカかもしれないけど…。

MVC、MVP、MVVM(RxSwiftなし)まではなんとか理解しました。

MVVM は RxSwift を利用した場合と利用しない場合の2パターン分紹介されていたんですが、RxSwift やったことないので雰囲気で理解することしかできませんでした。難しい。

 

Fluxに至っては 読めるはずなのに理解するのが難しいという状態になってしまって完全に :aho: になってました。む、ムズカシイ・・・・。

そして何故かReduxの章を読みながら、Redux良いぞ!!!!って気持ちになってました。Fluxが理解できなくて何故Reduxが理解できるんだ…。

ただ、Reduxに至っては15章にあるサンプルコード以外のサンプルがないんですよね。9章で紹介されてるやつのサンプルコードも是非見たいです。

 

Clean Architecture については理解したような理解してないようなそんな感じです。

CoordinatorやRouterは画面遷移をViewControllerから分離しようというものですが、これらについてはわりとすぐにでも実践できそうなので、一度やってみようと思います。すぐにできるのはRouterの方ですかね。

 

とにかく第2部全体を通して、知ってるSwiftなのに知らないSwiftだ!という印象でした。Cocoa MVC しか知らないマンには同じ言語なのに全然違うものに見えてしまいました。

そして一読だけで理解するのはかなり難しいです。

FluxやReduxに関しては、8章9章で作る規模のアプリだと煩わしさばかりが目立つような気がしますね。(でもそのための第3部がある!)

 

第3部の感想

もうなんもわからん。

な ん も わ か ら ん。

 

第3部はFluxとReduxの導入例の説明です。どちらもRxSwiftを用いています。サンプルコードを掻い摘んで重要な点の説明だけされています。

正直に言ってムズカシイ。ちょっとRxSwiftの勉強してからじゃないとダメですね。RxSwiftの勉強をしても多分ムズカシイ気がする。

第14章と第15章はどちらもテストコードの紹介までがされています。

なので、FluxやReduxを導入したい場合のサンプルとしてはとても優秀です。

自分にはまだ早かった。ぐぬぬ…

 

最後に

現時点では、「こういうパターンもあると知った」っていうレベルです。

でも知らなければ選択肢にもあげられない。そういう意味で、まずは知ることができて良かったです。

iOSエンジニアのバイブルになることは間違い無いと思います。

 

多分全ての設計パターンに精通する必要はないとは思います。本書もオムニバス形式で書かれていて、1人が全てに精通しているわけではありません。

だったら、Cocoa MVC に強い人であればいいじゃないか!と思うかもしれません。それも一つの手かもしれませんが、Cocoa MVC が全てのアプリに適応していれば他の設計パターンは要らないことになりますからね。

また、あらゆる設計パターンに当てはめる前の大前提でコケている場合が多いと思うので、その辺から意識していかないとなと思いました。

今書いているのはCocoa MVC なんだなっていう認識を持って、名前や設計の原則を意識することから始めていきたいです。

全てに精通する必要はなくても、各設計パターンがどんなものかを理解をするっていうのも一読だけではあまりできていないので、一度簡単なもので自分でもコードを書いてみないとなぁ….

どうでもいいけど、オムニバス形式の本って結構書き手の違いが出て読みづらかったりするんですが、本書はそんなことはなかったですね。

難しいけれど、これらを理解できて使いこなせるように頑張ります。

 

実のところテストコードすら書いたことがないので、次に積んでいる「iOSアプリ開発自動テストの教科書」を読んでからもう一度読もうと思います!

PEAKSさんでは、「iOSテスト全書」も執筆が決定しています。8月31日リリース予定なのでもうすぐですね!クラウドファンディング時にぶち込めてないので購入しないと…!

それではこの辺で。「iOSアプリ設計パターン入門」まだ入手してないiOSエンジニアさんは是非!

 

 

Book ,
コメントは認証制です。詳しくは下記の注意をお読みください。お気軽にコメントお願いします!

Write a Comment

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。