いまどきのphp開発現場 -2015年秋-
TRANSCRIPT
@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/
• GitHub と連携 • git push / PR を検知して実行 • .travis.yml に実行内容を指定 • sudo が実行できる(何でもできる)
.travis.yml
language: phpsudo: falsephp: - 5.6before_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: phpsudo: falsephp: - 5.6before_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: phpsudo: falsephp: - 5.6before_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: phpsudo: falsephp: - 5.6before_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?