はじめに
第1章 Clean Architecture
第2章 Dependency Injection
第3章 Single Page Application
第4章 Scalable React
さいごに
本書を手に取っていただきありがとうございます。この本を読まれているということは、Clean Architecture に興味があるか、React アプリケーション開発に興味があるか、もしくはその両方だと思います。Clean Architecture は 2012 年 8 月に Robert C. Martin に発表されて以来、プロダクト設計の方法論として注目を集めています。この手法はプロダクト開発全体をターゲットとしているため、従来は主にバックエンド開発やネイティブアプリ開発で採用されていました。しかし、近年のブラウザーの高機能化と JavaScript 周辺技術の発展により、SPA や WPA のような技術が普及し、Web フロントエンド単体で高度なアプリケーションを構築することが増えてきました。また、Firebase や AWS Amplify のようなフルマネージドでサーバーレスにバックエンドを構築できるようになり、ますます Web フロントエンドの責務が大きくなっています。そして、このように発展を続ける Web フロントエンドの技術を支える代表的な技術のひとつとして React や Redux があります。本書では、Clean Architecture の観点から、React や Redux で構築されたアプリケーションの設計をとらえなおし、また、ときには新たな設計の提案を行います。いままでは Clean Architecture があまり取り入れられてこなかった Web フロントエンド領域に対して、この手法を適用することを目指します。もちろん Clean Architecture は全てを解決してくれるような銀の弾丸では決してなく、対象のプロダクトやチームによってどう適用するべきかは変わってきます。本書が、React アプリケーション設計のその一歩先に到るための一助になれば幸いです。
本書では、まずはじめに Clean Architecture の背景とその基本原則について説明を行います。とくに SOLID の各原則と、依存関係の制約について詳しく解説します。Dependency Injection (DI) に関しては、具体的な実装を用いての解説に一章を割いています。Clean Architecture の基本を押さえた後、SPA や React の一般的な設計にたいして、Clean Architecture の観点から再考をします。その中で、「Redux 同心円図」、「コンポーネント同心円図」といったものを提案しています。
このように、Clean Architecture の視点から、React や Redux をみつめなおすことで、今までは気づかなかった側面を知ることができると期待しています。
本書は、React アプリケーションを開発した経験がある方を想定読者として執筆しました。そのため、TypeScript, React, Redux の技術的な詳細については説明は行わず、すでにある程度の知識がある前提で話を進めています。Clean Architecture については、背景や基本的な原則から解説しているので、はじめて触れる方でも読み進められるでしょう。
本書では、書籍名には二重鉤括弧『』をつけて表記します。また、本文中では書籍名を一文省略して表記します。例えば、『Clean Architecture 達人に学ぶソフトウェアの構造と設計』は『Clean Architecture』と表記します。
本書を通して、ReactアプリケーションにClean Architectureをどのように適用するかを議論していきます。その過程で、Clean Architectureの原則に従う部分もあれば、あえて無視する部分もあります。これは後に述べるように、Clean Architectureが経験則からベストプラクティスを抽出し抽象化したものであるため、全てを忠実に守ることが必ずしもいいとはいえないからです。言い換えると、適用するプロダクトやチームに応じて、従うべきルールを取捨選択することが重要になります。本書では、主要なルールを説明したうえで、Reactアプリケーション開発に還元する方法を提案します。本章では、守破離でいうところの「守」にあたるClean Architectureの原則を説明します。すでにClean Architectureについて知っている読者においては、読み飛ばしていただいて問題ありませんが、復習も兼ねて目を通していただけると幸いです。