Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Eloquentを使ってどこまでコードの治安を保てるのか?を新人が考察してみた
Search
ito_kohhh
November 09, 2025
Programming
3.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Eloquentを使ってどこまでコードの治安を保てるのか?を新人が考察してみた
ito_kohhh
November 09, 2025
Other Decks in Programming
See All in Programming
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.4k
dRuby over BLE
makicamel
2
390
OSもどきOS
arkw
0
590
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
260
スマートグラスで並列バイブコーディング
hyshu
0
260
はてなアカウント基盤 State of the Union
cockscomb
1
730
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
120
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
360
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.5k
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
13
6.3k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.3k
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.5k
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
260
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
Code Reviewing Like a Champion
maltzj
528
40k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
620
Building Adaptive Systems
keathley
44
3.1k
We Are The Robots
honzajavorek
0
250
Code Review Best Practice
trishagee
74
20k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
450
Transcript
Eloquentを使ってどこまでコードの治安 を保てるのか? を新人が考察してみた 株式会社クイック Web事業企画開発本部 伊藤滉暉(@ito_kohhh) 1/28
自己紹介 伊藤滉暉(@ito_kohhh) 株式会社クイック Web事業企画開発本部 社内で使用する業務アプリケーションの開発 PHPを触り始めて1年半くらい 2/28
アジェンダ 【起】前提の共有 【承】参考にした設計方針の紹介 【転】さらなる考慮の必要性 【結】+αの検討・提案 3/28
【起】前提の共有 4/28
既存のコードベース Laravel×Reactのプロジェクト 全体的にトランザクショナルなコードが多い 各手続きの中に共通的な処理があるはずなのに 同じような処理が分散している 【起】前提の共有 5/28
既存のコードベース Laravel×Reactのプロジェクト 全体的にトランザクショナルなコードが多い 各手続きの中に共通的な処理があるはずなのに 同じような処理が分散している →凝集度が低い状態 【起】前提の共有 6/28
今後の実装方針についての検討 今後のアーキテクチャについてメンバー内で議論 そもそもLaravelのEloquentに依存しない形にする? リポジトリの導入など でもEloquentに依存しないようにすると実装コストが かかるのでは 【起】前提の共有 7/28
今後の実装方針についての検討 今後のアーキテクチャについてメンバー内で議論 そもそもLaravelのEloquentに依存しない形にする? リポジトリの導入など でもEloquentに依存しないようにすると実装コストが かかるのでは →まずはLaravelの機能を活用する方向を目指せないか? 【起】前提の共有 8/28
【承】参考にした設計方針の紹介 9/28
「なんちゃってクリーンアーキテクチャ」 既存のLaravel Wayに加えて、 app/UseCase のディレクトリに ドメインごとの単一責務な クラスを作成する UseCase 内ではEloquentモデル に依存することを許容する
https://zenn.dev/mpyw/articles/ce7d09eb6d8117 【承】参考にした設計方針の紹介 10/28
【転】さらなる考慮ポイント 11/28
「なんちゃってクリーンアーキテクチャ」の先 UseCaseごとに単一責務 【転】さらなる考慮ポイント 12/28
「なんちゃってクリーンアーキテクチャ」の先 UseCaseごとに単一責務 =最小限のクラス分割で、最大限の保守性が期待できる 【転】さらなる考慮ポイント 13/28
「なんちゃってクリーンアーキテクチャ」の先 UseCaseごとに単一責務 =最小限のクラス分割で、最大限の保守性が期待できる →アプリケーションが成長してきたら?を考える 【転】さらなる考慮ポイント 14/28
ユースケースが増えてきたら? 例:ユーザーの退会処理 ユーザーが、自分の意思で退会する 管理者が、ユーザーを退会させる 一定期間操作のないユーザーをシステムが退会させる 【転】さらなる考慮ポイント 15/28
ユースケースが増えてきたら? 例:ユーザーの退会処理 ユーザーが、自分の意思で退会する 管理者が、ユーザーを退会させる 一定期間操作のないユーザーをシステムが退会させる →どの場合もユーザーが退会しているが、異なるユースケース 【転】さらなる考慮ポイント 16/28
同じような処理が分散する ユースケース間で似たような処理がある場合 「なんちゃってクリーンアーキテクチャ」だけでは 同じような処理が分散して書かれることになる 【転】さらなる考慮ポイント 17/28
同じような処理が分散する ユースケース間で似たような処理がある場合 「なんちゃってクリーンアーキテクチャ」だけでは 同じような処理が分散して書かれることになる →これを繰り返すと、結局最初のコードベースと同じになる 【転】さらなる考慮ポイント 18/28
【結】+αの検討・提案 19/28
モデルにメソッドを切り出す 【結】+αの検討・提案 20/28
モデルにメソッドを切り出す あらゆる処理をモデルに記述する 「なんちゃってクリーンアーキテクチャ」ではアンチパターンとしている 【結】+αの検討・提案 21/28
モデルにメソッドを切り出す あらゆる処理をモデルに記述する 「なんちゃってクリーンアーキテクチャ」ではアンチパターンとしている ユースケースを単一責務にした上で 必要に応じてモデルにメソッドを切り出す 【結】+αの検討・提案 22/28
メソッドを切り出す時の判断基準 【結】+αの検討・提案 23/28
メソッドを切り出す時の判断基準 モデルに持たせて自然な処理である メソッド名がドメインの言葉で表現できる 元々Eloquentが持つメソッド名とも衝突しにくい 【結】+αの検討・提案 24/28
メソッドを切り出す時の判断基準 モデルに持たせて自然な処理である メソッド名がドメインの言葉で表現できる 元々Eloquentが持つメソッド名とも衝突しにくい 複数のユースケースで共有されることが見込める 現時点で単一のユースケースでしか使われないのであれば あえてモデルに持たせなくても良い 【結】+αの検討・提案 25/28
メソッドを切り出す時の判断基準 モデルに持たせて自然な処理である メソッド名がドメインの言葉で表現できる 元々Eloquentが持つメソッド名とも衝突しにくい 複数のユースケースで共有されることが見込める 現時点で単一のユースケースでしか使われないのであれば あえてモデルに持たせなくても良い →凝集度の高い状態を維持できる 【結】+αの検討・提案 26/28
まとめ Laravelなら、Eloquentとうまく付き合いたい 「なんちゃってクリーンアーキテクチャ」+αの提案 まずはLaravel Wayに乗る 1アクションに対応した単一責務のユースケース その上でモデルが持っていて自然な処理は モデルに持たせて共通化 27/28
まとめ Laravelなら、Eloquentとうまく付き合いたい 「なんちゃってクリーンアーキテクチャ」+αの提案 まずはLaravel Wayに乗る 1アクションに対応した単一責務のユースケース その上でモデルが持っていて自然な処理は モデルに持たせて共通化 →まだ検証途中なので、懇親会でぜひお話しさせてください! 28/28