SlideShare a Scribd company logo
 @shin1x1
2015/10/03 PHPカンファレンス
いまどきのPHP開発現場
-2015年秋-
開発現場で利用する
ツール、サービスの話です
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
PHP開発の現場
PHP開発の現場
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
PhpStorm
PhpStorm
(c) 2015 Masashi Shinbara @shin1x1
• JetBrains社のIDE(有償)
• 動作が軽快、静的解析、オールインワン
• Vimmerも納得のIdeaVIM
Demo
(c) 2015 Masashi Shinbara @shin1x1
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
PHP開発の現場
PHP開発の現場
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
Vagrant
Vagrant
(c) 2015 Masashi Shinbara @shin1x1
• プロジェクト毎に独立した環境
• 自動構築
• チームで同じ環境を利用
• 運用環境と同じ環境
導入ポイント
(c) 2015 Masashi Shinbara @shin1x1
• PHP コードと一緒に管理
• とことん自動化(vagrant upで完了)
• プロビジョニングは VM の中で実行
• Shell Script -> Ansible が楽
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
PHP開発の現場
PHP開発の現場
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
フレームワーク
フレームワーク
(c) 2015 Masashi Shinbara @shin1x1
• コンポーネント指向が主流
• Symfony / Zend Framework / Aura

CakePHP 3 / Laravel / BEAR.Sunday
• コンポーネントを分離して利用できる
• 他のフレームワークのコンポーネントを利用
Laravel
(c) 2015 Masashi Shinbara @shin1x1
• Symfony コンポーネントを多数利用

(独自解釈した Symfony とも言える)
• いいとこ取り
• Laravel もコンポーネントとして利用可能
フレームワークの付き合い方
(c) 2015 Masashi Shinbara @shin1x1
• フレームワークに従うのではなく

アプリケーションの部品として使う
• フレームワーク on フレームワーク
• インハウスフレームワーク
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
PHP開発の現場
PHP開発の現場
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
CI
(継続的インテグレーション)
CIサーバ、サービス
(c) 2015 Masashi Shinbara @shin1x1
• git push / PR を検知してタスクを自動実行
• テスト実行、フォーマットチェック、静的解析
• 自前なら、Jenkins
• SaaSなら、Travis CI / Circle CI
Travis CI
(c) 2015 Masashi Shinbara @shin1x1
https://travis-ci.org/
Travis CI
(c) 2015 Masashi Shinbara @shin1x1
https://travis-ci.org/
• GitHub と連携
• git push / PR を検知して実行
• .travis.yml に実行内容を指定
• sudo が実行できる(何でもできる)
.travis.yml
language: php

sudo: false



php:

- 5.6



before_script:

- composer self-update

- cp .env.example .env

- mysql -uroot -e "CREATE DATABASE app_test;"

- mysql -uroot -e "GRANT ALL PRIVILEGES ON app_test.* TO
vagrant@localhost IDENTIFIED BY 'pass';"



script:

- composer install --prefer-source --no-interaction --dev

- php artisan key:generate

- ./vendor/bin/phpunit
.travis.yml
language: php

sudo: false



php:

- 5.6



before_script:

- composer self-update

- cp .env.example .env

- mysql -uroot -e "CREATE DATABASE app_test;"

- mysql -uroot -e "GRANT ALL PRIVILEGES ON app_test.* TO
vagrant@localhost IDENTIFIED BY 'pass';"



script:

- composer install --prefer-source --no-interaction --dev

- php artisan key:generate

- ./vendor/bin/phpunit
.travis.yml
language: php

sudo: false



php:

- 5.6



before_script:

- composer self-update

- cp .env.example .env

- mysql -uroot -e "CREATE DATABASE app_test;"

- mysql -uroot -e "GRANT ALL PRIVILEGES ON app_test.* TO
vagrant@localhost IDENTIFIED BY 'pass';"



script:

- composer install --prefer-source --no-interaction --dev

- php artisan key:generate

- ./vendor/bin/phpunit
.travis.yml
language: php

sudo: false



php:

- 5.6



before_script:

- composer self-update

- cp .env.example .env

- mysql -uroot -e "CREATE DATABASE app_test;"

- mysql -uroot -e "GRANT ALL PRIVILEGES ON app_test.* TO
vagrant@localhost IDENTIFIED BY 'pass';"



script:

- composer install --prefer-source --no-interaction --dev

- php artisan key:generate

- ./vendor/bin/phpunit
Scrutinizer
(c) 2015 Masashi Shinbara @shin1x1
https://scrutinizer-ci.com/
Scrutinizer
(c) 2015 Masashi Shinbara @shin1x1
https://scrutinizer-ci.com/
• コードフォーマットや静的解析のSaaS
• 指摘表示
• 有償ならテスト実行も可
• Travis CI などと組み合わせる
Scrutinizer
(c) 2015 Masashi Shinbara @shin1x1
指摘事項
GitHub issue に登録
Scrutinizer
(c) 2015 Masashi Shinbara @shin1x1
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
PHP開発の現場
PHP開発の現場
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
PaaS
(Heroku)
PaaS
(c) 2015 Masashi Shinbara @shin1x1
• Platform as a Service
• Herokuが、PHP を正式サポート(2014)
• Azure WebApps(国内リージョンあり)
PaaS
(c) 2015 Masashi Shinbara @shin1x1
• サーバセットアップは自動

(あらかじめ決まったセットを利用)
• Git でデプロイして、すぐに使える
• サーバメンテナンスが不要
Heroku
(c) 2015 Masashi Shinbara @shin1x1
https://www.heroku.com/
Heroku
(c) 2015 Masashi Shinbara @shin1x1
https://www.heroku.com/
• PHP 5.5 / 5.6 / 7(RC4) / HHVM
• PHP 拡張や httpd サーバ、設定が可能
• 無料枠あり(検証環境にも便利)
• アドオンが豊富
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
PHP開発の現場
PHP開発の現場
(c) 2015 Masashi Shinbara @shin1x1
git push / PR
図図 - エンジニアエンジニア
SaaS
(Rollbar)
SaaS
(c) 2015 Masashi Shinbara @shin1x1
• エラートラッカー: Rollbar
• DNS: Amazon Route53
• メール: Amazon SES / SendGrid
• DB: Amazon RDS / Heroku Postgres
• 電話/SMS: Twilio
Rollbar
(c) 2015 Masashi Shinbara @shin1x1
• 発生した例外やエラーを蓄積
• アラート、サマリー
• 例外が発生したリクエスト、

スタックトレースを記録
• 無料枠あり
まとめ
ツールやサービスに任せる
やるべきことに集中
ツールに導かれる
@shin1x1
(c) 2015 Masashi Shinbara @shin1x1
Q?

More Related Content

PPTX
Behat Driven Development
PDF
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PDF
PHPデプロイツールの世界
PDF
認証機能で学ぶ Laravel 5 アプリケーション
PDF
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
PDF
PHPの今とこれから2015
PDF
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Behat Driven Development
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PHPデプロイツールの世界
認証機能で学ぶ Laravel 5 アプリケーション
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
PHPの今とこれから2015
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS

What's hot (20)

PPTX
PHP x AWS でスケーラブルなシステムをつくろう
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
PDF
PHPカンファレンス2014の懇親会飛び込みLT資料
PDF
PHPとJavaScriptの噺
PDF
PHP5.6からPHP7.0への移行
PDF
Laravel5.1 Release
KEY
最強のPHP統合開発環境 PHPStorm
PDF
恋に落ちるデプロイツール
PDF
Laravel5を使って開発してみた
PPTX
今日から始めるLaravel
PDF
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
PDF
フレームワークを使うべき 3 つの理由
KEY
Composer による依存管理 と Packagist によるライブラリの公開
PDF
HHVM/Hackを本番投入した話
PDF
ビルドサーバで使うDocker
PDF
FuelPHP活用事例
PDF
Laravel 5.1 LTSでサービスを作る
PDF
anyenv + phpenv + php-build が便利すぎる件
PDF
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
PDF
LaravelでAPI定義を管理する
PHP x AWS でスケーラブルなシステムをつくろう
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPとJavaScriptの噺
PHP5.6からPHP7.0への移行
Laravel5.1 Release
最強のPHP統合開発環境 PHPStorm
恋に落ちるデプロイツール
Laravel5を使って開発してみた
今日から始めるLaravel
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
フレームワークを使うべき 3 つの理由
Composer による依存管理 と Packagist によるライブラリの公開
HHVM/Hackを本番投入した話
ビルドサーバで使うDocker
FuelPHP活用事例
Laravel 5.1 LTSでサービスを作る
anyenv + phpenv + php-build が便利すぎる件
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
LaravelでAPI定義を管理する
Ad

Viewers also liked (11)

PDF
LaravelとMVCの先へ
PDF
みんなそろそろ707やめようぜ (;´Д`)
PDF
営業・運用を支える "気付ける" 管理画面
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
PPTX
知ってるようで意外と知らないPHPの便利関数
PDF
PHP の GC の話
PDF
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
PDF
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PPTX
Phpcon2015
PPTX
PHPとシグナル、その裏側
PPTX
〜laravel で学ぶ MVC
LaravelとMVCの先へ
みんなそろそろ707やめようぜ (;´Д`)
営業・運用を支える "気付ける" 管理画面
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
知ってるようで意外と知らないPHPの便利関数
PHP の GC の話
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
Phpcon2015
PHPとシグナル、その裏側
〜laravel で学ぶ MVC
Ad

Similar to いまどきのPHP開発現場 -2015年秋- (20)

PPTX
Power shell で DSL
PDF
Web制作のアレコレ
PDF
Windows で PHP をビルドしてみた
PDF
今、最もイケてるPHPフレームワークLaravel4
PDF
AzureでLaravel動かしてみた
PPTX
Webシステム脆弱性LT資料
PDF
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
PDF
第21回Creators MeetUp
PDF
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
PDF
Ansible ではじめるサーバ作業の自動化
PDF
Azure Websites で作るスケーラブルな PHP アプリケーション
PDF
How to run P4 BMv2
PDF
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
PDF
PHPにおけるI/O多重化とyield
PDF
FukuokaPHP 3
PDF
はてなのサービスの開発環境
PDF
OSC2013@FUKUOKA
KEY
JavaScript on GitHub (#kyotojs)
PDF
PHP で実行中のスクリプトの動作を下から覗き見る
PPTX
fastlane x iOSアプリのCI
Power shell で DSL
Web制作のアレコレ
Windows で PHP をビルドしてみた
今、最もイケてるPHPフレームワークLaravel4
AzureでLaravel動かしてみた
Webシステム脆弱性LT資料
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
第21回Creators MeetUp
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
Ansible ではじめるサーバ作業の自動化
Azure Websites で作るスケーラブルな PHP アプリケーション
How to run P4 BMv2
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
PHPにおけるI/O多重化とyield
FukuokaPHP 3
はてなのサービスの開発環境
OSC2013@FUKUOKA
JavaScript on GitHub (#kyotojs)
PHP で実行中のスクリプトの動作を下から覗き見る
fastlane x iOSアプリのCI

More from Masashi Shinbara (20)

PDF
日本語消えたスライド
PDF
Twilio入門 -Web アプリ編-
PDF
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
PDF
先取り!PHP 7 と WordPress
PDF
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
PDF
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
PDF
How to learn Laravel5 application from Authentication
PDF
わかってるフレームワーク Laravel
PDF
開発現場で活用するVagrant
PDF
PHPコードではなく PHPコードの「書き方」を知る
PDF
Heroku で作る
スケーラブルな 
PHP アプリケーション
PDF
Vagrant体験入門
PDF
VagrantユーザのためのDocker入門
PDF
Laravel ユーザなら知っておくべきAuthオートログイン
PDF
キャラ立ちしたエンジニアになる!
PDF
Composer 再入門
PDF
Vagrant で PHP 開発環境を作る ハンズオン
PDF
Twilio API を PHP で触ってみよう
PDF
いまどきのPHP
PDF
Vagrant で作る PHP 開発環境 [実践編]
日本語消えたスライド
Twilio入門 -Web アプリ編-
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
先取り!PHP 7 と WordPress
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
How to learn Laravel5 application from Authentication
わかってるフレームワーク Laravel
開発現場で活用するVagrant
PHPコードではなく PHPコードの「書き方」を知る
Heroku で作る
スケーラブルな 
PHP アプリケーション
Vagrant体験入門
VagrantユーザのためのDocker入門
Laravel ユーザなら知っておくべきAuthオートログイン
キャラ立ちしたエンジニアになる!
Composer 再入門
Vagrant で PHP 開発環境を作る ハンズオン
Twilio API を PHP で触ってみよう
いまどきのPHP
Vagrant で作る PHP 開発環境 [実践編]

いまどきのPHP開発現場 -2015年秋-

  • 3. (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア PHP開発の現場
  • 4. PHP開発の現場 (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア PhpStorm
  • 5. PhpStorm (c) 2015 Masashi Shinbara @shin1x1 • JetBrains社のIDE(有償) • 動作が軽快、静的解析、オールインワン • Vimmerも納得のIdeaVIM
  • 6. Demo (c) 2015 Masashi Shinbara @shin1x1
  • 7. (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア PHP開発の現場
  • 8. PHP開発の現場 (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア Vagrant
  • 9. Vagrant (c) 2015 Masashi Shinbara @shin1x1 • プロジェクト毎に独立した環境 • 自動構築 • チームで同じ環境を利用 • 運用環境と同じ環境
  • 10. 導入ポイント (c) 2015 Masashi Shinbara @shin1x1 • PHP コードと一緒に管理 • とことん自動化(vagrant upで完了) • プロビジョニングは VM の中で実行 • Shell Script -> Ansible が楽
  • 11. (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア PHP開発の現場
  • 12. PHP開発の現場 (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア フレームワーク
  • 13. フレームワーク (c) 2015 Masashi Shinbara @shin1x1 • コンポーネント指向が主流 • Symfony / Zend Framework / Aura
 CakePHP 3 / Laravel / BEAR.Sunday • コンポーネントを分離して利用できる • 他のフレームワークのコンポーネントを利用
  • 14. Laravel (c) 2015 Masashi Shinbara @shin1x1 • Symfony コンポーネントを多数利用
 (独自解釈した Symfony とも言える) • いいとこ取り • Laravel もコンポーネントとして利用可能
  • 15. フレームワークの付き合い方 (c) 2015 Masashi Shinbara @shin1x1 • フレームワークに従うのではなく
 アプリケーションの部品として使う • フレームワーク on フレームワーク • インハウスフレームワーク
  • 16. (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア PHP開発の現場
  • 17. PHP開発の現場 (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア CI (継続的インテグレーション)
  • 18. CIサーバ、サービス (c) 2015 Masashi Shinbara @shin1x1 • git push / PR を検知してタスクを自動実行 • テスト実行、フォーマットチェック、静的解析 • 自前なら、Jenkins • SaaSなら、Travis CI / Circle CI
  • 19. Travis CI (c) 2015 Masashi Shinbara @shin1x1 https://travis-ci.org/
  • 20. Travis CI (c) 2015 Masashi Shinbara @shin1x1 https://travis-ci.org/ • GitHub と連携 • git push / PR を検知して実行 • .travis.yml に実行内容を指定 • sudo が実行できる(何でもできる)
  • 21. .travis.yml language: php
 sudo: false
 
 php:
 - 5.6
 
 before_script:
 - composer self-update
 - cp .env.example .env
 - mysql -uroot -e "CREATE DATABASE app_test;"
 - mysql -uroot -e "GRANT ALL PRIVILEGES ON app_test.* TO vagrant@localhost IDENTIFIED BY 'pass';"
 
 script:
 - composer install --prefer-source --no-interaction --dev
 - php artisan key:generate
 - ./vendor/bin/phpunit
  • 22. .travis.yml language: php
 sudo: false
 
 php:
 - 5.6
 
 before_script:
 - composer self-update
 - cp .env.example .env
 - mysql -uroot -e "CREATE DATABASE app_test;"
 - mysql -uroot -e "GRANT ALL PRIVILEGES ON app_test.* TO vagrant@localhost IDENTIFIED BY 'pass';"
 
 script:
 - composer install --prefer-source --no-interaction --dev
 - php artisan key:generate
 - ./vendor/bin/phpunit
  • 23. .travis.yml language: php
 sudo: false
 
 php:
 - 5.6
 
 before_script:
 - composer self-update
 - cp .env.example .env
 - mysql -uroot -e "CREATE DATABASE app_test;"
 - mysql -uroot -e "GRANT ALL PRIVILEGES ON app_test.* TO vagrant@localhost IDENTIFIED BY 'pass';"
 
 script:
 - composer install --prefer-source --no-interaction --dev
 - php artisan key:generate
 - ./vendor/bin/phpunit
  • 24. .travis.yml language: php
 sudo: false
 
 php:
 - 5.6
 
 before_script:
 - composer self-update
 - cp .env.example .env
 - mysql -uroot -e "CREATE DATABASE app_test;"
 - mysql -uroot -e "GRANT ALL PRIVILEGES ON app_test.* TO vagrant@localhost IDENTIFIED BY 'pass';"
 
 script:
 - composer install --prefer-source --no-interaction --dev
 - php artisan key:generate
 - ./vendor/bin/phpunit
  • 25. Scrutinizer (c) 2015 Masashi Shinbara @shin1x1 https://scrutinizer-ci.com/
  • 26. Scrutinizer (c) 2015 Masashi Shinbara @shin1x1 https://scrutinizer-ci.com/ • コードフォーマットや静的解析のSaaS • 指摘表示 • 有償ならテスト実行も可 • Travis CI などと組み合わせる
  • 27. Scrutinizer (c) 2015 Masashi Shinbara @shin1x1 指摘事項 GitHub issue に登録
  • 28. Scrutinizer (c) 2015 Masashi Shinbara @shin1x1
  • 29. (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア PHP開発の現場
  • 30. PHP開発の現場 (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア PaaS (Heroku)
  • 31. PaaS (c) 2015 Masashi Shinbara @shin1x1 • Platform as a Service • Herokuが、PHP を正式サポート(2014) • Azure WebApps(国内リージョンあり)
  • 32. PaaS (c) 2015 Masashi Shinbara @shin1x1 • サーバセットアップは自動
 (あらかじめ決まったセットを利用) • Git でデプロイして、すぐに使える • サーバメンテナンスが不要
  • 33. Heroku (c) 2015 Masashi Shinbara @shin1x1 https://www.heroku.com/
  • 34. Heroku (c) 2015 Masashi Shinbara @shin1x1 https://www.heroku.com/ • PHP 5.5 / 5.6 / 7(RC4) / HHVM • PHP 拡張や httpd サーバ、設定が可能 • 無料枠あり(検証環境にも便利) • アドオンが豊富
  • 35. (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア PHP開発の現場
  • 36. PHP開発の現場 (c) 2015 Masashi Shinbara @shin1x1 git push / PR 図図 - エンジニアエンジニア SaaS (Rollbar)
  • 37. SaaS (c) 2015 Masashi Shinbara @shin1x1 • エラートラッカー: Rollbar • DNS: Amazon Route53 • メール: Amazon SES / SendGrid • DB: Amazon RDS / Heroku Postgres • 電話/SMS: Twilio
  • 38. Rollbar (c) 2015 Masashi Shinbara @shin1x1 • 発生した例外やエラーを蓄積 • アラート、サマリー • 例外が発生したリクエスト、
 スタックトレースを記録 • 無料枠あり
  • 42. @shin1x1 (c) 2015 Masashi Shinbara @shin1x1 Q?