プログラミング

Laravel Todoリスト作成ガイド

Laravel 5を使用してシンプルなTodoリストアプリを作成する方法について、完全かつ包括的な記事をお届けします。このチュートリアルでは、Laravelの基本的な使い方を学びながら、Todoリストを作成していきます。LaravelはPHPで書かれたフレームワークで、簡潔かつ強力なツールを提供しており、アプリケーションの開発が効率的に行えます。

必要な環境

まず、Laravelを使った開発には以下の環境が整っていることが前提となります。

  • PHP: 7.1以上

  • Composer: Laravelのパッケージ管理ツール

  • データベース: MySQLまたはSQLite

  • Webサーバー: ApacheやNginx(またはPHPの内蔵サーバー)

また、LaravelのインストールにはComposerが必要です。もしComposerがインストールされていない場合は、Composer公式サイトからインストールしてください。

第1章: Laravelのインストール

  1. プロジェクトの作成

    Laravelを新規にインストールするために、以下のコマンドを実行します。このコマンドは、Laravelの最新バージョンをインストールします。

    bash
    composer create-project --prefer-dist laravel/laravel todolist

    これで、todolistというディレクトリにLaravelのプロジェクトが作成されます。

  2. ディレクトリに移動

    作成したプロジェクトに移動します。

    bash
    cd todolist
  3. Laravel開発サーバーを起動

    Laravelには開発用サーバーが内蔵されています。以下のコマンドでサーバーを起動します。

    bash
    php artisan serve

    起動後、http://localhost:8000でLaravelの初期画面が確認できます。

第2章: データベースの設定

Todoリストでは、データを保存するためにデータベースを使用します。まず、Laravelが提供するデータベース設定を行います。

  1. .envファイルの編集

    プロジェクトのルートにある.envファイルを開き、データベースの設定を行います。以下はMySQLを使用する場合の設定例です。

    env
    DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=todolist DB_USERNAME=root DB_PASSWORD=
  2. データベースの作成

    設定したデータベース名(todolist)でMySQLにデータベースを作成します。MySQLにログインして、以下のコマンドでデータベースを作成します。

    sql
    CREATE DATABASE todolist;

第3章: モデルとマイグレーションの作成

Laravelでは、データベースのテーブルとやり取りするために「モデル」を使用します。また、マイグレーションを使ってデータベースのテーブルを管理できます。

  1. モデルとマイグレーションの作成

    Todoリストに必要なテーブルは、タスク(Todo)のデータを格納するためのtasksテーブルです。以下のコマンドを実行して、Taskモデルとそのマイグレーションファイルを作成します。

    bash
    php artisan make:model Task -m

    このコマンドで、app/Models/Task.phpにモデルが、database/migrationsフォルダにマイグレーションファイルが作成されます。

  2. マイグレーションの編集

    database/migrationsフォルダに作成されたマイグレーションファイルを開き、tasksテーブルを作成するために、以下の内容を追加します。

    php
    public function up() { Schema::create('tasks', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('description')->nullable(); $table->timestamps(); }); }

    これで、tasksテーブルには、title(タイトル)、description(詳細)、created_atupdated_at(自動生成されるタイムスタンプ)のカラムが作成されます。

  3. マイグレーションの実行

    次に、マイグレーションを実行して、データベースにテーブルを作成します。

    bash
    php artisan migrate

第4章: コントローラーの作成

次に、Todoリストのタスクを管理するためのコントローラーを作成します。

  1. コントローラーの作成

    以下のコマンドでTaskControllerを作成します。

    bash
    php artisan make:controller TaskController
  2. コントローラーの編集

    app/Http/Controllers/TaskController.phpを開き、Todoリストに必要なCRUD操作(作成、読み取り、更新、削除)を実装します。

    php
    public function index() { $tasks = Task::all(); return view('tasks.index', compact('tasks')); } public function create() { return view('tasks.create'); } public function store(Request $request) { $request->validate([ 'title' => 'required|string|max:255', 'description' => 'nullable|string', ]); Task::create($request->all()); return redirect()->route('tasks.index'); } public function edit(Task $task) { return view('tasks.edit', compact('task')); } public function update(Request $request, Task $task) { $request->validate([ 'title' => 'required|string|max:255', 'description' => 'nullable|string', ]); $task->update($request->all()); return redirect()->route('tasks.index'); } public function destroy(Task $task) { $task->delete(); return redirect()->route('tasks.index'); }

第5章: ビューの作成

  1. ビューの作成

    resources/views/tasksディレクトリを作成し、その中にindex.blade.phpcreate.blade.phpedit.blade.phpを作成します。これらは、それぞれタスクの一覧表示、作成フォーム、編集フォームに対応します。

  2. タスク一覧ビュー (index.blade.php)

    php
    @foreach ($tasks as $task)

    {{ $task->title }}

    {{ $task->description }}

    "{{ route('tasks.edit', $task->id) }}">編集
    "{{ route('tasks.destroy', $task->id) }}" method="POST"> @csrf @method('DELETE')
    @
    endforeach
  3. タスク作成フォーム (create.blade.php)

    php
    "{{ route('tasks.store') }}" method="POST"> @csrf "text" name="title" id="title" required>

第6章: ルートの設定

最後に、routes/web.phpにルートを設定します。

php
Route::resource('tasks', TaskController::class);

これで、tasksに関連するCRUD操作がすべて対応するルートに紐付けられました。

まとめ

ここまでで、Laravelを使用してシンプルなTodoリストアプリを作成する準備が整いました。次回の部分では、さらに細かいカスタマイズやフロントエンドの改善を行っていきます。このチュートリアルを通じて、Laravelの基本的な使い方や、データベースとの連携方法を理解できたと思います。次回もぜひお楽しみに!

Back to top button