SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
いまどきのPHPフレームワークは、
こんなことになってるよ
Laravel5.1をつかった
Webアプリケーション開発
2015/08/20
kan@notice.co.jp
http://www.notice.co.jp/
@notice_inc
お話しすること
• フレームワーク・アーキテクチャ
• Laravelの特徴
• Laravelのアプリケーション開発サイクル
• ステージング環境構築
• 脆弱性検査とパフォーマンス検査
• CI
フレームワーク・アーキテクチャ
• PofEAA (Patterns of Enterprise Application
Architecture)
• DDD(Domain Driven Development)
• GoF Design Patterns
• (The Three Amigos, UML)
最近、話題のアーキテクチャ
MicroService Architecture
PofEAAの著者マーティン・ファウラー氏が提唱
こんな話も…
http://www.slideshare.net/AkiraMiki/20160722-microservice
PHP Micro frameworks
こっちは小さい・シンプルって方
Lumen,Slim,Silex
Laravel5.1の特徴
• PHP >= 5.5.9
• LTS(Long Term Support)
• Composerによるパッケージ管理
• Symfony2コンポーネント継承
• IoCコンテナ装備
• データベースマイグレーション機能
• 強力なORM(Eloquent ORM)
• Bladeテンプレートエンジン
• gulpが標準タスクランナー(Elixir)
ベンチマーク
遅い、大食い…
DIのせいかな??
全てのサービスがリクエストごとにDI対象
しかし、
不必要なサービスを外すとか
チューニングすれば、解消?
PHP7/HHVM(JIT)とか使えばいっか!
アプリケーション開発サイクル
命名規則(CoC)とケーススタイル
データベーステーブル、カラム名は
スネークケーススタイル(hoge_fuga)
テーブル名は複数形・モデルクラス名は単数形
PHPコーディングはPSR-2準拠(Laravel5.1準拠)
メソッド・変数名は文脈で単数・複数形を使い分け
CSSのid,classはチェインケーススタイル(hoge-fuga)
※CSSはSMACCSに準拠,CSSプリプロセッサはLess
アプリケーション開発サイクル
Laravelインストール
$ composer create-project laravel/laravel --prefer-dist
$ cd laravel; git init # とりあえずリポ作成
$ composer install # frameworkのダウンロード
$ gulp # ビルド(transpile,minify,uglify CSS/Javascript)
$ artisan serve # PHP buildin server起動(port:8000)
create-project使うと、passwordハッシュのソルトとか自動生成してくれて便利
Javascript/CSSライブラリはbowerとnpmでパッケージ管理
アプリケーション開発サイクル
データベースマイグレーション
Schema Builderでテーブル定義を書く。
$ artisan make:migration create_users_table
$ artisan db:migrate
初期データの投入はseederを書く(モデルクラス定義後)。
$ artisan db:seed
アプリケーション開発サイクル
各テーブルのORMクラスを生成
$ artisan make:model User
関連もORMクラスに定義
hasOne(),hasMany(),
belongsTo(),belongsToMany()...
Lazy Eager Loadingをサポート
アプリケーション開発サイクル
URI設計とルーティング設定
URIとコントローラのメソッドを結びつける
Route::get(‘/projects’, ‘ProjectController@index’);
Route::get(‘/projects/{id}/show’, ‘ProjectController@show’);
Pretty URLで記述できる。
middlewareと呼ばれるフィルタを自在に設定可能。
アプリケーション開発サイクル
コントローラを書く
コントローラの役目は、
(1)リクエストをバリデーション(バリデータをDIできる)
(2)ビジネスロジックを実行
(3)表示に必要なデータをViewへ渡すまで。
コンストラクタでサービスの実装をDIする。
public function __construct(ServiceInterface $service)
fat controllerにしない。
ビジネスロジックはサービス層で、設計と実装を分離する。
UnitTestがしやすくなる。
アプリケーション開発サイクル
PHPUnit
Laravelのテスティングクラスでテストケースを記述
Webページのインタラクティブな動作も記述可能(visit,click,see)
フレームワークのメソッドをMockできる(Mockery)。
未完成のサービスはDIでMockをbindする。
ファクトリを使ったテストデータ作成(Faker)
データベースもテストケースごとにリセット可能(ロールバック)。
PsySHでインタラクティブなテストも可能
TDD(テストファースト)からBDD(スペックファースト)へ
開発とはオールレッドをオールグリーンに変えていく作業。
ステージング環境の構築
VirtualBox+Vagrantで
プロダクション環境と
同じOS、ミドルウェアを構成管理
プロビジョニングはAnsibleを利用
デプロイメントもAnsibleを利用
※デプロイメントスタイルはCapistranoスタイル
QA(Quality Authroity)向けにも提供
脆弱性検査とパフォーマンス検査
Vaddy+New Relic
どちらも無償版があるが、
実務では有償版でないと十分機能しないかも。
CI(Continuous Integration)
Gitリポジトリのmasterへpush/mergeをトリガー
ステージング環境をVagrant,Dockerで
一時的に構築しプロビジョニング
Gitリポジトリからmasterをarchive/export
ビルド
ユニットテスト実行
(結果を通知 HipChat,Slackとかへ)
通過すれば、Vaddyで脆弱性検査
ステージング環境を破棄
プロダクション版リリース
これらをCIで自動化したい。
TravisCI,Jenkins,CircleCI

Weitere ähnliche Inhalte

Was ist angesagt?

flyingV Laravel & AWS 經驗分享
flyingV Laravel & AWS 經驗分享flyingV Laravel & AWS 經驗分享
flyingV Laravel & AWS 經驗分享
Eugene Wang
 
AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワークAspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワーク
kenjis
 

Was ist angesagt? (20)

Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
 
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulpphp開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
 
Laravel の学び方と得られる学び
Laravel の学び方と得られる学びLaravel の学び方と得られる学び
Laravel の学び方と得られる学び
 
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 20130から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
 
Laravelのパッケージのテストに便利なパッケージ
Laravelのパッケージのテストに便利なパッケージLaravelのパッケージのテストに便利なパッケージ
Laravelのパッケージのテストに便利なパッケージ
 
Laravel Mix とは何なのか? - Laravel/Vue 勉強会 #1
Laravel Mix とは何なのか? - Laravel/Vue 勉強会 #1Laravel Mix とは何なのか? - Laravel/Vue 勉強会 #1
Laravel Mix とは何なのか? - Laravel/Vue 勉強会 #1
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみた
 
Laravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめたLaravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめた
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
 
flyingV Laravel & AWS 經驗分享
flyingV Laravel & AWS 經驗分享flyingV Laravel & AWS 經驗分享
flyingV Laravel & AWS 經驗分享
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
 
Java web application testing
Java web application testingJava web application testing
Java web application testing
 
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワークAspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワーク
 
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
 
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
 
PHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さPHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さ
 
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014
 

Andere mochten auch (8)

レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
 
LaravelとMVCの先へ
LaravelとMVCの先へLaravelとMVCの先へ
LaravelとMVCの先へ
 
Iocコンテナについて
IocコンテナについてIocコンテナについて
Iocコンテナについて
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
 
zend-expressiveを触ってみよう
zend-expressiveを触ってみようzend-expressiveを触ってみよう
zend-expressiveを触ってみよう
 
Rest ful api設計入門
Rest ful api設計入門Rest ful api設計入門
Rest ful api設計入門
 
新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
 

Ähnlich wie Laravel5.1をつかったWebアプリケーション開発

Ähnlich wie Laravel5.1をつかったWebアプリケーション開発 (20)

『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
 
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでCode for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
 
『RIA開発におけるサービス開発のイロハ』
 『RIA開発におけるサービス開発のイロハ』 『RIA開発におけるサービス開発のイロハ』
『RIA開発におけるサービス開発のイロハ』
 
RIA開発におけるサービス開発のイロハ
RIA開発におけるサービス開発のイロハRIA開発におけるサービス開発のイロハ
RIA開発におけるサービス開発のイロハ
 
OSC福岡 20111203
OSC福岡 20111203OSC福岡 20111203
OSC福岡 20111203
 
フレームワークビギナー勉強会
フレームワークビギナー勉強会フレームワークビギナー勉強会
フレームワークビギナー勉強会
 
Azure Service Fabric 概要
Azure Service Fabric 概要Azure Service Fabric 概要
Azure Service Fabric 概要
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
 
機械学習によるマーケット健全化施策を支える技術
機械学習によるマーケット健全化施策を支える技術機械学習によるマーケット健全化施策を支える技術
機械学習によるマーケット健全化施策を支える技術
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywords
 
Kaleidox
KaleidoxKaleidox
Kaleidox
 
Softlayer_bluemix-summit
Softlayer_bluemix-summitSoftlayer_bluemix-summit
Softlayer_bluemix-summit
 
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発A 1-1 tfs on azure で始めるイマドキのソフトウェア開発
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発
 
Go azure tfs_service
Go azure tfs_serviceGo azure tfs_service
Go azure tfs_service
 
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF
 
Laravel4で運用するサービス,そしてlaravel5へ
Laravel4で運用するサービス,そしてlaravel5へLaravel4で運用するサービス,そしてlaravel5へ
Laravel4で運用するサービス,そしてlaravel5へ
 
最近のWeb関連技術の動向あれこれ
最近のWeb関連技術の動向あれこれ最近のWeb関連技術の動向あれこれ
最近のWeb関連技術の動向あれこれ
 
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
 
開発ライフサイクルから見たAngularJS
開発ライフサイクルから見たAngularJS開発ライフサイクルから見たAngularJS
開発ライフサイクルから見たAngularJS
 

Laravel5.1をつかったWebアプリケーション開発