26
今、世界でもっとも注目されている Laravelを使ってみた 鄭在燮

Laravelを使ってみた

Embed Size (px)

Citation preview

Page 1: Laravelを使ってみた

今、世界でもっとも注目されている

Laravelを使ってみた

鄭在燮

Page 2: Laravelを使ってみた

なぜ選んだのか

Page 3: Laravelを使ってみた

未経験のフレームワークが使ってみたかった。

そしてググる...

Page 4: Laravelを使ってみた

グーグルトレンド

Page 5: Laravelを使ってみた

だか...

Page 6: Laravelを使ってみた

日本国内では

Page 7: Laravelを使ってみた

選定理由もう一点あります。

Page 8: Laravelを使ってみた

日本語ドキュメントが充実

• 日本語翻訳率100%!http://readouble.com/laravel/

しかも、韓国語のドキュメントもあった…

Page 9: Laravelを使ってみた

※ほんとうはベンチマークとか、情報収集とか、しっかりやりましょう。

Page 10: Laravelを使ってみた

概要&豆知識

Page 11: Laravelを使ってみた

• マイクロソフトの.NETの開発に関わっていたTaylor Otwellが開発• PHP5.3以上(最新バージョンは5.4以上)• MITライセンス• バージョン

Laravel1 2011年6月Laravel2 2011年11月Laravel3 2012年2月Laravel4 2013年5月Laravel5 2015年1月 ← 最初は4.3想定のものがメジャーバージョンアップになった

• ソースの読み書きが簡単• 学習コストが低い• ベンチマーク結果はよくない

http://blog.s-page.org/archives/563• 大型システムで使われた実績は今のところない模様• 英語圏の国ではCodeIgniter、FuelPHP、CakePHPとよく比較されている• 2014年における最も有望なPHPフレームワークの1つとして挙げられた

http://www.sitepoint.com/best-php-frameworks-2014/• ドキュメント翻訳&日本にLaravelを浸透させている先駆者はHirohisa Kawaseさん

https://www.facebook.com/hirokws• Laravel関連書籍

http://qiita.com/mukaken/items/2058a193ee0ce6fbfd30

Page 12: Laravelを使ってみた

機能

Page 13: Laravelを使ってみた

認証(Auth)、キャッシュ、Eloquent、MySQL、PostgreSQL、SQlite、SQLServer、マイグレーション、IoCコンテナ、Config、Formヘルパー、HTMLヘルパー、URLヘルパー、ルーティング、コントロー

ラー、モデル、ビュー、モデル間のリレーションシップ、リダイレクト、レスポンス、String(文字列)

ヘルプ関数、バリデーション、ユニットテスト、Bladeテンプレートエンジン、DB Seeding、キュー、メール、ファサード(Facade)、コマンドライン、拡

張性

Page 14: Laravelを使ってみた

キャッシュ

• Memcached、Redis、APCなどのIn-MemoryキャッシュシステムがなくてもLaravelではキャッシュが使える

Cache::put('key', 'value', $minutes);Cache::has('key')Cache::get('key');Cache::forever('key', 'value');• Filesystemに保存となるので本格的に使う場合は、In-Memoryキャッシュシステムをおすすめ

Page 15: Laravelを使ってみた

Redis

• Composerによりpredisをインストールする必要がある。'redis' => [

'cluster' => true,'default' => ['host' => '127.0.0.1', 'port' => 6379],

],$redis = Redis::connection();$redis->set('name', 'Taylor');$redis->get('name');

Page 16: Laravelを使ってみた

MySQL

• 設定と使い方がとても簡単'mysql' => [

'read' => ['host' => '192.168.1.1',

],'write' => [

'host' => '196.168.1.2‘],'driver' => 'mysql','database' => 'database','username' => 'root','password' => '','charset' => 'utf8','collation' => 'utf8_unicode_ci','prefix' => '',

],DB::select($sql, $param);DB::insert($sql, $param);DB::update($sql, $param);DB::beginTransaction();DB::rollback();DB::commit();

Page 17: Laravelを使ってみた

Config

• 自由な書き方‘AAA' => 2,‘BBB' => array(

1 => 'station_name‘,2 => 'dept_name‘

),‘CCC' => app_path() . '/test.csv',Config::get('code_define.AAA');

• 環境毎設定(Default&オーバーライド)$env = $app->detectEnvironment(array(

‘dev’ => array(マシンのホスト名),'stg' => array(マシンのホスト名),

));

Page 18: Laravelを使ってみた

RESTful

Route::controller('hello/', 'App\Controllers\helloController');

namespace App\Controllers;class helloController extends BaseController {

// getでhello/にアクセスされた場合public function getIndex() {〜

}

// getでhello/goodmorningにアクセスされた場合public function getGoodmorning() {〜

}

// postでhello/goodmorningにアクセスされた場合public function postGoodmorning() {〜

}

// getでhello/goodmorning/messageでアクセスされた場合public function getGoodmorning($message) {〜

}}

Page 19: Laravelを使ってみた

Resourceful

Route::resource('hello', 'App\Controllers\helloController');

namespace App\Controllers;class helloController extends BaseController {

// getでhello/にアクセスされた場合public function index() {〜

}

// getでhello/createにアクセスされた場合public function create() {〜

}

// postでhello/にアクセスされた場合public function store() {〜

}

// getでhello/messageにアクセスされた場合public function show($message) {〜

}

// getでhello/message/editにアクセスされた場合public function edit($message) {〜

}

// putまたはpatchでhello/messageにアクセスされた場合public function update($message) {〜

}

// deleteでhello/messageにアクセスされた場合public function destroy($message) {〜

}}

Page 20: Laravelを使ってみた

バリデーション

public $validate_rules = array('id' => 'required|numeric|min:1','text' => 'required','offset' => 'numeric',

);

acceptedそのフィールドがyes、on、もしくは1であることをバリデートします。これは「サービス利用規約」同意のバリデーションに便利です。in:foo,bar...フィールドが指定されたリストの中の値に含まれていることをバリデートします。integerフィールドが整数値であることをバリデートします。requiredフィールドに入力データーが存在することをバリデートします。ipフィールドがIPアドレスの形式として正しいことをバリデートします。booleanフィールドが論理値として有効であることをバリデートします。受け入れられる入力は、true、false、1、0、"1"、"0"です。emailフィールドがメールアドレスとして正しいことをバリデートします。

その他、多数あります。

Page 21: Laravelを使ってみた

メール

'driver' => 'smtp','host' => 'yourhost.com','port' => 25,'from' => array('address' => 'admin@text,com', 'name' => 'admin_user'),

Mail::send(array('text' => $template), $param, function ($message) use ($to_address, $title) {foreach ($to_address as $key => $val) {

$message->to($val);}$message->subject($title);$message->getSwiftMessage()->getHeaders()->addTextHeader('Reply-To', "admin <[email protected]>");

});

Page 22: Laravelを使ってみた

拡張性

• Composerを利用• INSTALLcomposer create-project laravel/laravel --prefer-dist

Page 23: Laravelを使ってみた

その他気になる機能

• 認証(ソーシャル認証)• 暗号化• ハッシュ• ファサード• 多言語化• ペジネーション• キュ• セッション• テンプレート• ユニットテスト

Page 24: Laravelを使ってみた

使ってみてどうだった?

Page 25: Laravelを使ってみた

速度を重視するなら他の爆速と言われているフレームワークがいいかも…けど、Laravelは使いやすいし、楽し

かった。小規模システムや個人の何かを開発するにはいい。大概の機能や概念が溶け込んでいるので初心者に

おすすめできる。

Page 26: Laravelを使ってみた

おわり