PS4を買ったはいいがなかなか時間が取れず、『アサシンクリード4』のストーリーが遅々として進まないMiOです。RPGでダンジョンに潜るとすべての宝箱を開けてすべての行き止まりを踏破してからじゃないとボスに挑めないタイプです。
今日はそんなこととはまったく関係なく、PHPフレームワーク「Laravel4」の魅力と導入方法をご紹介します。
まず"ララベル"って名前が可愛いよね!
PHPフレームワーク(以下FW)は年々増える一方で相変わらず収束する気配が無く、Rubyerたちにプークスクスと笑わたり気のせいだったりするPHP界です。が、iPhoneよりAndroid派で、女神転生でいえばLawよりChaos寄りな自分としては、PHPは色々選べて楽しいよねと明るく前向きに捉えております。
メジャー所のPHP FWというと、
等々、他にも古いのから新しいのまで様々にあるわけです。
そんな中で今回取り上げる「Laravel」の特徴は以下のようなものです。
唯一残念なのは日本語の情報がまだ少ないということですが、Hirohisa Kawase氏による公式クイックスタートの和訳版や、早くから「Laravel」を日本で紹介していたWinRoad徒然草さんの解説ページなど質の高いドキュメントがネット上に存在するので、戸惑うことなくすんなり触り始められるはずです。この記事もあるしね。
オリジナル(英語)の公式クイックスタートはこちら。
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コマンドで移動したら、準備完了です。
※以降のコンソール上のコマンドはすべてこのプロジェクトのトップディレクトリからの作業になります
「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"と直接叩けば動くはずなので、以下のコマンドはそう置き換えて下さい。
早速Composerを通して「Laravel4」をインストールします。
普通に最新版を使う場合は
composer create-project laravel/laravel プロジェクト名 --prefer-dist
Kawase氏による日本語コメント版を使う場合は
composer create-project laravel-ja/laravel プロジェクト名 --prefer-dist
だけです。
ね、簡単でしょう?
この時点で最初に書いたようなディレクトリ構成が展開されているはずです。
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' => '' ),
これで初期設定が終わりました。
早速ブラウザからアクセスしてみるよ。
.........
そんな、いきなりエラーだなんて。
Permission deniedと書かれている通り、これはキャッシュ用ディレクトリである app/storage への書き込み許可が無かったのが原因です。
chmod -R 777 app/storage
今度こそ。
Yes, I have arrived!
最後に、「Laravel」で最も有名なユーザ管理パッケージである「Sentry」を試してみます。
これを入れれば、最初から標準的なユーザ管理テーブルが作成され、簡単にユーザ情報を引き出したり保存したり出来るようになります。
まずcomposer.jsonにSentryを追加します。
composer.json
/*前省略*/ "require": { "laravel/framework": "4.1.*", //カンマを忘れずに "cartalyst/sentry": "2.0.*", //この行を追加 }, /*後省略*/
そしてcomposerからアップデートをかけます。
composer update
これでSentry2のパッケージがインストールされました。
さらに「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', //この行を追加 ),
「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の詳しい使い方については、次回の記事をお待ちくださいませ。