Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP に帰ってきました

PHP に帰ってきました

PHPカンファレンス愛媛2026のLTでお話しした内容の資料です。 These are the presentation materials from my Lightning Talk at PHP Conference Ehime 2026.

Avatar for Masayuki Fukui

Masayuki Fukui

October 12, 2026

Other Decks in Programming

Transcript

  1. 自己紹介 • 福井 将之 (ふくい まさゆき) @msfukui • PHP を使った

    Web アプリケーション開発に従事 • 平日は東京、週末は山梨、たまに香川 • 車とバイクに乗ることと猫とキーボードが好きです • PHP もとても好きです 2
  2. はじめに • 2024 年に PHP を使った開発の現場に帰ってきて • これまでを振り返って感じたことをお話ししてみます • 10〜15

    年ほど前からの昔話成分が多めです 🙇 • 注意: 生成AIを使った開発の話はいたしません 3
  3. 主なプログラミング言語との関わり • 1998年〜2010年: C / Perl • 2010年〜2015年: PHP(5.x) •

    2015年〜2020年: Ruby on Rails, JavaScript / Vue.js • 2020年〜2023年: (インフラ関連業務に従事) • 2024年〜: PHP(8.x) (現職) 4
  4. 昔の自分(PHP 5.x のころ) • 独自の Web フレームワークっぽいもの • サーバサイドのマルチページ構成 +

    Smarty • 手続き型のコードが大半 • 初歩的な OOP の知識はあったが使い所はわからず でもそれで満足していました、あるものを除いては.. 5
  5. 「保守性」との闘い • テストが書きにくい ◦ リグレッションを確認する手段がない ◦ バージョンアップのたびに全てを手動でテスト ◦ 工数よりもまず、エンジニアとして気持ちがすり減っていく •

    抽象化ができない ◦ C / Perl の CGI 由来の構造化設計の延長 ◦ 似た処理が重複し、コードベースが肥大化 ◦ 技術力が足りず、問題があることにすら気がつけない 6
  6. Web フロントエンドの開発と学び • JavaScript / Vue.js を使った SPA の開発に参加 ◦

    TypeScript が盛り上がり始めた頃だったが採用しなかった • 純粋関数で処理を組み立て、状態操作は一か所に閉じ込める • 宣言的に書き、条件分岐をできるだけ減らす ◦ テストしやすく、バグが混入しにくいコードの書き方を学ぶ 10
  7. PHP に帰ってきました 全部ある!すごい! • 言語の型と OOP のサポートが大きく強化 • Composer による依存管理

    • Web アプリケーションフレームワークの進化 • 開発支援のための周辺ツールが充実 • しかも、さらに漸進的な進化を続けている 12
  8. PHP の好きな言語機能 constructor property promotion / readonly class // Before

    final class User { private string $name; private int $age; } public function __construct(string $name, int $age) { $this->name = $name; $this->age = $age; } // After final readonly class User { public function __construct( private string $name, private int $age, ) {} } 13
  9. 参考資料 • リファクタリング: Ruby エディション https://www.kadokawa.co.jp/product/201002000196/ • オブジェクト指向設計実践ガイド https://gihyo.jp/book/2016/978-4-7741-8361-9 •

    ちょうぜつソフトウェア設計入門 https://gihyo.jp/book/2022/978-4-297-13234-7 • learnphptherightway-outline https://github.com/ggelashvili/learnphptherightway-outline 17
  10. 参考 RFC • PHP RFC: Constructor Property Promotion https://wiki.php.net/rfc/constructor_promotion •

    PHP RFC: Readonly properties 2.0 https://wiki.php.net/rfc/readonly_properties_v2 • PHP RFC: Readonly classes https://wiki.php.net/rfc/readonly_classes 18