「エラーとセキュリティ、PHP開発の課題、どう向き合う?」~【php】今週の人気記事TOP5(2025/11/16)
【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