ちょっと話題の記事

これからクリーンアーキテクチャによるiOSアプリ開発をしようとしている人にオススメの4つの資料

2016.12.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんぬづは、今年は冬コミに初参加してみようかと企んでいる田中です。秋葉原に務めるからには、その文化を身をもって味わう必要があるかと思った次第で御座います。

この記事はiOSでクリーンアーキテクチャに興味がある人が対象です。「やろうかな?」「そもそもどんなものなのかな?」と考えている人は参考にしてください。

クリーンアーキテクチャを調べると、解説記事は数多く見つかります。私は「これだけ情報があれば理解できるだろう」と思っていましたが、いろいろな記事を読めど読めど、しっくりくる感覚がなかなか手に入らない状態に陥りました。そんな経験を元に、私がクリーンアーキテクチャによるアプリ開発を学習し、実際にコードを書いていく上でとても参考になった資料を紹介します。

対象読者

  • そもそもクリーンアーキテクチャとは?とお思いの方
  • これからiOSでクリーンアーキテクチャによるアプリ開発をやってみたいと考えている人
  • これからiOSでクリーンアーキテクチャの学習を始めようと思っている人

厳選したオススメ資料4選

まだMVC,MVP,MVVMで消耗してるの? iOS Clean Architectureについて

iOSにおけるクリーンアーキテクチャの概要と役割、書き方などの基本的なことから学びたい方にはこちらの記事がオススメです。

「クリーンアーキテクチャ」というキーワードで、iOSに限定せずともGoogle検索上位に出てくる有名なこちらの記事。マネーフォワード社のkoutalouさんが執筆なさっています。

クリーンアーキテクチャとはなにか、メリット/デメリット、他のアーキテクチャとの比較やiOSにおいて各役割がどういう関係性にあるかをわかりやすくまとめてあります。さらに、クリーンアーキテクチャで調べると「概要は書かれてはいるけれどイメージがつきにくい」と感じてしまう記事が多い中で、こちらの記事はサンプルコード付きで丁寧に解説されており、より理解しやすくなっています。

一度この記事を参考にクリーンアーキテクチャのサンプルを書いてみて、各役割が担うべき仕事、書き方などを理解するとこのエントリーで紹介する他の記事も読みやすくなります。

iOS Clean Architecture のすすめ

iOSにおけるクリーンアーキテクチャのDIを学びたい方にはこちらの記事がオススメです。

こちらも上の記事を書かれたkoutalouさんのスライドになります。

上で紹介した記事の内容をより凝縮させた内容になっています。それに加えて、DIを行うBuilderと、VIPERパターンにおけるRoutingの役割を担うWireframeという役割の解説も追加されています。

クリーンアーキテクチャのメリットであり、要件でもある「テスタビリティの高さ」を満たすためにDIは欠かせないものです。クリーンアーキテクチャにおいてDIを導入するとどういった作りになるのかという紹介がサンプルコードを交えて解説されています。

また、iOSのUIViewControllerクラスの画面遷移を行うpresentメソッドの作りには「UIViewControllerがUIViewControllerについて知っている(=依存する)状態が発生してしまう」という問題がありますが、これを解決するためにWireframeという役割が登場します。

持続可能な開発を目指す ~ ドメイン・ユースケース駆動(クリーンアーキテクチャ) + 単方向に制限した処理 + FRP

クリーンアーキテクチャの「依存の方向性を単一方向に揃える」要件について理解したい方にはこちらの記事がオススメです。

規模の大きなアプリケーション開発ではデータと処理の流れが追いづらいという問題が発生しがちです。それに対して、クリーンアーキテクチャでは依存の方向性を単一方向にするという解決が得られますが、その意味について図を交えて解説してくれている良い資料です。

The Clean Architecture | 8th Light

iOSでクリーンアーキテクチャを書くことに慣れ、人に布教したり説明する必要がある方にはこちらの記事がオススメです。

本家の記事です。

先にあげた三つの資料を読んで理解が進み、クリーンアーキテクチャによるiOSアプリを書くことにも慣れてくるとその素晴らしさを周りに布教したいという気持ちが抑えられなくなってくるでしょう。または、実際に手を動かしてみるとしっくりこないポイントがよりはっきりしてくるかもしれません。そのようなときにどの理解が正しく、どういう単語選び・基準をもってして議論すればよいかを把握しておく必要が出てきます。そんな時は原点であるこの記事に立ち返るのが一番でしょう。

クリーンアーキテクチャの同心円に描かれた図と、層・役割の本質はどこなのか、それを言葉で説明する必要が出た時、必ず役に立つ資料です。

CleanArchitecture

また、日本語に翻訳したバージョンもありますので、日本語が良いという方はこちらを参照してください。

まとめ

  • iOSにおけるクリーンアーキテクチャとは?
  • iOSにおけるクリーンアーキテクチャのDIを取り入れるには?
  • 依存の方向性が単一方向とは?
  • そもそもクリーンアーキテクチャってなんだっけ?

これらの理解に役立つ資料をご紹介しました。

「設計に正解はない」とはよく言われますが、この記事が読者のみなさまにとっていくつかの「決まった形」を手に入れ、より良いアプリ開発をしていくための一助となれば幸いです。

また、自分で書いた記事で恐縮ですがVP(View(Controller) <-> Presenter)部分のサンプルを紹介した記事もあります。クリーンアーキテクチャを実装する上でVP部分の実装はわかりやすいので、こちらも参考になるようでしたらお使いください。

参考・関連