@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?

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

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