Laravelプロジェクトの初期構成を理解する:composer.jsonから読み解く基本パッケージ新着!!
laravel new や composer create-project で作ったばかりのLaravelプロジェクトには、最初から多数のパッケージが同梱されています。入門段階では「とりあえず動くもの」として扱いがちですが、composer…
フロントとバックエンドで揃えるQRコード生成:vue-qrcodeとphp-qrcode新着!!
Webアプリで「QRコードを表示する」要件は、実は2つの異なる場所で発生することが多いです。
SQS FIFOキューをLaravelで扱う:順序保証つきジョブ処理入門新着!!
Laravel のキュー機能は sqs ドライバで Amazon SQS をそのまま利用できます。かつては標準で想定されているのが Standard キュー だけで、順序保証と重複排除を備えた FIFO キュー を使おうとすると、そのままで…
league/flysystem-aws-s3でS3をローカルストレージのように扱う新着!!
ファイルの保存先を「ローカルディスク」から「Amazon S3」へ移す場面はよくあります。素朴にやると、ファイル操作のコードを AWS SDK の呼び出しに全部書き換えることになり、保存先を切り替えるたびにアプリ側を触ることになります。
PredisとRedisではじめるPHPアプリのキャッシュ設計入門新着!!
PHPアプリケーションでデータベースへのアクセスが増えると、同じクエリを繰り返し実行してレスポンスが遅くなる、という課題に直面します。本記事では、PHP向けのRedisクライアント Predis を使って、Redisをキャッシュ層として組み…
Twig と Smarty、PHPテンプレートエンジンの選び方を考える
PHP でビューを組み立てるとき、生の PHP を埋め込む方式のほかに、専用のテンプレートエンジンを使う選択肢があります。代表的なのが Twig と Smarty です。どちらも「ロジックとビューを分離する」という同じ目的を持ちながら、設計…
Monologでログ設計:ハンドラとチャンネルを使いこなす
PHPのデファクトなロギングライブラリ Monolog は、「ハンドラ(Handler)」「フォーマッタ(Formatter)」「プロセッサ(Processor)」「チャンネル(Channel)」という4つの部品の組み合わせで動きます。この…
Carbonで日付処理のバグを防ぐ:タイムゾーンと不変性の落とし穴
PHP/Laravel で日付を扱うなら Carbon はほぼ必須のライブラリですが、「タイムゾーン」と「ミュータブル(可変)性」の 2 つを理解していないと、テストでは通るのに本番で日付がずれる、集計が 1 件だけ狂う、といった再現しづら…
FakerとファクトリでテストデータをリアルにするPHPテスト術
PHPのテストにおける「テストデータの作り方」は、品質と保守性を大きく左右します。['name' = 'test', 'email' = 'a@a.com'] のようなベタ書きは書き始めこそ速いものの、カラムが増えるたびに全テストへ波及し、…
外部キーだらけの旧DBを新DBへ移行する — Seederの依存解決とDB定義書からのDDL自動生成
ある業務システムのリニューアル案件で、旧DBから新DBへデータを移し替える「シーディング(初期データ投入)基盤」をPHPで整備しました。設計の核は2つです。
