Upgrade to Pro — share decks privately, control downloads, hide ads and more …

恣意性から考える、変更に強いモデルの作り方

y_ahiru
April 12, 2025
310

 恣意性から考える、変更に強いモデルの作り方

PHP Conference 小田原 2025 での発表です
https://phpcon-odawara.jp/2025/

y_ahiru

April 12, 2025
Tweet

Transcript

  1. Tweet の文字数は 140文字まで • 140という数字にどこまで論理的な必然性があるんだろう? • 2017年11月に半角文字であれば280文字まで可能に ◦ 実際の Tweet

    の 9% が140文字いっぱいまで使われていることからユーザー自身の表現を制限してしまってい るのではといった仮説のため • 現在では有料ユーザーであれば長文のポストが可能に ◦ マネタイズのポイントなどビジネス的な文脈でも変更が起こる
  2. 申請機能での実例 • 申請とそれに対する承認などを行うことができる機能 • 「申請に対して三次審査まで実施したい」という要件に恣意性を感じた • 審査ステップ数を変えることができたら、どんな嬉しいことがありそうだろうか? ◦ 運用体制の変更に合わせた審査ステップ数の削減 ◦

    誰が申請するかによって審査ステップを減らす ◦ といった運用コストの最適化などができそう • n次審査が可能なモデルとして実装 • 結果、申請種別ごとに審査ステップ数を変えたいという新しい要件が後から発生し、モデルを変更せずに 対応できた
  3. 2つの強整合性 • 強整合性とは... ◦ 常に全体で矛盾のない状態を即時に保つこと ◦ 結果整合性の逆 • 恣意的な強整合性 ◦

    強整合性ではあるが、仕様の変更によって変わってしまってもよかったりする ◦ 整合性が破られても大きな影響がなかったりする ◦ 例: Tweet は140文字までだったが仕様変更によって 280文字や長文も許可された • 恣意的でない強整合性 ◦ ドメインモデルとしての振る舞いを維持するのに必要な整合性であることが多い ◦ 例: 注文ステータスは特定の値以外許容されないなど ◦ 他のロジックがこの整合性が担保されていることを前提としていることがある