インストール
Laravelインストーラー
最初にComposerを使用し、Laravelインストーラーをダウンロードします。
composer global require "laravel/installer=~1.1"
端末で、laravelコマンドが実行できるように、~/.composer/vendor/bin
(Windowsの場合は、C:\%HOMEPATH%\AppData\Roaming\Composer\vendor\bin
)ディレクトリーへPATHを通してください。
インストールが完了したら、後はただlaravel new
コマンドで、指定したディレクトリーに真新しいLaravelプロジェクトが作成されます。例えば、laravel new blog
と打ち込めば、blog
というディレクトリーに、必要なパッケージが全部揃って、Laravelがインストールされます。このインストール方法は、Composerを使うよりも多少早いです。
コンポーサーによるインストール
LaravelフレームワークはComposerをインストールと依存パッケージの管理に活用しています。まだ用意していない場合は、installing Composerの手順でインストールしてください。
では、端末から次のコマンドを実行し、Laravelをインストールしましょう。
composer create-project laravel/laravel your-project-name --prefer-dist
このコマンドでLaravelの最新パッケージがダウンロードされ、現在のディレクトリーの中の、新しいyour-project-name
フォルダーにインストールされます。
別の方法がお好みであれば、GitHubのLaravelリポジトリーから手動でダウンロードできます。次に、手動で作成したディレクトリーのルートで、composer install
コマンドを実行してください。このコマンドによりフレームワークに必要な依存パッケージがインストールされます。
パーミッション
Laravelをインストールしたら、app/storage
下のディレクトリーへサーバーが書き込めるように許可を与える必要があります。詳細については、インストールを確認してください。
Laravelのサーバー
Laravelのアプリケーションは通常ApacheやNginxなどのWebサーバーを使用して、通常動作させます。もしも、PHP5.4以上を使用しているのであれば、Artisan 'serve'コマンドで、PHPの組み込み開発サーバーを使用できます。
php artisan serve
HTTPサーバーはデフォルトで8000ポートをリッスンします。しかし、既に使用済みであるか、この方法で複数のサーバーを建てたい場合は、対象のポート番号を指定します。--port
引数を使うだけです。
php artisan serve --port=8080
ディレクトリー構造
フレームワークをインストールしたら、プロジェクトをチェックして、ディレクトリー構造に馴染んでください。app
ディレクトリーはviews
、controllers
、models
のようなフォルダーで構成されています。ほとんどのアプリケーションのコードはこのディレクトリーの中に設置します。またapp/config
ディレクトリーも調査してみてください。設定可能なオプションが用意されています。
ローカル開発環境
今まで、自分のローカルマシーンで、PHP開発環境を整えるのは頭痛の種でした。正しいPHPバージョンと必要な拡張、それに他の必要なコンポーネントをインストールするのは、時間がかかり、混乱を産みました。代わりに、Laravel Homesteadを利用してください。Homesteadはシンプルなバーチャルマシーンで、LaravelとVagrantのために設計されています。Homesteadは、堅牢なPHPアプリケーションを構築するために必要な、全てのソフトウエアーを予めパッケージしたVagrat boxですから、あっという間に仮想化された、独立した環境が作成できます。Homesteadに含まれているソフトウェアのリストをご覧ください。
- Nginx
- PHP 5.6
- MySQL
- Redis
- Memcached
- Beanstalk
「仮想化」という言葉が難しそうに聞こえても、何も心配ありません。苦労なしです。Homesteadに必要な、VirtualBoxとVagrantの2つには、人気のある全オペレーティングシステム用に、簡単でグラフィカルなインストーラーが用意されています。使用開始するには、Homesteadのドキュメントを確認してください。
ルーティング
スタートを切るために、最初のルートを作成しましょう。Laravelの一番シンプルなルートはクロージャーです。app/routes.php
ファイルを開き、ファイルの最後に以下のルートを付け加えてください。
Route::get('users', function()
{
return 'Users!';
});
Webブラウザーで/users
へアクセスすれば、レスポンスとしてUsers!
と表示されます。素晴らしい!これで最初のルートが出来上がりました。
ルートはコントローラークラスで指定することもできます。例えば:
Route::get('users', 'UserController@getIndex');
このルートがフレームワークに伝えているのは、/users
へのアクセスでUserController
クラスのgetIndex
メソッドが呼び出されるという内容です。コントローラールーティングの詳細は、コントローラーのドキュメントをご覧下さい。
ビューの作成
次に、ユーザーデータを表示するシンプルなビューを作成しましょう。ビューはapp/views
ディレクトリーに設置し、アプリケーションのHTMLで構成されています。2つの新しいビューをこのディレクトリーに作成します。layout.blade.php
とusers.blade.php
です。まず最初にlayout.blade.php
を作成しましょう。
<html>
<body>
<h1>Laravelクイックスタート</h1>
@yield('content')
</body>
</html>
次に、users.blade.php
ビューを作成します。
@extends('layout')
@section('content')
Users!
@stop
この構文は多分とても奇妙に思えることでしょう。その理由はLaravelのテンプレートエンジンであるBladeを使用しているからです。BladeはテンプレートをPHPへコンパイルするのに正規表現を使用しているだけですのでとても早いのです。Bladeはテンプレートの継承などパワフルな機能性と同時に、if
やfor
のようなPHPの典型的な制御構文の使いやすい代用構文を提供しています。詳細はBladeのドキュメントをご覧ください。
ビューを見てみました。ここで/users
ルートへ戻ります。Users!
文字列をリターンする代わりに、ビューを戻します。
Route::get('users', function()
{
return View::make('users');
});
素晴らしい!!これでレイアウトを拡張するシンプルなビューの準備ができました。次にデータベースレイヤーにとりかかりましょう。
マイグレーションの作成
データを保存するためのテーブルを作成するには、Laravelのマイグレーションシステムを使用します。マイグレーションはデータベースの修正内容を記述的に適宜し、あなたのチームメンバーと簡単に共有できるようにしてくれます。
最初にデータベース接続の設定を行いましょう。app/config/database.php
ファイルでデータベース接続に関する全設定を行います。LaravelはデフォルトとしてMySQLを設定しており、データベース設定ファイル中で接続情報を指定する必要があります。ご希望であれば、driver
をsqlite
に変更すれば、app/database
の中のSQLiteデータベースが取り込まれ、使用できるようになります。
次にマイグレーションを作成しましょう。Artsanコマンドラインツールが使用できます。ターミナルを起動し、プロジェクトのルートディレクトリーで以下のコマンドを入力してください。
php artisan migrate:make create_users_table
次にapp/database/migrations
フォルダーの中に生成されたマイグレーションを見つけてください。このファイルには一つのクラスと2つのメソッド、up
とdown
を含んでいます。up
メソッドにはデータベーステーブルに対する変更を記述し、down
メソッドにはその変更をもとに戻す指定を記述します。
マイグレーションを定義してみましょう。以下のようになります。
public function up()
{
Schema::create('users', function($table)
{
$table->increments('id');
$table->string('email')->unique();
$table->string('name');
$table->timestamps();
});
}
public function down()
{
Schema::drop('users');
}
次にターミナルでmigrate
コマンドを使い、マイグレーションを実行します。プロジェクトのルートディレクトリーでこのコマンドを実行してください。
php artisan migrate
マイグレーションをロールバックしたければ、migrate:rollback
コマンドを発行します。これでデータベーステーブルができました。続いてデータを取り出しましょう!
Eloquent ORM
Laravelは素晴らしいORMであるEloquentを持っています。もしRuby on Railsフレームワークを使用したことがあれば、Eloquentが似ていることに気がつくでしょう。ActiveRecord ORMスタイルでデータベースとやり取りする手法を提供しているからです。
最初にモデルを定義します。Eloquentモデルでは、指定したテーブルの行を代表として、関連するデーターベーステーブルにクエリーすることが可能です。心配しないでください。すぐに納得できますよ!典型的な使用では、モデルをapp/models
に設置します。このディレクトリーにUser.php
モデルを定義してみましょう。
class User extends Eloquent {}
Eloquentにどのテーブルを使用するか指定していないことに注目してください。Eloquentには様々な規約があり、そのうちの一つは「データベース名は、モデル名の複数形を使用する」というものです。便利でしょう!
お好みのデータベース管理ツールを使い、users
テーブルに数行のデータをインサートしてください。Eloquentで取得し、ビューに渡してみましょう。
では、/users
ルートを以下のように変更して下さい。
Route::get('users', function()
{
$users = User::all();
return View::make('users')->with('users', $users);
});
このルートを一緒に確認してみましょう。最初にall
メソッドをUser
モデルに使用し、users
テーブルから全レコードを取得します。次に、取得したレコードをwith
メソッドを使用しビューに渡します。with
メソッドにはキーと値を渡し、それはビューで使用できる変数となります。
素晴らしい。ではビューにユーザーを表示しましょう!
データの表示
ではusers
をビューで使用できるようにしてみましょう。以下のように行います。
@extends('layout')
@section('content')
@foreach($users as $user)
<p>{{ $user->name }}</p>
@endforeach
@stop
echo
文はどこかと不思議に思えるでしょう。Bladeを使えば、二重の中括弧で囲んだデーターをechoできます。朝飯前です。ここで、/users
ルートにアクセスすれば、レスポンスとしてユーザー達の名前が表示されます。
これは始まりにすぎません。このチュートリアルではLaravelの基本をご覧いただきました。しかし習得していただくもっとエキサイティングな項目が用意されています。ドキュメントを読み進めていただき、EloquentやBladeのパワフルな機能を深く追求してください。またはキューやユニットテストのほうがもっと興味深いかも知れません。それともIoCコンテナを使用した柔軟なアーキテクチャをお望みでしょうか。お好きなものをお選びください!
アプリケーションのデプロイ
Laravelが持っている目標の一つは、PHPアプリケーション開発をダウンロードからデプロイまで、楽しめるものにすることです。Laravel Forgeは、素晴らしく早いサーバーへLaravelアプリケーションをデプロイする、簡単な方法を提供します。Forgeは、DigitalOcean、Linode、Rackspace、Amazon EC2のサーバー設定と事前準備(プロビジョン)が行えます。Homesteadと同様、Nginx、PHP5.6、MySQL、Postgres、Redis、Memcached、その他の最新ソフトウェアが全部含まれています。Forgeの"Quick Deploy"は、GithubかBitbucketに変更のコードをPushするたび、デプロイしてくれます!
それに付け加え、Forgeはキューワーカー、SSL、Cronジョブ、サブドメイン、その他の設定も手助けします。詳しい情報は、Forge websiteでご覧ください。