これからクリーンアーキテクチャによるiOSアプリ開発をしようとしている人にオススメの4つの資料
はじめに
こんぬづは、今年は冬コミに初参加してみようかと企んでいる田中です。秋葉原に務めるからには、その文化を身をもって味わう必要があるかと思った次第で御座います。
この記事はこれからiOSでクリーンアーキテクチャを「やろうかな?」「そもそもどんなものなのかな?」といった人に向けたものです。調べると数多く出てくる解説記事の中で、私がクリーンアーキテクチャによるアプリ開発を学習し、実際にコードを書いていく上でとても参考になった資料を紹介する内容になっています。
対象読者
- そもそもクリーンアーキテクチャとは?とお思いの方
- これからiOSでクリーンアーキテクチャによるアプリ開発をやってみたいと考えている人
- これからiOSでクリーンアーキテクチャの学習を始めようと思っている人
この記事の概要
「クリーンアーキテクチャでアプリを書くぞ!」と言ったときに、「クリーンアーキテクチャ」「クリーンアーキテクチャ iOS」などの単語でGoogle検索をかけると、世の中にはすでに多くの記事が執筆されています。私は「これだけ情報があればなんとかなるだろう」と思ったものの、いろいろな記事を読めど読めどしっくりとくる感覚がなかなか手に入らない状態に陥りました。
そんな経験をもとに、読者のみなさまがこれからクリーンアーキテクチャによるiOSアプリ開発をしていくうえで「どこから始めていけばいいのか」「どういった順番で学んでいけばいいのか」という悩みを解決するために、この記事ではオススメの資料を紹介していきます。
厳選したオススメ資料4選
まだMVC,MVP,MVVMで消耗してるの? iOS Clean Architectureについて
iOSにおけるクリーンアーキテクチャの概要と役割、書き方などの基本的なことから学びたい方にはこちらの記事がオススメです。
「クリーンアーキテクチャ」というキーワードで、iOSにくくらずにGoogle検索をかけても上位に出てくる有名なこちらの記事。マネーフォワードさんのkoutalouさんがアドベントカレンダーの記事として執筆なさっています。
クリーンアーキテクチャとはなにか、メリット/デメリット、他のアーキテクチャとの比較やiOSにおいて各役割がどういう関係性にあるかをわかりやすくまとめてあります。「クリーンアーキテクチャで調べると、概要は書かれてはいるけれどイメージがつきにくい」というのは私の感想ですが、こちらの記事はサンプルコード付きで丁寧に解説されており、コードがGitHubに上げられているのでダウンロードして学習することもできます。
一度この記事を参考にクリーンアーキテクチャのサンプルを書いてみて、各役割が担うべき仕事、書き方などを理解すると他の記事も読みやすくなります。
iOS Clean Architecture のすすめ
iOSにおけるクリーンアーキテクチャのDIを学びたい方にはこちらの記事がオススメです。
こちらも上の記事を書かれたkoutalouさんのスライドになります。
上で紹介した記事の内容をより凝縮させた内容になっています。それに加えて、DIを行うBuilderとVIPERパターンにおけるRoutingの役割を担うWireframeという役割の解説も追加されています。
クリーンアーキテクチャのメリットであり、要件でもある「テスタビリティの高さ」を満たすためにDIは欠かせないものになっています。クリーンアーキテクチャにおいてDIを導入するとどういった作りになるのかという紹介がサンプルコードを交えて解説されています。
また、iOSのUIViewControllerクラスの画面遷移を行うpresentメソッドの作りには**「UIViewControllerがUIViewControllerについて知っている(=依存する)状態が発生してしまう」という問題がありますが、これを解決するためにWireframeという役割が登場します。Wireframeに関してもこの資料で解説がされているのでとても参考になります。
持続可能な開発を目指す ~ ドメイン・ユースケース駆動(クリーンアーキテクチャ) + 単方向に制限した処理 + FRP
クリーンアーキテクチャの「依存の方向性を単一方向に揃える」要件について理解したい方にはこちらの記事がオススメです。
規模の大きなアプリケーション開発ではデータと処理の流れが追いづらいという問題が発生しがちです。それに対してクリーンアーキテクチャでは依存の方向性を単一方向にするという解決が得られますが、その意味について図を交えて解説してくれている良い資料です。
The Clean Architecture | 8th Light
iOSでクリーンアーキテクチャを書くことに慣れ、人に布教したり説明する必要がある方にはこちらの記事がオススメです。
本家の記事です。
先にあげた三つの資料を読んで理解が進み、クリーンアーキテクチャによるiOSアプリを書くことにも慣れてくるとその素晴らしさを周りに布教したいという気持ちが抑えられなくなってくるでしょう。または実際に手を動かしてみるとしっくりこないポイントがよりはっきりしてくるかもしれません。そのようなときにどの理解が正しく、どういう単語選び・基準をもってして議論すればよいかを把握しておく必要が出てきます。その時は原点に立ち返るのが一番でしょう。
クリーンアーキテクチャの同心円に描かれた図と層・役割の本質はどこなのか、それを言葉で説明する必要が出た時、必ずや役に立つ資料であるはずです。
また、日本語に翻訳したバージョンもありますので、日本語の方が良いという方はこちらを参照してください。
まとめ
- iOSにおけるクリーンアーキテクチャとは?
- iOSにおけるクリーンアーキテクチャのDIを取り入れるには?
- 依存の方向性が単一方向とは?
- そもそもクリーンアーキテクチャってなんだっけ?
これらの理解に役立つ資料をご紹介しました。
「設計に正解はない」とはよく言われますが、この記事が読者のみなさまにとっていくつかの「決まった形」を手に入れ、より良いアプリ開発をしていくための一助となれば幸いです。
また、自分で書いた記事で恐縮ですがVP(View(Controller) <-> Presenter)部分のサンプルを紹介した記事もあります。クリーンアーキテクチャを実装する上でVP部分の実装はわかりやすいので、こちらも参考になるようでしたらお使いください。