Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Eloquentを使ってどこまでコードの治安を保てるのか?を新人が考察してみた
Search
ito_kohhh
November 09, 2025
Programming
3.4k
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
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.3k
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
270
Building an Out-of-Order CPU
latte72
1
800
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
200
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
360
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
3.8k
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
390
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
130
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
130
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
190
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
570
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
2k
sira's awesome portfolio website redesign presentation
elsirapls
0
420
Technical Leadership for Architectural Decision Making
baasie
3
580
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
710
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
420
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
From π to Pie charts
rasagy
1
380
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.9k
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