
PHPは簡単にWebのプログラミングができる反面、C言語やJAVAなどと違って、少しぐらい書き方が間違ってても動いてしまうことがよくあります。私も30代後半から独学でPHPを学び、自己流でプログラムを書いていましたが、「この書き方で本当にあっているのかなぁ?」と思うことがよくありました。
実はこれ、経験を積んであとから見直すと、結構いろんな問題を含んでいるんです。これらの問題を解決してくれるのがフレームワークです。でも、「PHPのフレームワーク」で検索するとフレームワークの種類がいくつもでてきて、どれを使ったらいいのか迷ったことはありませんか?
PHPでプログラムをするうえでは、フレームワークの勉強は欠かせません。そこで今回は、そのなかの「Laravel」について、
- PHPのフレームワークにLaravelがいいワケ
- Laravelの機能や特徴
- ほかのフレームワークとの比較
ぜひ最後までご覧ください。
目次
フレームワークとは何か
フレームワークは、Web開発に必要なさまざまな機能や、その機能を使う仕組みを提供してくれるソフトウェアです。プログラマは、フレームワークに用意された仕組みにしたがって必要な処理を追加することで、簡単にシステムを構築することができます。
フレームワークを使わないときのリスク、使うことのメリット・デメリットなどを詳しくみていきます。
フレームワークを使わないときの3つの問題点
フレームワークを使わずに開発していくと、さまざまな問題が起こります。その主な例を3つ取り上げてみます。
セキュリティの甘さ
自己流でプログラミングする場合の最大の問題点は「セキュリティの甘さ」です。プログラミングの経験が浅いと、セキュリティに関する認識がどうしても甘くなってしまいます。「これくらいなら問題ないんじゃないの」という気持ちが思わぬ問題を引き起こしてしまうのです。
データベースなどの情報をもとにWebサイトを動的に生成するサイトでは、外部からの攻撃に対する対策も施さなければいけません。顧客情報などの重要な情報がハッキングされ、外部流出する可能性があるからです。しかし、そうした対策をすべて自分一人で解決していくのはかなり大変です。
メンテナンスの移行
自己流で書いたソースコードは、そのときはちゃんと書いたつもりでも、あとから読み直すと「なんでこんな書き方してるんだろう?」「これって何をさせてたんだっけ?」と感じることがよくあります。経験を積めばより良い書き方が身につき、当時の自分の未熟さを実感する場面でもあるのですが、かなり問題があります。
それは、何らかの理由で自分でメンテナンスすることができなくなり、ほかの人にメンテナンスを移行しなければならなくなった場合です。自分でメンテナンスするのであれば、なんとなくこうしてたなというのがわかるのですが、ほかの人の場合はそうはいきません。あとを任された人がそのコードをみてもまったく理解できずに困惑し、メンテナンス作業に支障をきたすからです。
拡張性の欠如
自分一人で考えて作ったシステムは、あとで機能を広げようとか、一つのものをいくつもの方面で使ったりといったことはあまり考えて設計していません。プログラミングしているのが自分一人なので、つい自分がわかってればいいやと思ってしまうからです。
ところが、急にそのWebサービスの人気が高まり、より多くの人に快適に利用してもらうための改良・改善をしなければならなくなった時に問題が発生します。もともと機能を広げることなど考えずに作ってしまったのですから、機能をどのように広げたらいいかわからずに悩んでしまうのです。最悪、基本部分の設計から全部作り直し、なんていうことも起こり得ます。
フレームワークの使い方
フレームワークを使うときは、プログラムの基本的な部分はすでにフレームワークに組み込まれているプログラムを使って動かします。プログラマは、そのプログラムを呼び出して動かす部分だけをプログラミングすればいいのです。
フレームワークのメリット・デメリット
どんなシステムにもメリットとデメリットがあります。フレームワークを使うことのメリット・デメリットを理解して、より良い開発環境を作ってください。
メリット
フレームワークは最初からセキュリティやメンテナンス性、あとから機能を広げることを考慮してきちんとシステム設計されています。そのため、フレームワークにもとづいてプログラミングすれば、だれでもしっかりとしたセキュリティに保護されたわかりやすいプログラムが作れます。
デメリット
フレームワークには独自の仕様が存在します。そのため、PHPの勉強とは別にフレームワークの使い方についても学習する必要があります。また、PHPの理解が浅いうちにフレームワークを使おうとすると、やっていることがわからなくなったり、バグなどへの対処ができなくなります。必ずPHPの基礎を習得したうえで使うようにしてください。
PHPの主なフレームワークとトレンド
それでは次に、PHPのフレームワークにはどのようなものがあるのか、日本と世界ではどのような違いがあるのかをみていきます。
フレームワークの種類
PHPのフレームワークとして一般的によく知られているのは以下のものです。
- CakePHP
- Laravel
- Symfony
- Zend Framework
- Codelgniter
- FuelPHP
- Phalcon
世界のトレンド
Laravelが2012年にリリースされた当初からシェアを勢いよく伸ばしているのがわかります。
国内のトレンド
日本ではこれまでCakePHPが圧倒的なシェアを持っていました。しかし、2016年ごろからLaravelが急激にシェアを伸ばしているのがわかります。
Laravelの特徴
今見たように、Laravelは現在世界で最も人気のあるフレームワークです。その特徴を簡単に整理します。
MVCフレームワーク
Laravelは、いわゆる「MVCフレームワーク」という考え方に基づいています。アプリケーションを
- データベースへの操作をおこなうModel
- Webページへの表示をおこなうView
- ModelとViewの関係を制御するController
機能が分離・独立しているので、分業しやすく、ひとつの機能の変更がほかの機能に影響を与えることが少ないというメリットがあります。
最大の特徴は学習コストの低さ
Laravelはコードが非常にわかりやすく書かれているので、習得のための時間と労力をそれほど多く必要としません。いろいろな機能を簡単なコードで利用できるので、品質の高いWebアプリを学び始めてすぐに作れるのが最大の特徴です。
Laravelがオススメな3つの理由
Laravel以外にもフレームワークはいくつもありますが、そのなかでLaravelをオススメする主な理由は以下の3つです。
開発期間を短くでき、チーム開発にも最適
Laravelには、アプリケーション開発のために必要なさまざまな機能を備えたライブラリが多数存在し、随時追加されています。これらを使うことで開発期間を短縮することができます。
また、フレームワークでの開発は別々に分業で作業することができるので、プロジェクトをチームで開発するのにも適しています。
設定が簡単。コードも読みやすく書きやすい
Laravelには「Artisan」という専用のコマンドがあり、このコマンドを使って簡単にいろいろな設定ができます。
また、Laravelのコードはシンプルでわかりやすいので、読みやすく書きやすく、初心者でもスムーズに開発をおこなうことができます。
今、一番勢いがある
現在世界的に一番勢いがあり、インターネット上でもLaravelに関するコミュニティや情報も増えています。そのため情報収集が簡単で、初心者でも学習しやすい環境が整っています。
開発環境設定の3ステップ
Laravelの開発環境を整えるために必要な作業は3つです。すべてインストーラーを起動させるだけで簡単に設定できます。
PHPのインストール
まず、Laravelはバージョンによって必要なPHPのバージョンの要件が違うので、必要に応じてPHPのバージョンアップをしてください。なお、現在インストールしているバージョンを確認するには、コマンドラインでphp --version
と入力すれば確認できます。
PHPは、公式ページからインストーラーをダウンロードしてインストールします。
Composerのインストール
Laravelは一般のアプリケーションのようにダウンロードしてインストールというやり方はしません。PHPのパッケージ管理プログラムである「Composer」を使って管理するので、公式サイトからダウンロードしてインストールしてください。
Laravelのインストール
Laravelのインストールは、先ほどのComposerを使ってコマンドライン上に以下のコマンドを入力してインストールします。
composer global require laravel/installer
インストールできたら、次はLaravelのパスを設定します。
export PATH="$PATH:~/.composer/vendor/bin"
macOS: $HOME/.composer/vendor/bin
Linux: $HOME/.config/composer/vendor/bin
Windows: %USERPROFILE%\AppData\Roaming\Composer\vendor\bin
laravel newコマンドで指定したディレクトリに新しいプロジェクトを作れば、開発環境および新規プロジェクトのできあがりです。
laravel new NewProject
バージョンアップの落とし穴
どんなシステムも、より使いやすくするために改良されていき、常にバージョンアップされていきます。しかし大幅な改良があった場合には注意が必要です。それは、今まで使えていた知識やテクニックが使えなくなる可能性があるからです。


Laravelでは、ブラウザやAPIからのアクセスのルーティングを、ルートファイルに記述してコントロールしています。Laravelのルートファイルは、5.2のバージョンまでは「app/Http/routes.php」でした。しかし、5.3のバージョンからは「routesディレクトリ」が追加され、以下のように3つのファイルを使い分けるようになっています。
- web.php
- api.php
- console.php
通常のWebページであれば、web.phpにルート設定を書き込んであげれば問題ありません。
また、Laravelのバージョンは、PHPのバージョンによっても利用できるかどうかが変わってきます。詳しくは公式のドキュメントを確認してください。
CakePHPとの比較
LaravelとCakePHPを比較すると、主な違いには以下のようなものが挙げられます。
Laravel | CakePHP |
---|---|
世界的に人気が高い | 日本でのシェアが高い |
ややもっさりした動き | 軽量で動作が軽い |
ディレクトリ構成が自由 | ディレクトリ構成が決まってる |
自由度・拡張性が高い | 規約が厳格なので命名規則が違うとエラー |
バリデーション処理はControllerに記述 | バリデーション処理はModelに記述 |
ファイルのアップロード処理が簡単 | ファイルのアップロード処理が面倒 |
フロントエンド技術にはVue.js | フロントエンド技術にはjQuery |
それぞれのフレームワークには一長一短があります。それぞれの特徴を理解して、開発に最適なフレームワークを選択してください。
Laravelを使いこなして開発スピードを速めよう
日本でのシェアはまだCakePHPが多いので、改修や追加作業にはその知識の習得も必要です。しかし、Laravelが世界的に今最も勢いのあるフレームワークであることを考えると、今後の新規開発のフレームワークにはLaravelが使われる可能性が高いです。
Laravelは後発のフレームワークであるため、最新の技術や仕組みがバランスよく取り入れられています。コードも読みやすく書きやすいので、これからフレームワークを使った開発を勉強するのであれば、ぜひLaravelに取り組んでみてください。