インストール

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ディレクトリーはviewscontrollersmodelsのようなフォルダーで構成されています。ほとんどのアプリケーションのコードはこのディレクトリーの中に設置します。また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.phpusers.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はテンプレートの継承などパワフルな機能性と同時に、ifforのようなPHPの典型的な制御構文の使いやすい代用構文を提供しています。詳細はBladeのドキュメントをご覧ください。

ビューを見てみました。ここで/usersルートへ戻ります。Users!文字列をリターンする代わりに、ビューを戻します。

Route::get('users', function()
{
    return View::make('users');
});

素晴らしい!!これでレイアウトを拡張するシンプルなビューの準備ができました。次にデータベースレイヤーにとりかかりましょう。

マイグレーションの作成

データを保存するためのテーブルを作成するには、Laravelのマイグレーションシステムを使用します。マイグレーションはデータベースの修正内容を記述的に適宜し、あなたのチームメンバーと簡単に共有できるようにしてくれます。

最初にデータベース接続の設定を行いましょう。app/config/database.phpファイルでデータベース接続に関する全設定を行います。LaravelはデフォルトとしてMySQLを設定しており、データベース設定ファイル中で接続情報を指定する必要があります。ご希望であれば、driversqliteに変更すれば、app/databaseの中のSQLiteデータベースが取り込まれ、使用できるようになります。

次にマイグレーションを作成しましょう。Artsanコマンドラインツールが使用できます。ターミナルを起動し、プロジェクトのルートディレクトリーで以下のコマンドを入力してください。

php artisan migrate:make create_users_table

次にapp/database/migrationsフォルダーの中に生成されたマイグレーションを見つけてください。このファイルには一つのクラスと2つのメソッド、updownを含んでいます。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の基本をご覧いただきました。しかし習得していただくもっとエキサイティングな項目が用意されています。ドキュメントを読み進めていただき、EloquentBladeのパワフルな機能を深く追求してください。またはキューユニットテストのほうがもっと興味深いかも知れません。それとも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でご覧ください。