0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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リンクを入れてください)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?