Author: hikaru

クエリの累計時間にタイムアウトを設定する(1)

先日、管理サイトにてアラートが発生しました。調査すると、ある検索画面で利用者が重いクエリを連続で発行した事が原因でした。待ち時間が長かった為、不安になり検索ボタンを連打してしまったようです。サーバに負荷を掛ける操作については注意喚起するとして、待ち時間に制限が無いのはよくありません。そこで、検索処理に制限時間を設ける事にしました。今回はそちらの実装にあたって色々学んだことがあるので紹介します。

【mac】phpbrewで複数のバージョンを切り替えて使う

個人で色々試したいものがある時に最新のPHPが必要となる事が多々あります。そんな時、今まではHomebrewで両方のversionをインストールして環境変数のパスを手作業で切り替えていましたが、正直面倒です。今回はPHPBrewを使ってそんな面倒が解消されるか試してみます。今回の記事は私の作業環境であるmacOSでの話となります、ご承知ください。

【Under the hood】エラーバッグの構造

普段、エラーバッグからエラーを取得する際、$errors->first('name')などとしますが、この時裏ではどんな処理が行われているかご存知でしょうか?私自身、全然意識せずに使っていましたが、調べてみると実はdefaultという名前付きエラーバッグからエラーを取得している事が分かりました。

Rectorでリファクタリングを自動化 その2

前回の記事ではRectorを使ってプロジェクト内の古い記法を書き換える手順を紹介しました。書き換えたい記法が1つの場合は前回の解説で十分だと思いますが、例えば、PHPのアップグレードに合わせて新たに導入された記法をまとめて適用したい、という場合は Set Lists を使うのがオススメです。今回はそちらの手順を紹介します。

Rectorでリファクタリングを自動化 その1

前回紹介したmatch式 や Constructor Property Promotion のように新しい記法が導入されることでボイラープレートが駆逐されコードがより簡潔に読みやすくなります。しかし、長年運用されているプロジェクトなどでは書き換え必要な箇所が多く、導入するのに及び腰になってしまいがちです。Rectorを使うことでそんな億劫な作業が一瞬で完了するかもしれませんよ。

php8.0 のキャッチアップ – match式

巷ではLaravel 10がリリースされ賑わっていますが、最近私が担当した案件はL9へのUpgradeです。 いつもの様にLaravel Shiftが出してくれるPull Requestを眺めていると、見慣れない記法が出てきました。 調べてみるとPHP8.0から導入されてた記法でした。 PHP8.0がリリースされて間も無くキャッチアップしたはずなのですが、全く記憶にありません。 ということで、再度PHP8.0から導入された機能を復習しました。 いくつか取り入れたい記法を見つけたのでご紹介します。 今回はmatch式です。

光速のVite

ここ1年位で良く聞くようになったVite。Vue.jsの生みの親であるEvan Youさん開発、との事なので、 Vue.jsとの親和性が高いのだろうな、と。Laravel + Vue.js のスタックで開発する機会があれば使ってみたいな、と。 私の中ではその程度の位置付けでした。 しかし、今年の6月、Laravel 9.2.0のリリース時のTaylerさんの以下のツイートを見て、認識を改めました。 Today we're pumped to announce that new Laravel projects use Vite…

【Eloquent】has() vs joinSub()

過去の記事でも紹介されていますが、親子(or 1対多)関係にあるModelにおいて、「1つ以上子を持つ親」などの条件で絞り込む際にhas()は便利です。 しかし、has()を使わずともjoinSub()でサブクエリを指定して同じ条件で絞り込む事もできそうです。 どちらを使うのがベターなのか?気になったので調べてみました。