Reactで作るTODOアプリ|ドラッグ&ドロップ機能付き


目次

  1. はじめに
  2. アプリの要件定義
  3. 開発環境の構築
  4. React TODOアプリの作成手順
  5. TODOアプリのビルドとデプロイ
  6. ConoHa WINGへのアップロード手順
  7. まとめ

デモサイト

※記事の最後にはgithubでコードを公開してあります!!


1. はじめに

この記事では、Reactを使用したTODOアプリの作成から、ConoHa WINGにデプロイするまでの手順を詳しく解説します。初心者でも簡単に実装できるように、手順ごとにわかりやすく説明しています。


2. アプリの要件定義

以下の機能を持つTODOアプリを作成します。

必須機能

✅ タスクの追加・編集・削除機能
✅ タスクの移動(ドラッグ&ドロップ対応)
✅ タスクの状態管理(「アイデア」「実行」「完了」の3つ)
✅ 全てのタスクに「削除」ボタンと「編集」ボタンを配置

デザイン要件

✅ カラムレイアウト
✅ タスクの入力欄とタスクリストは直感的に操作可能
✅ モバイル対応のレスポンシブデザイン


3. 開発環境の構築

以下のツールとライブラリを使用します。
Node.js(v18以上推奨)
npm または yarn
React(v19.0.0)
@hello-pangea/dnd(ドラッグ&ドロップ機能)

手順

  1. Node.jsのインストール
  2. プロジェクトの作成
  3. 必要なライブラリのインストール
npx create-react-app todo-app
cd todo-app
npm install @hello-pangea/dnd

4. React TODOアプリの作成手順

① コンポーネントの設計

  • App.js:アプリ全体の管理
  • TodoForm.js:タスクの追加フォーム
  • TodoItem.js:タスク1つの要素
  • TodoList.js:タスクリストの表示とカラム管理

② データの管理

  • useState フックを利用し、以下のデータ構造でタスクを管理します。
[
  { id: "1", text: "サンプルタスク", status: "idea" },
  { id: "2", text: "別のタスク", status: "done" }
]

③ ドラッグ&ドロップの実装

  • @hello-pangea/dnd を利用し、タスクの移動機能を追加します。
  • ドロップ先が無効の場合は無視するロジックを実装します。

④ 編集・削除機能の実装

  • 各タスクに「編集」と「削除」ボタンを配置します。
  • 編集機能では、既存のテキストを変更可能にします。
  • 「完了」カラムに移動したタスクは、削除ボタンを追加します。

5. TODOアプリのビルドとデプロイ

Reactアプリはビルドすることで、静的なHTML/CSS/JSに変換されます。
以下のコマンドでビルドを行います。

npm run build

ビルドが完了すると、build フォルダが作成されます。


6. ConoHa WINGへのアップロード手順

  1. ConoHa WINGにログイン
  2. ファイルマネージャーを開く
  3. build フォルダ内のファイルを選択しアップロード
  4. .htaccess の作成
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]

index.html<head> タグ内に以下を追記し、パスを修正

<script defer src="/generator/todo-app/static/js/main.js"></script>
<link rel="stylesheet" href="/generator/todo-app/static/css/main.css">

7. まとめ

これで、Reactで作成したTODOアプリがConoHa WING上にデプロイされ、ドラッグ&ドロップ機能や編集・削除機能を備えたアプリが公開されました。

初心者の方でも手順に沿って進めることで、基本的なReactの実装やデプロイ手順を学ぶことができます。ぜひ今回の内容を参考に、あなたのオリジナルアプリ作りにチャレンジしてみてください。

Github サンプルコード

✪ 画像素材がないものはランダムで表示されるようになっています。フリー素材などでご用意ください。

おすすめChromeプラグイン一覧

プラグイン名特徴
GoFullPageウェブページ全体のスクリーンショットを簡単に取得できるブラウザ拡張機能です。
ColorZilla色を抽出するための拡張機能です。
WhatFontウェブページ上のフォントの情報を簡単に確認できるブラウザ拡張機能です。
PerfectPixelデザイナーが作成したデザインと実際にコーディングされたウェブページがどの程度一致しているかを確認・調整するためのブラウザ拡張機能です。

模写の手順

ステップ内容
ステップ 1構図を手書きか全画面スクショ(Go full page等)した後、ペイントツールで四角で囲い、大まかなclass,命名規則をあらかじめ決める。
ステップ 2HTMLの基本構造を作成する
ステップ 3CSSでレイアウトを模写する
ステップ 4 中級〜JavaScriptを追加して動きを再現する
ステップ 5最終調整を行い、検証ツールやPerfectPixel(chromeプラグイン)などで完成を確認する。