「セッション、拡張設計、AI…PHPの次の一手は?」~【php】今週の人気記事TOP5(2025/11/30)
【2025/11/30】「セッション、拡張設計、AI…PHPの次の一手は?」今週の人気記事TOP5(2025/11/30)
CakePHPの新旧バージョンでSessionを共有する
CakePHPの異なるバージョン間でセッションを共有する方法について解説。バージョンアップに伴うセッション処理の変更点を明らかにし、具体的な修正方法を提示しています。これにより、CakePHPのバージョン移行時におけるセッション管理の課題を解決し、スムーズな移行を支援します。
まずはここから始めるWebアプリ入門の考え方
Webアプリは「入力→処理→保存→表示」の基本の流れで動作する。初心者はまずToDoアプリ開発を通じて、HTML基礎、サーバー側でのデータ受け取り、データベース保存の理由を学ぶのがおすすめ。この順序で学習することで、AI時代においても不可欠なWebアプリの基礎を効率的に習得できる。
HTTP通信でCookieが送られない理由と対処法【PHP/JavaScript】
この記事は、HTTP通信でCookieが送られない問題について、ブラウザとHTTPクライアントの動作の違いを解説しています。ブラウザはCookieを自動で送信しますが、cURLやfetchなどのHTTPクライアントは設定が必要です。対処法として、PHPのcURL、Guzzle、Laravel HTTP Client、JavaScriptのfetch()それぞれにおけるCookie送信設定を紹介し、Cookieが正しく送信されているか確認する方法を提示しています。
PhpStorm×JetBrains AI Assistant 徹底紹介:使ってみたら良き相棒に
JetBrains AI AssistantをPhpStormで活用した実務効率化について紹介。ChatGPT/Copilotとの比較を交え、基本機能から具体的な利用例まで解説します。Agent Growのテックブログ記事として、AI Assistantをエンジニアの良き相棒とするための情報を網羅的に提供します。
既存コードを変更せずに拡張する設計(オープンクローズドの原則)
フルスタックエンジニアPengineer氏が、既存コードを変更せずに機能拡張する設計、特にオープン・クローズドの原則(OCP)について解説。具体的な例として、プッシュ通知の機能拡張をデコレータパターンを用いて実現する方法を紹介。変更が必要なコードを避け、追加で機能を実現する設計を目指す。
【2025/11/23】「PHP開発、コスト削減と品質向上、両立できていますか?」今週の人気記事TOP5(2025/11/23)
BlacksmithでGitHub Actionsのコストを75%削減した話
ラッコ社はGitHub Actionsのコスト削減のため、サードパーティランナーサービス「Blacksmith」を導入。移行の容易さとDockerビルドの高速性から選択した結果、コストを約75%削減、実行時間を平均50%高速化。ただし、Migration Wizardのデフォルト設定(4vCPU)が過剰スペックになる点、特定のPHPユニットテストでcomposer installが失敗するケースがある点に注意が必要。全体としては、GitHub Actionsを多用する企業にとって導入メリットが大きいと結論付けている。
PHPのtry-catchの握りつぶしを探すときにAIとASTを使ってみた
PHPコード内のtry-catchの握りつぶし撲滅のため、AIによる調査の漏れをAST(抽象構文木)を利用して検出する試み。nikic/php-parserライブラリを使用し、指定ディレクトリ以下のPHPファイルを再帰的に解析。catchブロック内に実行可能なステートメントがない場合、ファイル名、行数、例外タイプを違反として報告。AIに抽出コード作成を依頼する方が有効な場合もある。Rustでの実装も検討。
PHPを過去の理解が深まった記録
PHP初心者が、学習を通して理解を深めた内容をまとめた備忘録です。変数、関数、引数といった基本概念から、HTMLとの連携、配列の扱いまで、具体的なコード例を交えて解説しています。変数の命名規則、echoとprintの使い分け、HTMLとの混合時の可読性向上、入力チェック、コメントの重要性、配列の操作など、実践的なベストプラクティスが紹介されています。特に、$_POST変数の理解、文字列の連結、シングルクォートとダブルクォートの違い、配列のキー指定に焦点を当てています。
miseでwindows版PHP実行環境を構築
Windows環境でPHPの開発環境を構築する必要に迫られた筆者が、バージョン管理ツールmiseを利用した手順を紹介。
- miseのインストール: wingetでmiseをインストール。
- 環境変数の設定: miseのshimsディレクトリをPATHに追加し、miseコマンドを実行可能に。
-
PHPのインストール:
mise installコマンドで特定のPHPバージョンをインストールし、mise useで利用バージョンを指定。Composerも利用可能になる。 - php.iniの設定: バージョン毎の設定変更を避けるため、開発環境ディレクトリにphp.iniを設置することを推奨。
Google アカウント権限エラーを個人開発で解決した話
Googleアカウントの権限エラー解決のため、SolidJSで開発したアカウント切替ツールを個人開発。学内ヘルプセンターへの統合を機に、バックエンドをPHP APIに書き換え、CORS設定やトークン検証、ログ集約などの運用整備を実施。現在、学内ヘルプセンターで常時稼働し、高負荷時にも安定稼働。URL入力だけでアカウント切替を誘導するシンプルな設計で、問い合わせ件数削減に貢献。今後はCIでの脆弱性スキャン導入を検討。
【2025/11/16】「エラーとセキュリティ、PHP開発の課題、どう向き合う?」今週の人気記事TOP5(2025/11/16)
PHPカンファレンス福岡2025登壇レポート: 例外処理を理解して、設計段階からエラーを「見つけやすく」「起こりにくく」する
PHPカンファレンス福岡2025での登壇報告。エラーをドメインの値としてモデリングする設計について解説。
「在庫不足」のようなビジネスルール起因のエラーを型で表現し、ドメイン例外と技術的例外、構文的/意味的チェックに分類。
関連セッションとして、型システムによる技術的例外の抑制や、PHPStanを活用したResult型実装を紹介。
議論ではステータスコードと例外の分類、独自例外とResult型の選択が焦点に。
エラーハンドリングの歴史的変遷も重要とし、今後の設計に活かしたいとのこと。
生成AIでプログラミング学習、その前に|社内SEが知っておくべきセキュリティの基本
生成AIの学習に会社のコードを利用する際の情報漏洩リスクと対策を解説。無料版AIでは入力データが学習に利用される可能性があり、機密情報の漏洩に繋がる。対策として、実際のコード、個人情報、システム構成情報、APIキーなどをAIに入力することを禁止。代わりに、テーブル名やカラム名を抽象化、ダミーデータの作成、質問の仕方を工夫するなどの「匿名化テクニック」を紹介。社内セキュリティポリシーの確認も重要。本シリーズでは、ダミーのTODOリストを題材に、安全なPHP学習方法を解説する。
攻撃者の視点で学ぶPHPセキュリティ|Kali Linuxで実践する脆弱性テスト
この記事は、PHPセキュリティを攻撃者の視点から学ぶ入門編です。Kali Linuxを用い、Nmap、Burp Suite、SQLMap、OWASP ZAP等のツールを使い、SQLインジェクションやXSS等の脆弱性テストを実際に行う方法を解説します。
重要なのは、防御だけでなく攻撃手法を知ることで対策の必要性を理解すること。
自身の環境でテストを行い、倫理的ハッキングのルールを守ることが強調されています。
最終的には、セキュアな開発に繋げることを目指します。
macでmiseインストール(node、PHPのバージョン管理)
macOS環境でvoltaからmiseへの移行手順と、miseによるNode.jsとPHPのバージョン管理について解説。voltaのアンインストール後、miseをインストールし、mise doctorで問題がないか確認。PHPのバージョン管理にはasdf-phpを使用し、必要なパッケージをインストール。PHP_CONFIGURE_OPTIONSを指定してmise installを実行することで、Node.jsとPHPの両方をmiseで管理可能にする。
PHPカンファレンス福岡2025に参加してのメモ
PHPカンファレンス福岡2025の参加メモ。
AI活用では、AIと並走したドメイン駆動設計の重要性、特にコンテキスト設計が鍵となる。
また、APIインターフェースによる依存性の逆転で開発の並列化を可能にするアーキテクチャや、型定義によるコンパイル時テストで不正を防ぐ設計が有効。
バグ予防にはブランチ戦略やテストタイミングの見直し、組織設計ではフィードバック構造の構築が重要。
OSS開発では、ツールの成長と開発者の思想の違いを経験し、個人開発へのモチベーションが高まった。
【2025/11/9】「Laravel開発、Docker移行は必須?依存性逆転、本当にできてますか?」今週の人気記事TOP5(2025/11/09)
php artisan の実体
Laravelのphp artisanコマンドは、artisanというPHPスクリプトの実行に過ぎません。このスクリプトはLaravelアプリケーションを起動し、Application::handleCommand()に引数を渡します。実際のコマンド処理はConsoleKernel::handle()で行われ、サービスプロバイダーが起動し、getArtisan()->run()でコマンドが実行されます。ArtisanServiceProviderがコマンドを一括登録し、Symfony Consoleで実行されます。コマンドはLaravel組み込み、routes/console.php、app/Console/Commands/の3箇所に存在します。
WindowsでPHPの勉強を始めるための環境構築 2025年版
2025年版として、WindowsでPHP学習環境を構築する3つの方法(XAMPP、WSL、PHP For Windows)を解説。wingetコマンドにより、XAMPPやPHP本体が容易にインストール可能になった。XAMPPはWebサーバーとDB込み、WSLはLinux環境、PHP For WindowsはPHP本体のみを提供。手軽さ、機能、実践度で比較し、学習目的に合った方法を推奨。VSCodeと拡張機能の導入も推奨。
[依存性逆転の原則失敗]ロジックを抽象化したけど抽象化しきれていなかった
「Hogeが外部システムAに連携済か判定する機能」を実装する際、変更可能性を考慮して依存性逆転の原則を適用し、判定ロジックをインターフェース化。しかし、ロジック変更時に呼び出し元も変更が必要になるため、抽象化が不十分だったと結論。
対策として、値オブジェクト生成のファクトリ追加、または単純なロジックの場合は直接実装する案を提示。抽象化の必要性とYAGNI原則とのバランスが重要だと述べている。
Laravel Sailはもう古い?DockerでモダンなLaravel開発環境を構築する手順
この記事では、Laravel Sailを使わずにDocker Composeで柔軟な開発環境を構築する手順を解説しています。Nginx, PHP-FPM, MySQLの各コンテナをdocker-compose.ymlで定義し、PHPバージョンや拡張機能、Nginx設定をプロジェクト毎に最適化します。docker compose execでコンテナ内でartisanコマンドやcomposerを実行し、ローカル環境へのPHPやComposerのインストールを不要にします。
MAMPとWebサーバーの仕組みを徹底解説 - Apache、PHP、Railsの違いまで"
MAMPはWeb開発環境で、MacOS、Apache、MySQL、PHPで構成されます。ApacheはWebサーバー、MySQLはDB、PHPはサーバーサイド言語として機能。Apacheは設定ファイルに基づいてドキュメントルート(htdocs)以下のファイルを公開し、PHPモジュールを通じてPHPスクリプトを実行します。Railsアプリは常駐型のアプリケーションサーバーを必要とするため、共有レンタルサーバーでは動作しません。EC2でPHPを動かすには、Apacheに加えPHPのインストールが必要で、パッケージマネージャーが自動で連携設定を行います。
【2025/11/2】「浮動小数点数誤差、ちゃんと対策してる?認証は奥が深い!」今週の人気記事TOP5(2025/11/02)
CakePHPの認証の中身を覗く
CakePHPの認証は、MiddlewareとPluginの組み合わせで実現されています。Middlewareで認証処理(Application.phpで設定したAuthenticatorの実行)を行い、認証結果をRequestに格納。PluginはControllerから認証結果を $this->Authentication->getResult() で取得し、認証が必要な画面でのエラー処理などを担当します。ログイン処理では、Middlewareで認証チェックは実行済みのため、Pluginで結果を取得するだけで済みます。これにより、認証処理と認可処理を分離し、柔軟な認証機構を構築しています。
PHPのClassという概念についての備忘録(途中)
PHPにおけるClassの概念を、商品の例を用いて解説した備忘録。Classはデータ(プロパティ)と処理(メソッド)をまとめる設計図であり、インスタンス化して利用する。記事では、Productクラスの定義例として、名前を保持する$nameプロパティと、インスタンス生成時に名前を設定するコンストラクタ__construct()を紹介。Gemini先生の説明を引用し、Classの役割を「商品の設計図」として分かりやすく解説している。理解が不十分なため、後日追記予定。
[PHPStan]nullチェックを綺麗に可憐に捌きたい💃
PHPStanのレベルを上げたことで、DBリレーションにおけるnullチェックの重要性が増した。DBの外部キー制約不足により、本来nullにならないリレーションもnull許容とみなされるため、nullチェックが多発しコード可読性の低下が懸念される。そこで、nullを「異常ケース」(DB都合)と「正常ケース」(業務ルール都合)に分類し、それぞれリポジトリ層で例外を投げる、ドメイン層でドメインモデルや値オブジェクトに変換するという対処法を提案。nullの性質に応じた適切な層でのチェックにより、コードの意図を明確化し、より良いクラス設計を目指す。
WordPressのカスタマイズをするためのPHP学習備忘録
WordPressカスタマイズを目標にPHP学習を行った記録。MAMPで開発環境を構築し、ECサイト作成を通して基本文法とフォームの扱いを習得。商品情報を連想配列で管理し、foreachで繰り返し表示。$_POSTでフォームデータを受け取り、カート内の商品表示と合計金額計算を実装。税込み価格表示の関数化も行った。エラー解決にはGeminiを活用。今後は関数利用の理解を深めたいとしている。
「PHPの計算が合わない!?」浮動小数点誤差の原因と正しい対処法
PHPで浮動小数点数の計算を行うと、2進数での近似表現による「丸め誤差」が発生し、期待値と異なる結果になることがある。これはPHPのバグではなく、IEEE 754に基づく仕様。解決策として、BCMath拡張関数のbcmul()などを利用した任意精度計算が有効。Laravelプロジェクトでは、金額計算などで特に重要で、文字列型とBCMathを使用し、データベースではDECIMAL型を利用することが推奨される。誤差を無視できる場合は、round()関数で桁数を丸めることも可能。
Discussion