はじめに
LaravelはPHPの中でも特に人気のあるフレームワークで、その強力な機能や拡張性の高さから多くの開発者に支持されています。
本記事では、Laravelの魅力的な特徴やその基本的な使い方を学べる内容をピックアップしています。
Laravelとは
Laravelは、PHPのフレームワークの中でも特に人気があり、MVCアーキテクチャを採用しており、データの取り扱いからビューの表示までの一連の流れを整理された形で開発することができます。
コードの再利用性や拡張性も高く、大規模なWebアプリケーションの開発にも適しています。
Composerとは
ComposerはPHPのパッケージ管理ツールで、ライブラリやフレームワークの依存関係を管理するのに欠かせないツールで、composer require パッケージ名
というコマンドで簡単にライブラリやフレームワークをインストールできます。
初めてLaravelをインストールする際には、Composerを使用しましょう。
慣れていない人は詳しい人にダブルチェックしてもらいながら実行ましょう!
パッケージ管理とは?
パッケージ管理について説明すると長くなるのでここでは簡単な説明で留めておきます。
Composerを使ったLaravelのインストール
composerがインストールされていないのに下記コマンドを実行するとエラーになるので、composerは先にインストールしておきましょう。
# composerを使ってLaravelをインストールする
composer global require laravel/installer
# composerを使ってバージョンを指定してLaravelをインストールする
composer create-project --prefer-dist laravel/laravel myApp "8.*"
このコマンドは、Laravelの8系の最新バージョンをmyApp
というディレクトリにインストールします。
--prefer-xxx
とは?
--prefer-dist
とはComposerのコマンドにおいてよく使われるオプションの1つです。
このオプションの主な役割としては、パッケージのダウンロード形式の優先度を指定するものとなっています。
具体的には、2つの主な形式があります。
dist(distribution)
安定したリリースバージョンのパッケージをアーカイブ形式(たとえば.tar.gzや.zipなど)でダウンロードします。
通常、開発中のフレームワークやライブラリの最新安定版をダウンロードする際にはこれが使われます。
source
ソースコード(通常はgitリポジトリ)を直接クローンする形式です。
これは、ライブラリの開発やバグのトラッキング、または最新の開発中のコードを手に入れたいときに役立ちます。
dist、source どちらを使えば良い?
圧縮されたままでも問題なければ--prefer-dist
オプションを指定して高速にダウンロードし、
少し遅くてもフォルダのままダウンロードしたいのであれば--prefer-source
オプションを指定することをお勧めします。
どちらでも良い場合はとりあえず--prefer-dist
を指定し、圧縮形式でダウンロードする
インストールするコマンドを実行すると以下のようにカタカタ動き始めます。
最後に「successfully」が表示されればダウンロード成功です。
% composer create-project --prefer-dist laravel/laravel myApp "8.*"
Creating a "laravel/laravel" project at "./myApp"
Info from https://repo.packagist.org: #StandWithUkraine
Installing laravel/laravel (v8.6.12)
- Installing laravel/laravel (v8.6.12): Extracting archive
Created project in /Users/miya/Source/myApp
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies
Lock file operations: 107 installs, 0 updates, 0 removals
- Locking asm89/stack-cors (v2.1.1)
- Locking brick/math (0.11.0)
- Locking dflydev/dot-access-data (v3.0.2)
- Locking doctrine/inflector (2.0.8)
- Locking doctrine/instantiator (2.0.0)
- Locking doctrine/lexer (1.2.3)
- Locking dragonmantank/cron-expression (v3.3.3)
- Locking egulias/email-validator (2.1.25)
- Locking facade/flare-client-php (1.10.0)
- Locking facade/ignition (2.17.7)
- Locking facade/ignition-contracts (1.0.2)
- Locking fakerphp/faker (v1.23.0)
:
:
:
- Installing doctrine/instantiator (2.0.0): Extracting archive
- Installing phpunit/phpunit (9.6.13): Extracting archive
57 package suggestions were added by new dependencies, use `composer suggest` to see details.
Package fruitcake/laravel-cors is abandoned, you should avoid using it. No replacement was suggested.
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/sanctum
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
77 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
No publishable resources for tag [laravel-assets].
Publishing complete.
No security vulnerability advisories found
> @php artisan key:generate --ansi
Application key set successfully.
Artisanの使い方
ArtisanはLaravelフレームワークに組み込まれているコマンドラインツールで、様々な開発タスクを簡単に行うためのコマンドが提供されています。
Artisanを使用することで、コードの生成、データベースの操作、タスクのスケジューリングなど、多岐にわたる作業を手早く行うことができます。
※ちなみに読み方はアーティザン、アーティサン、アルチザンなどいろいろあるので現場に合わせて呼びましょう。
先ほど作成したmyAppフォルダ内でphp artisan serve
と打ってみるとサーバーがローカルで起動します。
myApp % php artisan serve
Starting Laravel development server: http://127.0.0.1:8000
[Mon Oct 9 04:39:12 2023] PHP 8.2.4 Development Server (http://127.0.0.1:8000) started
http://127.0.0.1:8000
へアクセスすると下記のような画面が表示されるはずです。
Artisanコマンドの利用
以下は、Artisanの主な使用方法といくつかの具体的な例です。
詳細は公式を見た方が正確且つ量もあるのでそちらを確認してください。
Artisanコマンド一覧を確認
php artisan list
コントローラを作成
php artisan make:controller SampleController
モデルを作成
php artisan make:model SampleModel
マイグレーションファイルを作成
Laravelのテーブル名は英単語の複数形にするというルールがあります。
# playersテーブルを作成する
php artisan make:migration create_players_table
ArtisanはLaravelフレームワークに組み込まれているコマンドラインツール
ルーティングについて
ルーティングとは、Webアプリケーションにおけるクライアントからのリクエストを、適切な処理やレスポンスにマッピングする仕組みを指します。
簡単に言えば、ルーティングは特定のURLがリクエストされたときにどの処理を実行するかを定義する役割を果たしています。
Laravelのルーティングは、ユーザーがアクセスするURLと、そのリクエストを処理するコントローラやクロージャを結びつける役割を持っています。
routes/web.php
にルートの定義を記述することで、簡単にURLの振り分けを行うことができます。
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
例えば上記の場合、https://sample/
にアクセスするとviewファイルのresources/views/welcome.blade.php
を表示するという処理になっています。
下記を追記した場合、https://sample/hello
にアクセスするとHello, World!
を画面に表示するという処理になります。
Route::get('/hello', function () {
return 'Hello, World!';
});
上記ではviewファイルを指定したり、文字列を表示するように処理を書いていましたが、コントローラをしていすることもできます。
ルーティングでは特定のURLがリクエストされたときにどの処理を実行するかを定義している
コントローラについて
コントローラは、ルーティングによって振り分けられたリクエストの実際の処理を行う部分です。
MVC+SのC、つまりControllerの役割を果たし、ビジネスロジックやデータの取得、ビューのレンダリングなどを行います。
試しに1つコントローラを作成してみます。
上述したArtisanコマンドを利用してコントローラを作成します。
php artisan make:controller SampleController
app/Http/Controllers/SampleController.php
にファイルが作成されると思うので、そちらを開き下記を追記します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SampleController extends Controller
{
// 追記
public function index() {
// indexにアクセスがあった場合、resources/views/welcome.blade.phpを返す
return view('welcome');
}
}
にも追記しましょう
// 追記
// /user/にアクセスされたらUserControllerのindex()の処理を実行する
Route::get('/sample', [SampleController::class, 'index']);
http://127.0.0.1:8000/sample
にアクセスするとwelcomeページが表示されているはずです。
welcomeページではない他のページを表示してあげる場合は、controllerのreturn view('welcome');
の部分を書き換えてあげてください。
コントローラはルーティングによって振り分けられたリクエストの実際の処理を行う部分
まとめ
Laravelは強力なフレームワークであり、上記の基本的な要素を理解することで、効率的なWebアプリケーション開発の第一歩を踏み出すことができます。
Laravelの世界は深く、本記事はその入り口としてお役に立てられれば幸いです。