【2026年版】脱・スパゲッティコード!拡張性が止まらないReactプロジェクトのフォルダ構成と分割術
あけましておめでとうございます!元日から学習を継続されるその姿勢、本当に素晴らしいです。2026年のスタートを一緒に切れることを光栄に思います。本年もよろしくお願いいたします。
昨日は50日目の節目として、アプリの全体設計と環境構築について学びました。本日51日目は、いよいよ「プロジェクトのフォルダ構造」と、クリーンなコードを保つための「コンポーネントの分割指針」 について深掘りします。
はじめに:なぜ「フォルダ構成」が重要なのか?
アプリを作り始めると、ファイル数はあっという間に数十個に増えます。適当な場所にファイルを置いていると、「あのボタンのコード、どこだっけ?」と探すだけで時間を浪費してしまいます。
実務でも通用する、「見通しの良いフォルダ構成」 を最初に固めておくことが、爆速開発への近道です。
💡 1. 推奨されるディレクトリ構造 (Bulletproof React参考)
モダンなReact開発でよく使われる、機能ごとに分ける構成案です。
src/
├── assets/ # 画像、アイコン、フォント
├── components/ # 共通パーツ(Button, Input, Cardなど)
├── features/ # 機能単位の塊(Auth, TodoList, UserProfileなど)
│ └── todo/
│ ├── components/ # Todo専用の部品
│ ├── hooks/ # Todo専用のカスタムフック
│ └── types/ # 型定義
├── hooks/ # アプリ全体で使うカスタムフック (useAuthなど)
├── pages/ # 各画面のルートコンポーネント(Routerと対応)
├── services/ # API通信(axios/fetch)のロジック
└── utils/ # 共通の関数(日付フォーマットなど)
💡 2. コンポーネント分割の「3つの基準」
一つのファイルが300行を超えたら、分割を検討しましょう。基準は以下の通りです。
再利用性: 他の場所でも使いそうか?(例:送信ボタン)
責任の分離: 「見た目」と「複雑なロジック」が混ざりすぎていないか?
可読性: 1つのコンポーネントが1つのことだけ(Single Responsibility)をしているか?
💡 3. 実践:Atomic Designを簡略化して取り入れる
本格的なAtomic Designは複雑すぎることが多いため、最初は以下の2段階で考えるのがおすすめです。
UI Components (Atoms/Molecules): スタイルのみに集中し、特定のデータに依存しない部品。
Feature Components: API通信やState管理を行い、UI Componentsを組み合わせて特定の機能を作る部品。
📝 51日目のまとめと課題
✅ 本日の習得ポイント
ディレクトリ構成: features フォルダを作ることで、機能ごとの独立性が高まり管理しやすくなる。
関心の分離: 見た目(UI)とロジック(Hook)を分けることで、テストや修正が容易になる。
2026年のトレンド: 巨大な一つのコンポーネントを作るのではなく、小さく純粋な部品を組み上げる「コンポーザブル」な設計。
📝 51日目の課題
昨日決めたアプリのアイデアで、「共通で使えそうな部品(Buttonなど)」と「特定の機能に紐づく部品(TaskListなど)」 を書き出してみてください。
Viteで作ったプロジェクト内に、src/components と src/features フォルダを作成してみましょう。
もっとReactを学びたい人はここから!
#駆け出しエンジニアと繋がりたい #プログラミング学習 #React #100DaysOfCode #今日の積み上げ #フロントエンド設計
