本文へジャンプ

最新鋭のPHPフレームワーク「Laravel4」でWeb開発 | (1)導入編

Posted by mio.satoh

PS4を買ったはいいがなかなか時間が取れず、『アサシンクリード4』のストーリーが遅々として進まないMiOです。RPGでダンジョンに潜るとすべての宝箱を開けてすべての行き止まりを踏破してからじゃないとボスに挑めないタイプです。

今日はそんなこととはまったく関係なく、PHPフレームワーク「Laravel4」の魅力と導入方法をご紹介します。

mioのLaravel初心者講座 目次

PHPフレームワーク界の動向とLaravelの魅力

まず"ララベル"って名前が可愛いよね!
PHPフレームワーク(以下FW)は年々増える一方で相変わらず収束する気配が無く、Rubyerたちにプークスクスと笑わたり気のせいだったりするPHP界です。が、iPhoneよりAndroid派で、女神転生でいえばLawよりChaos寄りな自分としては、PHPは色々選べて楽しいよねと明るく前向きに捉えております。

メジャー所のPHP FWというと、

等々、他にも古いのから新しいのまで様々にあるわけです。

そんな中で今回取り上げる「Laravel」の特徴は以下のようなものです。

  • 一昨年~昨年あたりから急進してきた若いフレームワーク。若いので、設計思想もイマドキな感じ。
  • 日本でも人気が高かった「CodeIgniter」にライセンス関係のドタバタが起きた時、乗り換え先として「Laravel」を選んだ人が多い。実際この2つはかなり似ている。
  • 分かりやすい、書きやすい。ちょっとマニュアルを読んで、触ってみて、なるほどねーで直ぐに書き始められる印象。
  • 「Laravel4」からSymfony2ベースになった。ガチガチで重厚な屋台骨(Symfony2)に乗っかったしなやかで軽量なパネル材(Laravel4)。
  • カッチリした美しい記述(PSR-0, PSR-1規約準拠)。
  • 有志によるライブラリが意外と豊富でハイレベル。特にユーザDB管理の"Sentry"はその中でも白眉といえます。
  • やっぱり可愛くて呼びやすい名前(「フュエル」とか「イィー」とかは日本人には呼びにくいし)

唯一残念なのは日本語の情報がまだ少ないということですが、Hirohisa Kawase氏による公式クイックスタートの和訳版や、早くから「Laravel」を日本で紹介していたWinRoad徒然草さんの解説ページなど質の高いドキュメントがネット上に存在するので、戸惑うことなくすんなり触り始められるはずです。この記事もあるしね。
オリジナル(英語)の公式クイックスタートはこちら

Laravel4のインストール

サーバ要件

PHP5.4以上がapache2上及びコンソール上で動く環境
※今はPHP5.3.7でも動くが、2014年5月のバージョンより5.4以上必須になるらしい。

以降、一般的なLinuxサーバを前提に進めます。

サーバの設定

まず、「Laravel4」の基本ディレクトリ構成はこんな感じ。

project
├app (プログラムの構築は基本この中で行う)
│├ config (設定ファイル)
│├ controllers (システムの基幹的なアレを置く)
│├ models (DBとのやりとり的なアレを置く)
│├ views (ブラウザ上の表示処理的なアレを置く)
│├ (その他色々ディレクトリやファイル)
│└ routes.php (URLと処理を結びつけるルーティング設定)
├bootstrap (初期画面などの初期設定が書かれている。通常スルーしてOK)
└public (ここが所謂public_htmlのような公開ディレクトリ)
  └ (画像やcssなど静的ファイル)

上記を見て分かるとおり、publicディレクトリ以下を公開ディレクトリにする設定が必要なので、httpd.confの中で

DocumentRoot /home/www.hoge.com/public

みたいな感じで設定し直してapache再起動してください。

Laravelをインストールしたい(上記のツリーでいう「Project」の)場所にcdコマンドで移動したら、準備完了です。
※以降のコンソール上のコマンドはすべてこのプロジェクトのトップディレクトリからの作業になります

Composerのインストール

「Laravel4」は「Composer」というPHPのパッケージ管理プログラムを使用してインストールします。

curl -sS https://getcomposer.org/installer | php

で composer.phar がダウンロードされてきたら、そのまま叩いても使えるけど面倒なので /usr/local/ にインストールしちゃいましょう。

mv composer.phar /usr/local/bin/composer

これで(たいていの環境では)"composer hogehoge"と簡単にcomposerのコマンドを使えるようになりました。 もし上手くパスが通らない場合は、"php composer.phar hogehoge"と直接叩けば動くはずなので、以下のコマンドはそう置き換えて下さい。

「Laravel4」のインストール

早速Composerを通して「Laravel4」をインストールします。

普通に最新版を使う場合は

composer create-project laravel/laravel プロジェクト名 --prefer-dist

Kawase氏による日本語コメント版を使う場合は

composer create-project laravel-ja/laravel プロジェクト名 --prefer-dist

だけです。
ね、簡単でしょう?

「Laravel4」の設定

この時点で最初に書いたようなディレクトリ構成が展開されているはずです。
configディレクトリの中に入って、必要最低限の設定をしましょう。

app/config/app.php

//43行目あたり URLの設定
'url' => 'http://www.hoge.com/',

//69行目あたり ロケール設定
'locale' => 'ja',

//82行目あたり 暗号生成用の乱数。デタラメな32文字を付ける
'key' => 'U5mscX29zGwdp5C2wmVwt936S5hm4ng4peTk4j',

app/config/database.php

//以下はMySQLを使う場合の設定
//69行目あたり以降
'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'DBname', //DB名
    'username'  => 'username', //MySQLユーザ名
    'password'  => 'password', //MySQLパスワード
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => ''
),

アクセスしてみる

これで初期設定が終わりました。
早速ブラウザからアクセスしてみるよ。
.........

Laravelのパーミッションエラー

そんな、いきなりエラーだなんて。

Permission deniedと書かれている通り、これはキャッシュ用ディレクトリである app/storage への書き込み許可が無かったのが原因です。

chmod -R 777 app/storage

今度こそ。

Laravel4にアクセス成功

Yes, I have arrived!

Laravelパッケージ「Sentry」のインストール手順

最後に、「Laravel」で最も有名なユーザ管理パッケージである「Sentry」を試してみます。
これを入れれば、最初から標準的なユーザ管理テーブルが作成され、簡単にユーザ情報を引き出したり保存したり出来るようになります。

Sentry2のインストール

まずcomposer.jsonにSentryを追加します。

composer.json

/*前省略*/
"require": {
    "laravel/framework": "4.1.*", //カンマを忘れずに
    "cartalyst/sentry": "2.0.*", //この行を追加
},
/*後省略*/

そしてcomposerからアップデートをかけます。

composer update

これでSentry2のパッケージがインストールされました。

「Laravel」の設定にSentryを追加

さらに「Laravel」上でSentryが使えるように設定を変更します。

app/config/app.php

//95行目あたりから
'providers' => array(
    'Illuminate\Foundation\Providers\ArtisanServiceProvider',
    'Illuminate\Auth\AuthServiceProvider',
    /*省略*/
    'Cartalyst\Sentry\SentryServiceProvider', //この行を追加
),
/*省略*/
'aliases' => array(
    'App'             => 'Illuminate\Support\Facades\App',
    'Artisan'         => 'Illuminate\Support\Facades\Artisan',
    /*省略*/
    'Sentry'          => 'Cartalyst\Sentry\Facades\Laravel\Sentry', //この行を追加
),

MySQLにSentryで使うユーザ管理テーブルを作成

「Laravel」には「artisan(アルチザン)」というコマンドラインツールが同梱されていて、コンソールから色々な処理を行うことができます。
DBのマイグレーションもこの通り楽々です。

php artisan migrate --package=cartalyst/sentry

これだけで、最初に設定したDBに以下のように空のユーザ管理テーブルが追加されたはずです。phpMyAdminで確認してみます。

追加されたテーブル テーブルリスト

usersテーブルの構造 テーブル構造

もしエラーが出た場合は、おそらくDBの設定が上手くいっていないので、app/config/database.phpの設定を見直してみましょう。
他のパッケージも同様の流れでインストール出来ます。Laravel Package Registryでパッケージの検索ができますよ。
そしてComposerのお陰でWordPressのプラグインのような互換性・依存関係の心配は無し!

さあ、これでWebアプリの中身を作り始めるための手筈はほぼすべて整いました。
LaravelやSentryの詳しい使い方については、次回の記事をお待ちくださいませ。

mioのLaravel初心者講座 目次

Recent Entries
MD EVENT REPORT
What's Hot?