katzumi
katzchum
ActiveRecordは爆速開発を支える「手軽さ」の象徴ですが、プロジェクトの成長と共に「DB構造とロジックの密結合」という呪縛を生みます。本セッションでは、クリーンアーキテクチャの理想を掲げ、Laravel Eloquent(ActiveRecord)からDoctrine(DataMapper)への移行を試みる中で私たちが直面している、「手軽さと堅牢さの折り合い」についての葛藤を共有します。
移行の大きな動機は、インフラ層での「Eloquentモデルとドメインモデル」の二重管理による、泥臭い値の詰め直し(インピーダンスミスマッチ)を解消することにありました。DataMapperがマッピングを吸収することで、ドメインは純粋なPOPOとして振る舞い、開発者は「値の移し替え」という苦行から解放されるはずでした。
しかし、そこで待ち受けていたのは、一筋縄ではいかない設計の「コシ」でした。不変条件を守るための「イミュータブルな設計」を目指すと、DataMapperの核心である「Unit of Work(変更検知)」の仕組みと真っ向から衝突します。「手軽さを維持したいが、堅牢さも譲れない」。この両者の間で、私たちは今まさに最適なバランスを模索しています。
・EntityとValue Objectの役割分担をどう定義し直すべきか ・セッターを排しつつ、UoWとも共存できる「制御されたミュータビリティ」の探求 ・ドメインイベントを明示的に扱うことで、設計の透明性をどう確保するか
本セッションでは、現在進行系で理想のアーキテクチャと選定技術の「相性」にどう折り合いをつけ、チームで納得感のある設計を言語化してきた内容を紹介します。「手軽さ」と「堅牢さ」。その間で揺れ動きながら、長く愛されるシステムのための「最高のコシ」を共に考えてみませんか。