create-react-appで開発開始!チーム開発でも安心なReactプロジェクトの作り方
🏁 はじめに:Reactプロジェクト、どう始める?
Reactはモダンなフロントエンド開発に欠かせないライブラリですが、
「最初の環境構築でつまずいた」
「create-react-app(CRA)で始めたものの、チーム開発での構成に不安がある」
という声をよく聞きます。
本記事では、create-react-appを使ったプロジェクトの立ち上げから、チームでの実務開発を見据えた構成までを、
実践的なコードと経験に基づいて解説します。
初心者から若手エンジニアまで、「あ、こうやるとスムーズだな」と思えるノウハウを詰め込みました。
🔍 Reactとcreate-react-appの基本理解
Reactとは?
ReactはFacebookによって開発されたUIライブラリで、コンポーネントベースのアーキテクチャが特徴です。
- 再利用性が高い
- 仮想DOMによる高速描画
- 宣言的UI設計
といった利点から、SPA(Single Page Application)開発に多く使われています。
create-react-appとは?
create-react-app
(CRA)は、Reactアプリの雛形を自動生成するCLIツールです。
開発者は面倒なWebpackやBabelの設定を意識せず、すぐにコーディングに集中できます。
npx create-react-app my-app
cd my-app
npm start
上記のように、3ステップでReact開発をスタートできます。
💻 実務向けプロジェクト構成:create-react-appの次の一手
1. フォルダ構成のカスタマイズ
CRAで生成される初期構成は最低限です。チーム開発では以下のように整理しましょう:
my-app/
├── public/
├── src/
│ ├── assets/ # 画像やスタイルなどの静的ファイル
│ ├── components/ # UI部品
│ ├── pages/ # ページ単位のコンポーネント
│ ├── hooks/ # カスタムフック
│ ├── utils/ # 共通処理
│ ├── services/ # API呼び出しなどの外部連携
│ └── App.tsx
└── ...
2. TypeScript化
実務では型安全性が非常に重要です。TypeScriptを導入しましょう:
npx create-react-app my-app --template typescript
3. ESLintとPrettierの導入
コード品質を保つために、静的解析とフォーマッタは必須です:
npm install -D eslint prettier eslint-config-prettier eslint-plugin-react
.eslintrc.json
や .prettierrc
をプロジェクトルートに配置し、CIで自動チェックするようにします。
🧪 コーディング実例:シンプルなToDoアプリ
✅ 1. 型付きコンポーネントの作成
// src/components/TodoItem.tsx
import React from "react";
type Props = {
title: string;
done: boolean;
};
const TodoItem: React.FC<Props> = ({ title, done }) => {
return (
<div style={{ textDecoration: done ? "line-through" : "none" }}>
{title}
</div>
);
};
export default TodoItem;
🧠 2. 状態管理(useState)
// src/pages/Home.tsx
import React, { useState } from "react";
import TodoItem from "../components/TodoItem";
const Home: React.FC = () => {
const [todos, setTodos] = useState([
{ title: "Reactの勉強", done: false },
{ title: "Qiitaの記事を書く", done: true },
]);
return (
<div>
<h1>My Todo List</h1>
{todos.map((todo, index) => (
<TodoItem key={index} title={todo.title} done={todo.done} />
))}
</div>
);
};
export default Home;
💡 実務経験から得たTIPSとよくある失敗
✅ よくあるTIPS
シーン | 実務で使えるポイント |
---|---|
コードレビュー |
eslint-plugin-jsx-a11y でアクセシビリティ対応 |
API連携 |
axios + useEffect の責任分離を意識 |
チーム開発 |
absolute import 設定で ../../ 地獄からの脱却 |
// jsconfig.json
{
"compilerOptions": {
"baseUrl": "src"
}
}
❌ よくある失敗
問題 | 原因と解決策 |
---|---|
再描画が無限ループ |
useEffect の依存配列が不適切 |
コンポーネント肥大化 |
分離原則 を守り、小さな部品に分割 |
状態が複雑 |
useReducer か状態管理ライブラリの検討 |
🚀 応用:React QueryやZustandの導入
チーム開発では状態管理やAPIキャッシュの最適化が重要です。
- React Query: サーバー状態を管理するのに最適
- Zustand: 軽量で学習コストの低い状態管理
どちらも create-react-app
に簡単に導入できます:
npm install @tanstack/react-query
📌 まとめ:CRAで始める、けれどそれだけじゃない
項目 | ポイント |
---|---|
CRAの役割 | 開発スタートを簡素化。設定は隠蔽されているが柔軟性に欠ける場合も |
チーム開発視点 | TypeScript、ESLint、フォルダ構成などの整備が重要 |
学びの先へ | 状態管理、パフォーマンス最適化への発展を見据える |
🔮 今後の展望
- Next.jsへのステップアップ
- Storybookによるコンポーネントドキュメント化
- Vitestなどのテスト戦略の導入
🙋♀️ 最後に
「create-react-appを使って終わり」ではなく、プロジェクトとしてどう育てるかが大切です。
📎 GitHubのサンプルコード:
👉 サンプルリポジトリはこちら
(※あなたの実際のGitHubリンクを入れてください)