Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

56,348 views

Published on

2015/10/03 PHPカンファレンス2015

Published in: Technology
  • Be the first to comment

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

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

×