作るアプリの概要
機能: タスクの追加・表示・編集・削除
データ:tasks テーブル(id, title, completed)
URL構成
GET /tasks→ タスク一覧を表示POST /tasks→ タスクを追加GET /tasks/{id}/edit→ タスクを編集PUT /tasks/{id}→ タスクを更新DELETE /tasks/{id}→ タスクを削除
開発の流れ
- Laravelプロジェクトを作成
- マイグレーションとモデルの作成
- ルーティング設定
- コントローラーの作成
- ビューの作成(Bladeテンプレート)
Laravelプロジェクトを作成
マイグレーションとモデルの作成
マイグレーションとは?
Laravelの マイグレーション(Migration) は、データベースのテーブル構造を コードで管理する仕組み です。
データベースを直接編集するのではなく、
マイグレーションファイルに テーブルの作成・変更のルールを記述 して、php artisan migrate コマンドで実行すると、データベースが更新されます。
まず、タスク管理のためのマイグレーションファイルを作成します。
コマンドプロンプトを起動して、laravelフォルダまで移動して以下のコメントを実行
php artisan make:model Task -mこのコマンドで以下の2つが生成されます:
app/Models/Task.php(モデル)database/migrations/YYYY_MM_DD_create_tasks_table.php(マイグレーション)
マイグレーションの編集
マイグレーションファイルを開いて、tasks テーブルの構造を定義します。
今回のテール部構造は以下のようにします。
| カラム名 | データ型 | 説明 |
|---|---|---|
| id | bigint (AUTO_INCREMENT) | 主キー(自動で増加) |
| title | string (VARCHAR) | タスクの名前 |
| completed | boolean (TINYINT) | タスクの完了フラグ (true=完了, false=未完了) |
| created_at | timestamp | 作成日時(自動で設定) |
| updated_at | timestamp | 更新日時(自動で設定) |
id(主キー)
- 各タスクに一意の番号(ID)が振られる。
bigintでAUTO_INCREMENTなので、新しいデータを入れるたびに増えていく。
title(タスクのタイトル)
- タスクの名前を保存する。
string型(VARCHAR 相当)なので、文字列を格納できる。
completed(完了フラグ)
- タスクが完了したかどうかを
true/falseで管理。 - デフォルトは
false(未完了)。
timestamps()(作成日時・更新日時)
created_at(データが追加された日時)updated_at(データが更新された日時)- Laravelが自動で管理する。
実際にファイルを編集する
database/migrations/YYYY_MM_DD_create_tasks_table.php を開き、up() メソッドを以下のように編集してください。
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->id();
$table->string('title'); // タスク名
$table->boolean('completed')->default(false); // 完了フラグ
$table->timestamps(); // created_at, updated_at
});
}$table->id()の正体$table->id(); は $table->bigIncrements('id') の省略形 です。$table->bigIncrements('id');bigIncrements() の特徴は
・BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY を作成する。
・Laravelのマイグレーションでは デフォルトでAUTO_INCREMENT が有効 になる。
マイグレーションを実行
php artisan migratetasks テーブルがデータベースに作成される。
CREATE TABLE `tasks` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR(255) NOT NULL,
`completed` TINYINT(1) NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NULL DEFAULT NULL,
`updated_at` TIMESTAMP NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
実際はこんなSQLが実行されています。
マイグレーション実行前にphp artisan migrate --pretend で事前にSQLをチェックできます。
モデルの編集
モデル app/Models/Task.php を開いて、以下のように編集します。
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
use HasFactory;
protected $fillable = ['title', 'completed'];
}これで、Task モデルを通じてタスクの作成・更新・取得ができるようになりました。
HasFactory とは?
HasFactory は LaravelのEloquentモデルにおいて、データを簡単に作成するための「ファクトリ機能」 を提供するトレイト(trait)です。
通常、データベースにレコードを追加するには Task::create([...]) のように手動でデータを作成する必要がありますが、ファクトリを使うと、テストデータを自動生成 できます。
テストデータを入れる
Laravel Tinkerを使って、テストデータを作成します
Laravel Tinker は、Laravel に組み込まれている REPL(Read-Eval-Print Loop) ツールで、データベースの操作やコードのテストを手軽に実行できる 対話型シェル です。
Tinker を起動
php artisan tinkerこれで、Tinker が起動し、以下のような表示になります。

次のコードをいれると…
App\Models\Task::factory()->count(10)->create();これだけで tasks テーブルにランダムな10件のデータが自動生成される!
実際に入っているか確認してみる
App\Models\Task::all();実行結果

※phpAdminでも確認できます
controllerを作る
以下のコマンドを実行してください。
php artisan make:controller TaskControllerapp/Http/Controllers/TaskController.php が作成されます。
コントローラーに一覧表示の処理を追加
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Task;
class TaskController extends Controller
{
public function index()
{
$tasks = Task::all(); // すべてのタスクを取得
return view('tasks.index', compact('tasks'));
}
}
Task::all();→tasksテーブルからすべてのデータを取得。-
return view('tasks.index', compact('tasks'));
→ 取得したデータをtasks/index.blade.phpで表示。
ルーティングを設定する
Laravel の ルーティング(Routing) とは、「URL と処理を結びつける仕組み」 のことです。
例えば、example.com/users にアクセスしたときに、どの処理を実行するのかを決めるのがルーティングです。
use App\Http\Controllers\TaskController;
Route::get('/tasks', [TaskController::class, 'index']);上記を追記してください。
/tasks にアクセスすると TaskController@index が実行されるようになります
ビュー(表示用のBladeテンプレート)を作成
resources/views/tasks/index.blade.php を作成し、以下のコードを追加してください。

このページでやったこと
- マイグレーション でデータベースのテーブルを作成
- Eloquentモデル でデータを操作
- ファクトリ でテストデータを作成
- コントローラー を使ってデータを取得&ビューに渡す
- ルーティング でURLと処理をつなげる
- Bladeテンプレート でデータを表示










コメントを残す