関西のPHPerが集まるゆるめの勉強会、PHP勉強会関西に参加してきた。15分セッション1本 + LT数本という構成で、自分は15分セッション枠で登壇。
最近業務でCloudflareをめちゃくちゃ触っているんだけど、エコシステムがとにかくTypeScript一強。サンプルコードもドキュメントも、9割がTS/JS前提で書かれている。
PHPerの自分として、TS以外でどこまでCloudflareと付き合えるか試したかったのが今回のモチベーション。実際に手を動かしてみた記録をそのまま持ち込んだ、という感じのセッションにした。
15分あるとデモまで詰め込めるので、スライドだけでは伝わらない「実際にどう動くのか」を画面共有で見せるのを優先した。Workers RPCやサービスバインディングあたりは言語関係なく面白く遊べるので、そこを中心に扱っている。
15分あるとデモまで詰め込めるのが良い。PHPでCloudflare触るの完全にマイノリティだけど、やってみるとWorkers RPCとかサービスバインディングみたいなところは言語関係なく面白く遊べるので、もっと布教していきたい気持ちが強くなった。
mktime + 翌月0日 で月末日を安全に取得するテクが紹介されていた。
// 3月の月末 = 4月の0日目
echo date('Y-m-d', mktime(0, 0, 0, 4, 0, 2024));
// → 2024-03-31
// 2月の月末 = 3月の0日目(閏年も自動判定)
echo date('Y-m-d', mktime(0, 0, 0, 3, 0, 2020));
// → 2020-02-29(閏年)
月末バグで時間溶かしてた過去をこの書き方で救われた、という実体験ベースの発表。日付処理は地味だけど確実に刺さるテーマ。
DateTimeImmutable の方が安心だよねという指摘が入ったstrtotime しか選択肢がない歴史的事情もあるDateTimeImmutable を使えばいいDateTimeImmutable + last day of next month 修飾子で月末丸め込みをやるのが安全。mktimeは「月末=翌月0日」のテクを知ってる前提でないと読み解けないが、last day of は英語そのままなので可読性が高い。
mktimeで月末取るやつ、懐かしすぎる。前々職でPHP書いてた時に散々お世話になった。ただ今やるなら素直に DateTimeImmutable + `last day of` 修飾子かな。現場の歴史的事情で mktime しか使えないっていうリアルもわかりすぎて頷いてた。
| 値 | 意味 |
|---|---|
same-origin |
スキーム・ホスト・ポートが完全一致 |
same-site |
eTLD+1(登録可能ドメイン)が一致。サブドメイン違いはここ |
cross-site |
eTLD+1 が異なる |
none |
ユーザー直接操作(アドレスバー入力・ブックマーク等) |
sample.com と api.sample.com のようなサブドメイン分離は Sec-Fetch-Site: same-site になる。same-origin / same-site / none を許可、cross-site を拒否する Resource Isolation Policy を敷くと、CSRFトークンなしでもかなり堅くなるケースがある。
Sec-Fetch-Site、名前は知ってたけど「Origin文字列比較に頼らなくていい」って観点で語られるとめっちゃ刺さる。FE/BE分離してるサービスだと same-site 判定が効くのでほぼCSRFトークン要らなくなるケースもありそう。業務で扱ってるブラウザのバージョン確認しとこ。
class Person {
public float $height;
public float $weight;
// バーチャルプロパティ: 値を保持せず毎回計算
public float $bmi {
get => $this->weight / ($this->height ** 2);
}
}
$p = new Person();
$p->height = 1.7;
$p->weight = 65;
echo $p->bmi; // → 22.49...
$obj->bmi で自動計算された値が返ってくるみたいな書き方ができるEloquent Accessor使ってる感覚でフレームワークじゃなく素のPHPに書けるのは地味に嬉しい。ドメインモデルをフレームワーク非依存で書きたい派なので、計算系プロパティがクリーンに表現できるのはかなり好み。バーチャルプロパティがインスタンスごとに独立っていう挙動は初見だと引っかかるので、クイズ形式で扱われてたのわかりみ。
| 項目 | 内容 |
|---|---|
| 会場 | 東京・立川 ガーデン |
| チケット | 一般参加チケット発売中、残り若干名 |
| 当日スタッフ特典 | スピーカーディナーに出れる(Taylor氏と直接話せる可能性もあり) |
| 来年以降 | 今年の参加人数次第。ビジネス主催なのでコスパ合わなきゃ終わる |
イベント内でLaravelJP Conference 2025の話題が出ていた流れで、来年以降のLaravel Live Japanにも触れておきたい。
今回のPHP勉強会関西みたいに、15分枠で自分の試行錯誤をそのまま持ち込むスタイルは自分に合っていた。次は別の切り口(CloudflareのD1をPHPから扱う話、とか)でまた出たい気持ちがある。
関西のPHPコミュニティ、いい雰囲気だった。登壇者と参加者の距離が近くて、その場で突っ込んだ議論ができるのがありがたい。