この記事では、Laravelの構成要素を解説し、Laravelを使って小規模プロジェクトを立ち上げる方法を説明します。
Laravelは、シンプルさ、多様性、強力な機能により開発者に広く支持されている強力で優雅なPHPのWebアプリケーションフレームワークです。長年にわたり、Laravelは大規模から小規模までのプロジェクトのためのデファクトスタンダードのPHPフレームワークとなっています。
Laravelでの始め方: 前提条件
Laravel開発に入る前に、必要なツールやソフトウェアがすべてインストールされていることを確認する必要があります。以下が必要なものです。
-
PHP。LaravelはPHP上で動作するため、まずはシステムにPHPがインストールされているか確認します。PHPのインストールの有無が不明な場合は、ターミナルまたはコマンドプロンプトを開き、
php -v
と入力してください。PHPがインストールされていればバージョン番号が表示されます。インストールされていなければ、インストールする必要があります。システムにPHPをインストールする方法はいくつかあります:
ローカルインストール。コンピュータ上に直接PHPをインストールできます。PHPのダウンロードページにアクセスして、オペレーティングシステムに合った最新バージョンを入手してください。
Laravel Homestead。PHP開発初心者の方は、Laravel Homesteadを利用してよりスムーズなセットアップを行うことを検討してください。HomesteadはLaravelのための完全な開発環境を提供する事前にパッケージ化されたVagrantボックスです。インストール方法はこちらをご覧ください。
-
Composer。LaravelはComposerを依存関係管理に使用します。ComposerはデフォルトのPHP依存関係マネージャであり、広く使用されており、詳細に文書化されています。
-
Laravelインストーラー. LaravelはLaravelインストーラーを使用してシステム全体にインストールできます。これは、新しいLaravelプロジェクトの作成プロセスを合理化および簡素化する便利なコマンドラインツールです。システム全体にインストールするには、以下の手順に従ってください:
- ターミナルまたはコマンドプロンプトを開きます。
- 以下のComposerコマンドを実行します:
composer global require laravel/installer
インストールが完了したら、Composerのグローバルbinディレクトリがシステムの「PATH」に含まれていることを確認してください。これにより、どこからでも
laravel
コマンドを実行できます。Homesteadの軽量な代替手段として、Laravel Herdを検討してみてください。Herdは、Laravelプロジェクトに特化したDockerベースのローカル開発環境です。Herdの詳細や、こちらで設定方法を学ぶことができます。
PHP、Composer、Laravelインストーラーで開発環境を設定するか(またはホームステッドやハードなどのオプションを探る)、Laravelの旅に出る準備が整います。次のセクションでは、新しいLaravelプロジェクトの作成、ディレクトリ構造の探索、開発環境の設定のプロセスを説明します。
新しいLaravelプロジェクトの設定
開発環境が整ったので、新しいLaravelプロジェクトを作成する時間です。新しい、「空の」プロジェクトを作成するには、次のターミナルコマンドを使用できます。
composer create-project --prefer-dist laravel/laravel project-name
project-name
を実際のプロジェクト名に置き換えてください。このコマンドは、Laravelの最新バージョンをダウンロードし、必要なファイルと依存関係を含む新しいプロジェクトディレクトリを設定します。
ディレクトリ構造:Laravelプロジェクトを操作する
新しいLaravelプロジェクトを作成すると、整然としたディレクトリ構造にたどり着きます。この構造を理解することは、効果的なLaravel開発に不可欠です。以下は、いくつかの主要なディレクトリとその目的です。
- アプリケーション。このディレクトリには、コントローラー、モデル、サービスプロバイダーなど、アプリケーションのコアロジックが含まれています。
- ブートストラップ。Laravelのブートストラップと設定ファイルはここに置かれています。
- 設定。アプリケーションの様々なコンポーネントの設定ファイルはここにあり、データベース接続やサービスなどの設定をプロジェクト内の単一のポイントから見つけてカスタマイズできます。
- データベース。このディレクトリでは、LaravelのEloquent ORMで使用するデータベースのマイグレーションとシードを定義します。Eloquentはデータベース管理を簡素化します。
- 公開。CSS、JavaScript、画像などの公開可能な資産はここに属します。このディレクトリには、アプリケーションのエントリーポイントである
index.php
ファイルも含まれています。 - リソース。アプリケーションの生の、コンパイルされていない資産、例えばBladeテンプレート、Sass、JavaScriptなどはここに保存されています。
- ルート。Laravelのルーティング設定はこのディレクトリで管理されます。
- ストレージ。一時ファイルやキャッシュファイル、ログはここに保存されます。
- ベンダー。Composerはこのディレクトリでプロジェクトの依存関係を管理します。ダウンロードされたライブラリはすべてこのディレクトリにあります。
設定:データベースのセットアップと環境変数
データベース接続を設定するために、プロジェクトのルートディレクトリにある.env
ファイルを開く必要があります。ここで、データベースの種類、ホスト、ユーザー名、パスワード、およびデータベース名を指定できます。Eloquent ORMのおかげで、Laravelは複数のデータベース接続をサポートし、さまざまなプロジェクト要件に対応できるようになっています。
.envファイルの理解
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=my_username
DB_PASSWORD=my_password
.env
ファイルは、データベース接続詳細、APIキー、その他の設定など、環境固有の設定値を定義する場所です。.env
ファイルに見られるシンプルな例を見てみましょう:
- この例では:
-
DB_CONNECTION
は、使用しているデータベースドライバのタイプ(MySQL、PostgreSQL、SQLiteなど)を指定します。 -
DB_HOST
は、データベースサーバーがあるホストを指定します。 -
DB_PORT
は、データベースサーバーが実行されているポートを指定します。
DB_DATABASE
は、接続したいデータベースの名前を指定します。
DB_USERNAME
およびDB_PASSWORD
は、データベースにアクセスするために必要なユーザー名とパスワードを指定します。
環境変数の使用
データベースの資格情報のような機密情報を安全に保つことは重要です。Laravelは、これを実現するために環境変数の使用を奨励しています。.env
ファイルに資格情報をハードコーディングする代わりに、設定ファイルでそれらを参照できます。
例えば、Laravelの設定ファイル(config/
ディレクトリにあります)では、データベースの設定を以下のように参照できます:
'mysql' => [
'driver' => env('DB_CONNECTION', 'mysql'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
// ...
],
ここで、env()
関数は.env
ファイルから指定された環境変数の値を取得します。変数が見つからない場合、2番目の引数として提供されたデフォルト値にフォールバックします。
設定ファイルを使用することで、機密データをより安全な場所に保存し、開発環境や本番環境などの異なる環境間で設定を簡単に切り替えることができます。
Laravelプロジェクトが作成され、ディレクトリが整理され、データベースが設定されたので、Webアプリケーションの構築を開始する準備が整いました。次のセクションでは、ルーティング、コントローラー、およびフロントエンドビューのためのBladeテンプレートとの連携に焦点を当てます。
ルーティング、コントローラー、およびビュー:Laravelアプリケーションの核心
Laravelでは、ルーティング、コントローラー、およびビューがHTTPリクエストを処理し、動的なWebページをレンダリングするために協力します。これらの概念を理解することは、LaravelでWebアプリケーションを作成するために不可欠です。
要するに、HTTPリクエストはルーターによって受信され、それがどのコントローラーがアクションを処理すべきかを知ることができます。コントローラーは情報の処理を担当し、その処理された情報をビューを通じて表示します。
ルーティング
Laravelでは、routes/web.php
ファイルでルートを定義できます。基本的なルート定義は次のようになります:
Route::get('/welcome', function () {
return view('welcome');
});
この例では、アクセスされるとwelcome
ビューを返すルートを設定しています。ルートは、上記で述べたようにコントローラアクションを呼び出すためにも使用され、コードをより効率的に整理することができます。
コントローラの作成
コントローラは、ルートとアプリケーションのロジックの間の橋渡しを行います。コントローラを作成するには、make:controller
コマンドを使用できます。
php artisan make:controller YourControllerName
新しいコントローラには、アプリケーション内の異なるアクションに対応するメソッドが含まれており、ページの表示やフォームデータの処理などがその例です。
ビューとBladeテンプレート
Laravelのビューは、アプリケーションのデータをユーザーに提示する役割を担います。LaravelはデフォルトでBladeと呼ばれるテンプレートエンジンを使用しており、動的で再利用可能なビューの作成を簡素化します。コントローラメソッドでビューをレンダリングする例を以下に示します。
public function index()
{
$data = ['name' => 'John'];
return view('welcome', $data);
}
この例では、welcome
ビューがデータとともにレンダリングされており、ここでは'name'
が渡されています。
Bladeは条件文、ループなどを通じて動的コンテンツを作成できる非常に強力なテンプレートエンジンです。
データベースのマイグレーションとシード
Laravelのデータベースのマイグレーションとシーディングシステムを使って、データベースのスキーマを定義し、初期データでそれを埋めることができます。マイグレーションをバージョン管理されたデータベースの変更と見なし、シーディングをサンプルデータを追加するプロセスと見なすことができます。
マイグレーションとシーディングは、環境間でデータベースの一貫性を保つための非常に強力な概念です。
マイグレーションを作成するには、make:migration
コマンドを使用できます。
php artisan make:migration create_table_name
生成されたマイグレーションファイルを編集してテーブル構造を定義し、Artisanを使用してマイグレーションを実行できます。
php artisan migrate
シーディングは、テストおよび開発のためにテーブルに初期データを埋めるためによく使用されます。シーダーを作成するには、make:seeder
コマンドを使用し、実行することができます。
php artisan db:seed
データベースとの対話のためのモデルの作成
LaravelのEloquent ORMは、データベースをオブジェクトのように扱うことでデータベースとの対話を簡素化します。モデルを作成するには、make:model
コマンドを使用します。
php artisan make:model YourModelName
モデルでテーブルとリレーションシップを定義することで、データの取得と操作を容易にします。たとえば、users
テーブルからすべてのレコードを取得するには:
$users = YourModelName::all();
これらの知識を駆使し、ルーティング、コントローラ、ビュー、データベースのマイグレーション、シーディング、およびモデルを組み合わせることで、Laravelで動的なWebアプリケーションを構築する準備が整いました。次のセクションでは、シンプルなCRUDアプリケーションを作成し、より高度なLaravelの機能を探ります。
LaravelでシンプルなCRUDアプリケーションを作成する
ララバルの旅を次の段階に進めるために、CRUDアプリケーションを構築しましょう。この場合、単純な書籍登録アプリケーションで、書籍の作成、読み取り、更新、削除ができます。この実践的な演習は、ララバルでのCRUD操作の実装方法を理解するのに役立ちます。
この記事のサイズのため、アプリケーションの初期ページのみを作成することに焦点を当てます。あなたがこのアプリケーションを完成させるためのものです!
ステップ1: 書籍テーブルのマイグレーションを作成する
書籍テーブルのためのマイグレーションを生成するために、以下のコマンドを使用しましょう。
php artisan make:migration create_books_table
このコマンドは、データベース内の書籍テーブルを作成するためのマイグレーションファイルを生成します。次に、生成されたマイグレーションファイルを編集します(database/migrations/YYYY_MM_DD_create_books_table.php
)テーブル構造を定義します。
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateBooksTable extends Migration
{
public function up()
{
Schema::create('books', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('author');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('books');
}
}
このマイグレーションファイルでは、books
テーブルの構造を定義します。これには、列(id
、title
、author
、timestamps
)が含まれます。次に、テーブルを作成するためにマイグレーションを実行します。
php artisan migrate
このコマンドは、マイグレーションファイルを実行し、データベース内の書籍テーブルを作成します。
ステップ2: 書籍テーブルのシーダーを作成する
次に、初期データでbooks
テーブルを埋めるためのシーダーを生成します。
php artisan make:seeder BooksTableSeeder
このコマンドは、初期データで書籍テーブルを埋めるためのシーダーファイルを生成します。
シーダーファイルを編集します(database/seeders/BooksTableSeeder.php
)サンプル書籍データを定義します。
use Illuminate\Database\Seeder;
class BooksTableSeeder extends Seeder
{
public function run()
{
DB::table('books')->insert([
['title' => 'Book 1', 'author' => 'Author A'],
['title' => 'Book 2', 'author' => 'Author B'],
['title' => 'Book 3', 'author' => 'Author C'],
]);
}
}
このシーダーファイルでは、books
テーブルに挿入されるサンプルの書籍データを定義しています。この特定のケースでは、1から3までの書籍とAからCまでの著者を作成しています。
シーダーを実行してbooks
テーブルを埋めます:
php artisan db:seed --class=BooksTableSeeder
このコマンドはシーダーファイルを実行し、定義されたサンプルデータでbooks
テーブルを埋めます。
ステップ3: コントローラーを作成
書籍を管理するためのコントローラーを生成します:
php artisan make:controller BookController
このコマンドは、書籍に関連するCRUD操作を処理するメソッドを含むコントローラーファイル(BookController.php
)を生成します。コントローラーが作成されたので、BookController
でCRUDメソッドを実装することに焦点を当てましょう。それはapp/Http/Controllers/BookController.php
にあります:
use App\Book; // Bookモデルをインポート
public function index()
{
$books = Book::all();
return view('books.index', compact('books'));
}
public function create()
{
return view('books.create');
}
public function store(Request $request)
{
$book = new Book;
$book->title = $request->input('title');
$book->author = $request->input('author');
$book->save();
return redirect()->route('books.index');
}
// 同様にedit、update、show、deleteメソッドを実装
このコントローラーファイルでは、書籍に関連するCRUD操作を処理するメソッドを定義しています。例えば、index
メソッドはデータベースからすべての書籍を取得し、index
ビューに渡します。一方、store
メソッドはフォームを介して送信されたデータに基づいて新しい書籍レコードを作成します。create()
メソッドは、新しい書籍レコードを作成するためのフォームを表示する責任があります。ユーザーがこのメソッドに関連付けられたルートに移動すると、Laravelはこの関数を実行し、books.create
というビューを返します。
ステップ4: ビューを作成
resources/views フォルダ内に、書籍の一覧表示、作成、編集のためのビューを作成してください。
Example View (create.blade.php
):
@extends('layout')
@section('content')
<h1>Create a New Book</h1>
<form method="POST" action="{{ route('books.store') }}">
@csrf
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control" id="title" placeholder="Enter book title">
</div>
<div class="form-group">
<label for="author">Author</label>
<input type="text" name="author" class="form-control" id="author" placeholder="Enter author name">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<a href="{{ route('books.index') }}">Back to the list</a>
@endsection
この例では、create
ビューに新しい書籍を追加するためのフォームが含まれています。フォームはデータを BookController
の store
メソッドに送信します。@csrf
ディレクティブは、クロスサイト要求偽造から保護するための CSRF トークンを生成します。
この例を参考にして、残りのCRUD操作のためのコントローラのメソッドとビューを自分で実装できるはずです。さあ、始めましょう!
結論
この記事では、Laravelアプリケーションの基本について見てきました:コマンドラインを使ってアプリケーションを構築する方法、Laravelアプリケーションの構造、そしてLaravelでCRUDアプリケーションを作成する方法です。
I hope this article was useful and that you’re now capable of using Laravel to create your applications and expand the information here with more advanced topics. More information on Laravel can be found at the official Laravel website.
Source:
https://www.sitepoint.com/laravel-project-setup-beginners-guide/