Web制作、Web開発の歩き方

バックエンドのスタンダード:Laravel入門

■第1話:フレームワークの基礎

(最終更新日:2024.05.23)

フレームワークのイメージ
この記事は8分で読めます!
(絵が小さい場合はスマホを横に)

「王道のLaravel!」

LaravelはPHPを用いた人気の高いフレームワークで、開発者が効率的に安全なウェブアプリケーションを構築できるよう設計されている。 本シリーズでは、Laravelの基本的な概念から始め、インストール、設定、ルーティングなどの初歩的な内容を解説する。 Laravelの機能を最大限に活用し、綺麗で保守しやすいコードを書くための方法を学んでいこう。


1.Laravelとは何か?

LaravelはPHPで書かれた無料かつオープンソースのウェブアプリケーションフレームワークだ。 MVC(Model-View-Controller)アーキテクチャパターンに基づいて設計されており、簡潔で読みやすいコードを実現する。 特徴としては、使いやすさ、柔軟性、スケーラビリティに優れていることが挙げられる。 ルーティング、認証、セッション、キャッシュといった一般的なウェブ開発タスクのためのクリーンなクラスメソッドが提供されている。

歴史としては、Laravelは2011年にTaylor Otwellによってリリースされた。 PHPフレームワークの中でも特に簡単に一般的なウェブアプリケーションを作成できることを目的として作られた。 初期のリリースから多くのアップデートが行われ、Laravelはその機能とパフォーマンスを大きく向上させている。 最新のバージョンでは、より高度なセキュリティ機能とデータハンドリングが強化されている。

Laravelが多くの人たちに支持される理由としては、以下の3点が挙げられる。

    ■Laravelが支持される理由
  1. コミュニティ:Laravelは非常に活発な開発者コミュニティを持っており、多くのサポートとリソースが利用可能だ。 初学者から上級者までが簡単に情報を得られ、問題を解決できる
  2. 学習のしやすさ:Laravelのドキュメントは非常に充実しており、学習に役立つ豊富なチュートリアルとガイドが用意されている
  3. 機能の豊富さ:組み込みのツールとライブラリ、例えばEloquent ORM、キュー、イベント、WebSocketといった機能を通じて、開発者は高度なアプリケーションを容易に構築できる

Laravelの用途としては、Web系のシステム開発におけるバックエンド用途が主である。 具体的には、CMS(コンテンツ管理システム)、eコマースサイト、SaaSアプリケーション、データ管理システムなど、さまざまな種類のウェブアプリケーション開発に利用される。 Laravelは、世界中で最も使われているフレームワークの1つで、効率的かつ効果的な開発を可能にする。

Laravelは様々なアプリケーションで使われる

2.Laravelのインストールと設定

Laravelをインストールするには、次の条件を満たす必要がある。 「PHPのバージョンは7.3以上」「PHPの拡張モジュール(BCMath、Ctype、JSON、Mbstring、OpenSSL、PDO、Tokenizer、XML)が有効」 「Composerがインストールされている」だ。 最近のサーバー環境であれば、インストールできないということはないはずだ。 もし、PHPが7.2以下という場合は7.3以上(できれば8以上)を用意しよう。

次に、実際インストールする方法を紹介する。 最も良い方法は、Dockerで開発環境と本番環境を構築することだが、今回はDockerを学ぶ章ではないので、一番簡単に導入できるXAMPPを使う方法を紹介する。 Dockerに関しては、こちらのページを参考にしてほしい。基礎を身に着けたうえで調べて構築すれば、そこまで難しくないはずだ。 DockerHubにLaravelのイメージがあるので、はじめはそれを利用するのも有りだろう。

さて、肝心のLaravelの導入方法を説明する。 まずは、Apache(Webサーバー)、PHPをインストールするために、XAMPPをダウンロードしよう。 XAMPPはこちらからダウンロードできる。 Windows向けと書かれたダウンロードボタンを押せば、ダウンロードが始まり、ダウンロードされたファイルを開けばインストールを開始できる。 2024年5月の段階でPHP8.2のバージョンがダウンロードできるので、まずこれを使えば間違いないだろう。 インストールは基本、次へを押していけば大丈夫だ。

XAMPPのダウンロード(左)とインストール(右)

付属ソフトのチェックは、今回はApacheとPHPだけで問題無い。選択したらNextを押そう。 データベースに関してはSQLiteというファイル型のデータベースを使うので、今回はMySQLのチェックは要らない。 もし、どうしてもMySQL(中身はMariaDB)を使いたい場合は、選択してもらっても構わない。 これでサーバーとPHPの準備はバッチリだ。

必須のApacheとPHPのチェックだけでOK

次にComposerをインストールしよう。 Composerはこちらのサイトからダウンロードできる。 ダウンロードしたらインストールの指示に従ってインストールしよう。 インストールは「Install for all users」を選び、 基本次へを押すだけで大丈夫だ。 途中の選択で、Developer modeはチェックを入れなくて良い。 ちなみに、ComposerはPHPのライブラリの依存関係を管理してくれるソフトウェアだ。 Laravelをインストールする際に必要ぐらいに思ってくれれば良い。

Composerのインストール

Laravelのインストールはコマンドプロンプトを開き、以下の1つめのコマンド(上)を実行する。 インストール自体はすんなり終わるはずだ。 自動で行ってくれると思うが、念のためパスを通すために
「%USERPROFILE%\AppData\Roaming\
Composer\vendor\bin」 をシステム環境変数PATHに追加しておこう。 これでLaravelを使う準備はバッチリだ。 次にプロジェクトを作成しよう。実際開発を行うためにはプロジェクトが必要だ。 プロジェクトの作成は下記の2つめのコマンドで実行できる。

Laravelのインストール(上)とプロジェクトの作成(下)コマンド

プロジェクト作成中、いくつか選択肢が現れるが、下記を参考に設定を行ってほしい。 ログイン管理用のスターターキットは使わず、テストツールはPHPUnit、Git repositoryは作成する。 そして、今回はデータベースはSQLiteを選択しよう。

データベースはSQLiteを選ぶ

プロジェクトを作成したら「cd プロジェクト名」でプロジェクトフォルダに移動し「php artisan serve」をコマンド実行すれば、Laravelを起動することができる。 ブラウザのURLに「http://localhost:8000/」を入力すれば下記の画面が出るはずだ。

そして安全のために「php artisan key:generate」を実行しよう。これにより、.env ファイル内のAPP_KEYが自動更新され、 encrypt()やdecrypt()などの暗号化を安全に行うことができる。 これで、Laravelで開発する準備ができた。

Laravelの起動

3.アプリケーションの構造と重要なファイル

本項では、Laravelプロジェクトのディレクトリ構造と各ディレクトリやファイルの役割について解説する。 Laravelのディレクトリ構造は初心者にとってはやや複雑に見えるかもしれないが、 それぞれのコンポーネントがどのように連携して機能するかを理解できれば、難しくはなくなるはずだ。

    ■ルートディレクトリ
  1. app/:アプリケーションのコアな部分で、モデル(DBとのやり取り)、コントローラー(データ処理)、ポリシーなどが含む
  2. bootstrap/:アプリケーションの起動と自動ロード設定ファイルを含む
  3. config/:アプリケーションのすべての設定ファイルが格納される
  4. database/:データベースマイグレーションとシードファイルが含まれる
  5. public/:アプリケーションの公開ディレクトリで、静的ファイルやアップロードされたファイル、index.phpファイルなどを含む
  6. config/:アプリケーションのすべての設定ファイルが格納される
  7. resources/:ビューテンプレートやローカライズファイル、生のCSSやJavaScriptファイルが含まれる
  8. routes/:アプリケーションのすべてのルーティングに関わる。web.php、api.phpなど
  9. storage/:コンパイルされたビュー、セッション、キャッシュファイルなど、アプリケーションによって生成されたファイルが保存される
  10. tests/:: アプリケーションのテストコードに関する部分
  11. vendor/:: Composerによってインストールされた依存関係が格納される部分
    ■主要なファイル
  1. env:環境固有の設定を行うファイルで、データベースの接続情報やメール設定などが含む
  2. artisan: Laravelのコマンドラインインターフェースを提供するPHPスクリプト。様々なタスクをコマンドラインから実行できる
  3. composer.json:プロジェクトの依存関係と自動ロード設定を定義する
  4. webpack.mix.js:Laravel Mixを使ったアセットコンパイル設定を行う
    ■ 重要なディレクトリ
  1. app/Http/:コントローラーとミドルウェアが含まれる。リクエストの処理とレスポンスの返送を担当
  2. resources/views/:ブレードビューテンプレートファイルが格納される。ユーザーインターフェースの構築に使用
  3. routes/web.php:Webインターフェース用のルートが定義されるファイル。通常のブラウザリクエストを処理
  4. routes/api.php:API用のルートが定義されるファイル。ステートレスなリクエスト処理が主になる

以上が、ディレクトリ、ファイルに振り分けられた役割である。 この表を見れば、Laravelのアプリケーション構造に関する基本的な理解を深めることができる。 各々のディレクトリ、ファイルがどのように機能するかを把握することができる。 これにより、フレームワークを活かした効率的かつ効果的な開発が可能となる。

4.ルーティングの基本

本項では、Laravelにおけるルーティングの仕組みと基本的な設定方法を詳しく解説する。 ルーティングはウェブアプリケーションにおいて非常に重要な役割を担い、 ユーザーのリクエストを適切なコントローラーのアクションにマッピングすることで、そのリクエストを処理する。

ルーティングの役割はURLリクエストを適切なコントローラーメソッドまたはクロージャに割り当てる仕組みだ。 簡単に言うと、URLを適切なページに割り当てる。その際、静的なページだけでなく動作なども決めることができる。 基本的なルート定義の書き方は以下のようになる。

ルート定義は、routesディレクトリ内のweb.php(ウェブアクセス用)やapi.php(APIアクセス用)などのファイルに記述され、 下記のように書かれる。ここでは、ルートディレクトリにアクセスした際「Hello, World」と表示するように設定している。

基本的なルート定義

また、ユーザーIDに基づいて動的なURLを扱うこともできる。{id}はURLから抽出されるパラメータだ。 下記の場合は単純にUser1などを表示するが、例えば、User1とデータベースの情報を組み合わせることで、 そのUserに特化した情報を提供することができる。

パラメータ付きルート定義

更に名前付きルートというものもある。 アプリケーションの他の部分からルートを簡単に参照できる。例えば、リダイレクトやリンク生成時にルート名を使用できる。 この場合はユーザープロフィールのページに遷移させている。

名前付きルート定義

他にも様々なルーティングの手法があるが、まずはこれだけ覚えておこう。 ここで覚えたルーティングを使えば、開発者はリクエストを適切に処理し、目的のページに遷移させ、 更にそのページでのアプリケーションの動作を柔軟に制御できるようになる。

5.まとめ

第1回では、Laravelフレームワークの基礎を紹介した。 Laravelの概要からインストール、環境設定、重要なファイルとディレクトリの構造、そして基本的なルーティングの設定までをカバーした。 これらの知識は、Laravelを使用した開発の出発点となり、より高度なトピックへ進むための土台を築く。 今後のセッションでは、これらの基本を活用して具体的なアプリケーション構築に挑戦していく。

▼参考図書、サイト

 「改定2版 速習Laravel」 山田祥寛 WINGSプロジェクト
 「1週間で基礎から学ぶLaravel入門」 Minatomi