我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 by 河瀨 翔吾

PHPerKaigi 2026
レギュラートーク(20分)

我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜

shogogg 河瀨 翔吾 shogogg
1

MVC フレームワークが普及してから約20年。Web アプリケーション開発において「層」を分けることは当たり前の「お作法」になりました。

その効果は「関心の分離」というキーワードでよく語られます。しかし、あなたの現場ではその言葉の意味が正しく理解されているでしょうか。そこで分離したい「関心」とは一体なんなのでしょうか。

意味を理解しないまま、フレームワークや流行のアーキテクチャの表層だけをなぞり、雰囲気で「層」を分けていると、次のような事態に陥ります。

  • Controller から Repository へデータを右から左へ流すだけの「土管」Service
  • DB のスキーマ変更が、なぜかフロントエンドの修正にまで波及してしまう
  • ビジネスロジックがあちこちに分散し、調査に時間がかかる

これでは「層」を分ける恩恵を受けられないどころか、コードを複雑化させ、開発速度を落とす無駄なコストが増えるだけです。「層」の分割は、その意図を正しく理解し、適切な「抽象化」によって本当の「関心の分離」を実現することで、初めてその効果を発揮します。

本セッションでは、形骸化しがちなレイヤー設計に意味を取り戻すための考え方を解説します。

こんな人に向けて話します

  • なんとなくルールに従って層を分けているけど、面倒なだけに感じている
  • 層を分ける理由をきちんと言語化し、後輩にもっと丁寧に説明したい