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開発

1,272 views

Published on

Shizuoka.php #1

Published in: Engineering
  • Be the first to comment

いまどき(これから)のPHP開発

  1. 1. いまどき(これから)のPHP開発 Shizuoka.php#1 @kubotak_public
  2. 2. Profile. ~ 2015/08 istyle.inc 久保田 賢二朗 ● PHP(Laravel/Phalcon) ● JavaScript(Vue.js/Svelte) ● Go ● Scala kenjiro kubota @kubotak_public テクノロジー本部 R&D部 技術開発部 チーフエンジニア Laravel JP Conference 2020 コアスタッフ / RoppongiDesignersメンバー
  3. 3. Profile. 実家の紹介 株式会社 久保田石材 創業88周年 お墓・墓石・記念碑など
  4. 4. 今日のテーマ 久しぶりにPHPの門を叩いたPHPerが考える いまどき(これから)のPHPアプリケーションの開発について いまどき(これから)はもっとこんな開発だよ! というご意見・知識をお持ちの方はぜひ懇親会で教えて下さい!
  5. 5. 今日話すこと いまどき(これから)のPHPでの開発とは・・・? 1. PHP7.4 2. 開発環境 3. 周辺ツール
  6. 6. PHP7.4
  7. 7. PHP7.4 2019年11月28日リリース予定 現在はBeta版が利用可能
  8. 8. 主な変更・追加 ● 配列式のスプレッド演算子 ● アローファンクション ● null合体演算子 ● 型付きプロパティ ● 共変戻り型と反変パラメータ ● プリローディング
  9. 9. 配列式のスプレッド演算子 PHP5.6以降で利用可能な引数のアンパック
  10. 10. 配列式のスプレッド演算子 配列にも使えるようになる!
  11. 11. 配列式のスプレッド演算子 array_merge不要
  12. 12. 配列式のスプレッド演算子 関数でもいける。
  13. 13. アローファンクション 無名関数を短く書ける
  14. 14. アローファンクション 親スコープの変数をキャプチャできるのでuse文が不要
  15. 15. アローファンクション 複数行での処理は書けないので既存の無名関数を置き換えできるものではない
  16. 16. null合体演算子 PHP7以降で可能になった合体演算子
  17. 17. null合体演算子 $aが未定義やnullなら’none’
  18. 18. 型付きプロパティ void, callable以外の型を指定可能
  19. 19. 共変戻り型と反変パラメータ 反変 共変 最初に指定された型よりも強い派生型を使用できる 最初に指定された型よりも弱い派生型を使用できる
  20. 20. 共変戻り型の例
  21. 21. 反変パラメータの例
  22. 22. プリローディング 事前にバイトコードをキャッシュして高速に利用で きるようにする仕組み OPcacheと異なり、ファイルの変更感知をしない。 Webサーバを再起動しない限りキャッシュを保持し 続ける。
  23. 23. プリローディング php.iniにpreload定義を記述したphpファイルを指定
  24. 24. プリローディング php.iniで指定したphpファイルにはキャッシュしたい phpファイルを記述する
  25. 25. 開発環境
  26. 26. 10年前くらいの開発環境 ● リモートサーバ ● XAMPP ● MAMP ● Aptana ● Eclipse+PDT 統合開発環境(IDE)・エディタ
  27. 27. いまどきの開発環境 ● docker-compose(Docker) ● PhpStorm ● Visual Studio Code 統合開発環境(IDE)・エディタ
  28. 28. docker-composeとは 複数のDockerコンテナで構成されるアプリケーションの、 Dockerイメージのビルドや各コンテナの起動・停止などを より簡単に行えるようにするツール。 docker-compose.ymlを記述することで構成を管理する
  29. 29. (例)docker-composeでPHPアプリケーション ● Nginx ● php-fpm ● MariaDB ● Memcached
  30. 30. ディレクトリ構成
  31. 31. docker-compose.yml
  32. 32. Nginx php-fpm MariaDB Memcached
  33. 33. 周辺ツール
  34. 34. Xdebug PHPをリモートデバッグできるツール これ自体はいまどきでもこれからでもなく、10年前から存 在している。 docker-composeと合わせて使うのが簡単だったので紹介
  35. 35. Dockerfile
  36. 36. PHPStan PHPを静的解析できるツール 似たようなものにPhanがある。 ● 構文エラーがないか ● 引数は適切か ● 未定義のものにアクセスしていないか ● 型は適切か ● PHPDocと乖離がないか
  37. 37. phpstan.neon
  38. 38. Deptrac 定義通りの依存関係になっているかをチェックするツール 似たようなものにdependency-analyzerがある。
  39. 39. 例えばレイヤードアーキテクチャ UI(Presentation) Application Domain Infrastructure 依存の方向は上から下 このルールを守らせるにはどうしたらよいか。
  40. 40. 雑なディレクトリ構造
  41. 41. depfile.yml
  42. 42. depfile.yml
  43. 43. depfile.yml
  44. 44. 定義に違反していないかチェック
  45. 45. まとめ
  46. 46. ● PHP7.4はすぐそこ!使いこなそう! ● 本番は物理だったとしても開発環境は 仮想化しよう! ● CIツールを効果的に使おう
  47. 47. thx:)

×