Skip to content

PHP Conference Japan 2024

   

PHP Conference Japan 2024に行ってきました。 PHP Conferenceは初参加です。

トラック1とトラック2は配信があったので、それ以外のトラックを主に見て回りました。 見たセッションはテスト系の話が多く、参考になりました。

PHPの今とこれから2024 by 廣川 類

  • PHPは1995年の登場からwebの進化とともに成長してきた
  • 今年は日本人がたくさん開発に参加した年
  • EOLバージョンの対応
    • ディストリビューションがメンテ
    • Remiバックポート(非公式)
  • 8.4の新機能
    • JITの改善
      • 中間表現を使用
    • プロパティアクセスフック
    • 非対称プロパティ可視性
    • 遅延オブジェクト
      • Lazyゴースト、プロキシの2種類ある
    • HTML5対応、DOM対応改善
      • HTML5はすでに廃止された など
  • FRANKENPHP
  • PHPは進化し続けることが必要

良いテストコードを書くためのガイドライン〜作成から運用まで〜 by rikuto

  • 開発者が行う自動テスト
  • なぜテストするのか
    • バグを早い段階で検出する
  • 良いテスト
    • 実装の詳細ではなく振る舞いをテストする
  • ふるまいのテスト
    • 得られた値が想定通りかのテスト
  • 実装の詳細のテスト
    • モックを利用したテスト
      • 関数内での呼び出しを確認するのみ
        • 仕様の変更に追従できない
  • ふるまいのテストをできるコードにする意
    • 実装の詳細を公開すると、ふるまいをテストしにくい
      • ふるまいだけを公開する
  • モックの利用は最小限にする
    • 自分たちの管理街にあるもの
      • 外部APIなど
  • どこにどんなテストを書けばよいのか
    • テストレベル
      • 単体<統合<E2E
      • 下位レベルのテストで担保しているものは高レベルでは省略できる
  • ガイドラインの作成
    • 本のコピー、抜粋ではなく現場の例で具体的に
    • ルールを厳しくしすぎない
    • 重要度別に優先度を設定
    • 作って終わりにしてはいけない
      • 定着するところまでする

PSR-15 はあなたのためのものではない? by やまゆ

  • RequestHandlerInterface

  • PHP-FIG

    • Laravelなど入っていない
      • Symfony/Laravelは後方互換性を重要視したため
  • PSRs

  • PHPの本来の役割を抽象化したものがPSR

  • PSR-15はドメインロジックとは関係ない

    • HTTPの外側
      • FWやLibraryのためのもの
        • だが準拠したFWは意外と少ない

PHPUnitでモックとスタブを使いこなす by asumikam

  • テストコード

    • 作者の意図を俯瞰して理解しやすくする
  • 単体テスト

    • ユニットが対象
    • 実行時間が短い
      • 本物を使うと遅くなる
    • 隔離された状態で実行
      • 本物を使うと隔離できない?
  • テストダブル(モック、スタブ)にする対象

    • 依存
    • プロパティ
    • 引数
  • モックとスタブの使い分け

    • モック
      • 模倣+検証
  • スタブ

    • 模倣のみ
      • 副作用がない処理
      • 重要度で判断
  • テストコードでif文があるならテストを分ける

テストコード書いてみませんか? by おのぽん

  • テストコードを書く理由

    • エンジニアの心理的安全性を担保するため
  • phpunit用のコンテナを分ける

  • 保守しやすいテストコード

    • テストコード内で分岐は避ける
      • 可読性が下がる
      • テストを分ける

プロダクトの寿命を延ばすためにエンジニアが考えるべきこと 〜バージョンアップってなんのためにやるのか〜 by 牧 良摩

  • PHPやLaravelのバージョンアップ

  • なんのためにやるのか

    • セキュリティサポートが切れたもの
      • 攻撃される要因となる
    • 開発効率が悪い
      • 競合に競争力で負ける
      • エンジニアのモチベーション低下
  • カオナビでは

    • バージョンアップチームがいる
      • 移行ガイド確認
      • Composerパッケージ確認
      • ツールを使った互換性チェック
      • コード修正
  • プロダクト開発で取り組むべきこと

    • テストを書く
    • 必要のないコードは消す
    • コードの影響範囲を分かりやすくする
    • 移行ガイドを読む
      • 非推奨な書き方をしない
    • 修正できるところは修正する
  • 誰のためにやるのか

    • サービスにかかわるすべての人のため

Laravel 11 へアップグレード、15分 で終わるのか!? by 勝佐拓也

  • migration

  • config

  • ハッシュ

  • 10時間かかった

EC2からECSへ:念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築 by 江口 純矢

  • ローカルと本番で差分が生じやすい

  • リリースにかかる時間が長い

  • コンテナ化の必要性は認識しながら数年放置

  • イメージ共通化のためにしたこと

    • 環境依存をイメージから追い出す
    • 環境依存をコンテナ起動時に取得する
      • SecretsManager
  • 本番リリースにかかる時間

    • 14分→4分
  • apache eventは負荷試験でエラーが出ることがあった

    • fastcgi moduleを採用
  • 公開前の動作カウ人

    • ALBにOIDCでの認証を入れた
  • 移行

    • Route53ではなくALBで加重設定をする
  • Blue/Greenデプロイは制約が多い