「リファクタリング、Opcode…モダンPHP、どこまで深掘る?」~【php】今週の人気記事TOP5(2025/08/31)
【2025/8/31】「リファクタリング、Opcode…モダンPHP、どこまで深掘る?」今週の人気記事TOP5(2025/08/31)
開発効率がUPするリファクタリング術!メンテナンス性を劇的に改善した「抽象化」設計とは
イノベーション社では、類似コードの量産によるメンテナンス性低下を改善するため、リード生成処理をリファクタリング。インターフェースによる抽象化設計を導入し、共通処理をBaseLeadCreator
抽象クラスに集約しました。
各サービス固有の判定条件はInspectorInterface
を実装したクラスで定義し、InspectorRegistryInterface
で管理。LeadContext
で必要な依存関係とデータを一元管理することで、コードの保守性と拡張性を向上させました。ポリモーフィズムを活用し、具象クラスに依存しない設計を実現しています。
VLDを使ってPHPのopcodeを出力する
PHPのopcodeを理解するためのツールVLD(Vulcan Logic Disassembler)の紹介記事です。Dockerを用いたVLDのセットアップ方法、PHPスクリプトのopcode出力方法、および出力結果の解釈について解説しています。条件分岐、関数、入力を受け取る例を通して、opcodeからPHPの処理の流れを把握する方法を示し、VLDがPHPスクリプトの動作理解に役立つことを結論付けています。
🚀 モダンなPHP開発者に必要な21のスキルセット
現代的なPHP開発者に必要なスキルセットとして、PHP基礎、Laravel等のフレームワーク、SQL、Git、テスト、セキュリティ、API設計、フロントエンド、Docker、CI/CD、クラウド、パフォーマンス改善、アーキテクチャ設計、ドキュメント作成、コミュニケーション能力、インフラ基礎、監視・ログ、デプロイ戦略、パッケージ管理、コード品質、継続的学習の21項目を提示。現場で通用する開発者になるには、PHPだけでなく周辺技術の習得と実践が重要であり、OSSへの貢献や情報発信も推奨。
5分でわかるインターフェースと抽象クラス
PHPにおけるインターフェースと抽象クラスの違いに関する記事です。インターフェースは「ルール(契約)」のみを定義し、実装クラスにメソッド定義を強制します。一方、抽象クラスは共通処理と未実装メソッドを定義でき、より柔軟ですが多重継承はできません。ルール強制にはインターフェース、共通処理を含める場合は抽象クラスを選択します。インターフェースは多重継承可能、抽象クラスは不可、プロパティは抽象クラスのみ定義可能です。
【2025/8/24】「PHP、次のトレンドは「Laravel Boost」で決まり?」今週の人気記事TOP5(2025/08/24)
なぜSerenaからLaravel Boostに変えるとAIの精度が上がるのか
Laravel Boost導入でAIコーディング精度が向上した理由を解説。Laravel BoostはLaravel公式のMCPサーバーで、動的解析によりLaravel特有のファサードやミドルウェアを正確に把握。17,000以上のベクトル化されたドキュメントにアクセスし、Laravelバージョンに特化したツール群とガイドラインを提供。静的解析ベースのSerenaと比較して、Laravel開発においてより有利。AIがLaravelの規約に従い、テストを追加し、正しいAPIを使用するよう誘導する。
TempestはPHP界に「嵐」を巻き起こすか? 新星フレームワークで遊んでみた!
PHPフレームワークTempestを試した記事。Tempestは、開発者を縛らない自由さと直感的な開発体験が特徴で、特にDiscovery機能が強力。DIコンテナ、ルーティング、ミドルウェアなど必要最低限の機能は揃っており学習コストも低い。
実際にユーザー管理アプリを作成し、SQLiteでのDB接続、マイグレーション、モデル/リポジトリ/コントローラー/リクエスト/ビュー/ミドルウェア/テストを実装。
AWS Fargateへfrankenphp(Classicモード)とPulumiでデプロイ。
TempestはPHP開発の「当たり前」を変えるポテンシャルを秘めたフレームワークであると結論。
PHP-FPMのリロードをGracefulにした件
本番環境でPHP-FPMリロード時に502エラーが発生。原因はPHP-FPMのリロードがGracefulに行われておらず、処理中のリクエストが中断されたこと。解決策として、/etc/php-fpm.conf
に process_control_timeout = 30
を設定し、PHP-FPMを再起動。リクエスト処理中にPHP-FPMをリロードするテスト(abコマンドを使用)でエラーが発生しないことを確認。Gracefulリロードの重要性と、dev環境での再現確認・検証の必要性を学んだ。
Nginx+PHPの環境でサイズの大きいファイルをアップロードする ~CloudRun編~
Cloud Run環境でNginx+PHPを使用時、大きいファイルのアップロードが失敗する問題に対し、HTTP/2を有効にすることで解決する方法を解説。Cloud Runの設定で「HTTP/2エンドツーエンドを使用する」を有効にし、Nginxの設定ファイル(default.conf)にlisten 8080 http2;
を追記し、再デプロイすることで、HTTP/2でアクセスを受けられるようにする。Cloud RunとNginxの設定変更はできるだけ同時に行うことが推奨される。
【WordPress】WP REST APIで独自エンドポイントから自サイトのコンテンツを非同期取得する
WordPressで自サイトのコンテンツを非同期取得する方法として、WP REST APIを利用する手法を紹介。
functions.php
で独自エンドポイントを登録し、ログインユーザーの投稿データを取得するコールバック関数を実装。
JavaScriptではfetch
APIを用いてエンドポイントに接続し、取得したデータをレンダリングする。
wp_localize_script
でエンドポイントURLや認証用nonceをJSに渡し、無限スクロールを実装。
外部サイトからのデータ取得だけでなく、自サイトの非同期処理にもREST APIが有効活用できる。
【2025/8/17】「PHP開発、AIでどこまで進化する?あなたの現場では?」今週の人気記事TOP5(2025/08/17)
Laravel Boost のセットアップ手順と機能まとめ
Laravel Boostは、Laravelアプリ開発をAIで強力に支援するパッケージです。
IDEに連携するMCPサーバーを通じて、DB接続、ドキュメント検索、コード実行など16種類のToolを提供します。
Laravel特有のコンテキストと知識をAIに与え、高品質なコード生成を加速し、公式ドキュメントやAIガイドラインも組み込まれています。
実際に使用した結果、Laravel関連の作業がスムーズになり、プロジェクト参画時のコードリーディングやエラー対応に役立つとのことです。
gemini-cli に OSS の翻訳をやらせてみる
フルスタックエンジニアである筆者は、PHPマニュアル日本語版の更新作業を効率化するため、gemini-cliを用いて翻訳を試みた。英語版との差分適用や新規マニュアルの翻訳を行い、大幅な負担軽減を実感。ただし、コスト(約2000円)と処理速度に課題が残る。なお、生成AI翻訳のOSSへの取り込みに懸念があり、該当コミットはrevertされている。
「Laravel開発、AST解析、AI翻訳…PHPの未来、どう変わる?」~【php】今週の人気記事TOP5(2025/08/13)
PHPの最新トレンドを紹介する記事まとめ。
-
AI翻訳:
gemini-cli
をPHPマニュアル翻訳に試験導入。翻訳精度は高いが、コストと速度が課題。 - カンファレンス: BCMath関数、FFI、学習地図等を紹介。
- 開発環境: Docker + Laravel Sail + Breezeでの環境構築手順。
-
ツール:
Claude Code
と協働で消費税減税シミュレーター開発。mago ast
コマンドでPHP ASTをダンプ。 - Enum: 区分値の外部使用を避け、保守性を向上させる方法を解説。
- GraphQL: Resolver並行性の言語別実装比較。JSが有利。
- 認証: デジタル認証アプリ認可URLを生成する方法。
- Pest v4: PlaywrightベースのE2Eテスト機能が追加。デバッグ、並列実行、画像回帰テスト等が可能。
- OSS: 小山市AEDマップは汎用的な設計。
mago ast コマンドによる PHP AST のダンプ
MagoはPHP開発ツールチェーンで、ast
コマンドを使うとPHPコードの抽象構文木(AST)をダンプできます。--file
オプションで対象ファイルを指定し、--json
オプションでJSON形式での出力が可能です。記事では、サンプルコードをMagoとnikic/php-parserでそれぞれJSONダンプした結果を比較しています。これにより、MagoがPHPコードの構造をどのように解析し、表現するかが理解できます。
【初心者向け】Docker + Laravel Sailで環境構築し、Breezeで認証機能を追加するまで
Docker + Laravel SailでLaravel環境を構築し、Breezeで認証機能を実装する手順を解説。laravel/breeze
のインストール失敗によるBreezeServiceProvider
エラーへの対処法(composer require
再実行)を紹介。最終的にログイン・登録画面の表示確認をもって完了とする。Docker環境構築と認証機能追加、エラー解決の基礎スキル習得に役立つ内容。
【2025/8/13】「Laravel開発、AST解析、AI翻訳…PHPの未来、どう変わる?」今週の人気記事TOP5(2025/08/13)
gemini-cli に OSS の翻訳をやらせてみる
フルスタックエンジニアである筆者は、PHPマニュアル日本語版の更新作業にgemini-cliを試験導入。diffファイルの適用や新規マニュアルの翻訳をAIに実行させた。翻訳精度は高いものの、コスト(約2000円)と処理速度が課題。コミット自体はrevertされたが、AIによるOSS翻訳の可能性と課題を示唆。将来的には言語の壁がなくなる可能性を感じている。
PHPカンファレンス関西2025 初参加レポート
PHPカンファレンス関西2025に参加したフロントエンドエンジニアによるレポート。バックエンドにLaravelを採用したチームに参画したことをきっかけに、PHPの知識習得を目的として参加。
セッションでは、BCMath関数による正確な小数点計算、PHPでの通信プロトコル実装(FFI)、若手エンジニア向けの学習地図などが紹介された。特に、PHPで通信プロトコルを実装できることや、技術だけでなく思想や歴史を学ぶ重要性が印象的だった。
イベントは初心者にも参加しやすい雰囲気で、技術交流や新たな知見を得る良い機会となった。
【初心者向け】Docker + Laravel Sailで環境構築し、Breezeで認証機能を追加するまで
DockerとLaravel Sailを用いてLaravel環境を構築し、Laravel Breezeで認証機能(ログイン・登録)を追加する手順を解説。laravel/breeze
インストール時にBreezeServiceProvider
が見つからないエラーが発生したが、composer require
再実行でvendor/laravel/breeze
ディレクトリを生成し解決。http://localhost/login
とhttp://localhost/register
でログイン・登録画面が表示されることを確認。
ClaudeCodeと作る消費税減税シミュレーター
エンジニアのなおきち氏がClaude Codeと協働し、消費税減税シミュレーターを開発。HTML/CSS/JavaScript(ES6+)/PHP(WordPress)を使用し、税込金額から減税効果を算出。特徴は、Math.floor()による現実的な消費税計算、リアルタイムUI、WordPress AJAX連携、IP重複チェック等のセキュリティ対策。日本語入力への対応やモバイルUXの最適化も実施。政策議論への貢献を目指し、技術的にはシンプルな構成ながら、実用性の高いツールを実現。
mago ast コマンドによる PHP AST のダンプ
Magoのast
コマンドはPHPコードの抽象構文木(AST)をダンプする機能を提供する。--file
オプションで対象ファイルを指定し、--json
オプションでJSON形式での出力が可能。記事では、名前空間、use文、インターフェースを含むPHPファイルのASTをダンプする例を示している。参考として、nikic/php-parser
による同様のJSONダンプ出力例も掲載し、構造の違いを比較できるようにしている。MagoのAST出力は、コードの構造分析や自動処理に役立つ。
【2025/8/3】「Enum、GraphQL、E2Eテスト…PHP進化の波、乗り遅れてない?」今週の人気記事TOP5(2025/08/03)
頼む。。。Enumを使うときは区分値は外から使わないでくれ。。。区分値はEnum内部だけで使うようにしてくれ。。本当に頼む。。
PHPのEnum使用に関する記事です。Enumの区分値を外部から直接使用せず、Enum内部でのみ使用することを推奨しています。区分値の変更に強く、保守性の高いコードにするためです。
具体的な改善策として、Enumにロジックを持たせること、staticメソッドや定数を活用してEnum生成時に意図を明確にすることを紹介しています。区分値の増減に備え、Enumの利用箇所全体の見直しを防ぐことが目的です。
GraphQLの「Resolver並行性・I/O並列性」の言語別実装比較(JS, Go, Ruby, PHP)
GraphQLのResolver並行性と言語別実装を比較。JS(Node.js)はPromise/asyncで非同期並行処理に優れ、I/O並列性も高い。Goはgoroutineで並行処理可能だが、データ構造の扱いに注意。RubyはAsyncDataloaderでI/O並列化可能だがJS/Goに劣る。PHPは基本的に同期実行。JSはResolver並行性の恩恵を受けやすく、複雑なクエリを高速に処理できるため最適。
PHPでデジタル認証アプリ認可URLを生成する
ランサーズでは、マイナンバーカードによる本人確認にデジタル庁のデジタル認証アプリを導入。本記事では、PHPでの認可URL生成とリダイレクト処理の実装方法を解説します。PKCE用パラメータ、state、nonceを生成しセッションに保存。response_type
、scope
、client_id
などのパラメータを付与して認可URLを構築、ユーザーをリダイレクトします。デジタル庁のリファレンスとサポートにより開発はスムーズに進められました。
小山市オープンデータでAEDマップを作った話
Code for OYAMAが開発した「おやまAEDマップ」は、小山市のAED設置場所を地図表示するWebアプリ。
特徴は、汎用性を重視した設計で、設定ファイルとコード調整により、レストランマップや観光地マップなど他用途へ容易に転用可能。
技術スタックは、Leaflet.js、OpenStreetMap、PHP、SQLite3を採用し、共用サーバーでも動作するシンプルな構成。CSVインポート機能、カテゴリフィルター機能、管理者向けCRUD操作も実装。セキュリティにも配慮し、一般ユーザー向け最小構成と管理者向けフル機能版の2段階構成を提供。
Pest v4 - Laravel E2Eテストの新スタンダード
Laracon US 2025で発表された Pest v4 は、PlaywrightベースのBrowserテスト機能が追加され、E2EテストをLaravelの機能と連携して記述可能になりました。
デバッグ機能(debug(), tinker())や、JavaScriptエラー、console.logの検出、画像回帰テストによるスモークテストの強化、デバイス・テーマ対応、並列実行による高速化が特徴です。
ShardingによるCI高速化、Type Coverage改善、不適切語検出機能も追加。正式リリースは2025年8月21日予定。
これにより、LaravelアプリケーションのE2Eテストにおける有力な選択肢となります。
Discussion