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
php conference okinawa 2022
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ふわせぐ
August 27, 2022
Programming
2.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
php conference okinawa 2022
PHP Conference 沖縄 2022 の登壇資料です
ふわせぐ
August 27, 2022
More Decks by ふわせぐ
See All by ふわせぐ
php-conference-nagoya-2025
fuwasegu
0
580
object-oriented-conference-2024
fuwasegu
14
5.8k
proud of my organization LT
fuwasegu
1
500
Qiita Night PHP 2023
fuwasegu
0
15k
QiitaConference2022
fuwasegu
1
1.5k
sleepagotchi
fuwasegu
2
2.7k
何の画像か当てちゃるBot紹介/image_guess_bot
fuwasegu
0
240
新卒 Laravel 初心者が成長していく中で 感じたコレジャナイ感/PHPerKaigi 2022
fuwasegu
11
16k
入社初日に社内サービスを全部一人で引き継いだ新卒フルサイクルエンジニアの話
fuwasegu
4
7k
Other Decks in Programming
See All in Programming
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
430
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
310
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.1k
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
160
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
290
iOSDCのペンライトを自動制御したい!
akkeylab
0
350
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
420
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
330
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
310
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
410
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.2k
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
410
The Cost Of JavaScript in 2023
addyosmani
55
10k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
550
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Making Projects Easy
brettharned
120
6.8k
Done Done
chrislema
187
17k
Practical Orchestrator
shlominoach
192
12k
Google's AI Overviews - The New Search
badams
0
1.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Scaling GitHub
holman
464
140k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Transcript
͕ *MVNJOBUF ΛಡΉཧ༝ ふわせぐ @fuwasegu
2 PHP Conference Okinawa 2022 • ふわせぐ (@fuwasegu) • 株式会社ゆめみ
/ 21卒 – コーポレートエンジニア • PHP / Laravel がメイン – Svelte(JS / TS),Rust 勉強中 自己紹介
3 PHP Conference Okinawa 2022 今日伝えたいこと ͚ͨ͠Ε࣮ΛಡΉ͠ʂ
4 PHP Conference Okinawa 2022 -BSBWFM ͷίʔυಡΜͰ·͔͢ʁ 🙅 Laravel で書かれたアプリケーションのコード
🙆 Laravel フレームワーク本体(Illuminate)のコード
5 Laravel の本体 “Illuminate” PHP Conference Okinawa 2022 https://github.com/illuminate
• メソッドが発掘できる – マニュアルには載ってないけど便利なメソッドがあ るかも • フレームワーク の仕様が深いところまで分かる – エラーの原因が推測しやすくなる
6 僕が Illuminate を読む理由 PHP Conference Okinawa 2022
• メソッドが発掘できる – マニュアルには載ってないけど便利なメソッドがあ るかも 7 僕が Illuminate を読む理由 PHP
Conference Okinawa 2022
8 おなじみ Laravel ReaDouble PHP Conference Okinawa 2022 https://readouble.com/ •
Laravel の公式マニュアル (laravel.com)の翻訳サイト • 恐らく日本の Laravel エンジニア が一番お世話になっているであろ う有名サイト
9 メソッドが発掘できる PHP Conference Okinawa 2022 Laravel7.x 以前で Http ファサードを用いた複数のリクエストを順序を含めて検証する
• 実装を紐解きながら裏技を紹 介する記事 • ソースコードリーディングで 見つけたメソッドで問題を解 決した • メソッドの発掘は宝探しみた いで楽しい! https://zenn.dev/fuwasegu/articles/728061dbaf7082
• フレームワーク の仕様が深いところまで分かる – エラーの原因が推測しやすくなる 10 僕が Illuminate を読む理由 PHP
Conference Okinawa 2022
11 何が渡ってくるかぱっと見分からない PHP Conference Okinawa 2022 https://readouble.com/laravel/8.x/ja/eloquent-relationships.html
12 ιʔείʔυΛಡΜͰղ໌ͯ͠ΈΑ͏ʂ PHP Conference Okinawa 2022
13 宣伝 PHP Conference Okinawa 2022 -BSBWFM ιʔείʔυϦʔσΟϯάษڧձ ݄த०ΑΓ DPOOQBTT
ʹͯఆظ։࠵ܾఆʂ
詳しい処理の解説は勉強会でいつかやるの で,今回は時間の関係で軽く処理を追って いくだけにしようと思います 14 PHP Conference Okinawa 2022
• $query に何が渡ってくるのかを突き止める – with に渡されたクロージャを実行している部分を見 つければよさそう 15 今回のコードリーディングのゴール PHP
Conference Okinawa 2022
User::with() の呼び出し部分 PHP Conference Okinawa 2022 16 地上1階
Eloquent Model::with() PHP Conference Okinawa 2022 17 今回の $relations は
array 地下1階
Eloquent Builder::with() PHP Conference Okinawa 2022 18 今回の $callback は
null 地下2階
Eloquent Builder::parseWithRelations() PHP Conference Okinawa 2022 19 $relations は,[‘posts’ =>
function ($query)] ここには入らない 地下3階 ドットでネストしたリレーションを処理
Eloquent Builder::with() PHP Conference Okinawa 2022 20 $eagerLoad は,[‘posts’ =>
function ($query)] 地下2階 $this->eagerLoad に [‘posts’ => function ($query)] をマージ
Eloquent Model::with() PHP Conference Okinawa 2022 21 地下1階
User::with() の呼び出し部分 PHP Conference Okinawa 2022 22 地上1階 次はこっち
Eloquent Builder::get() PHP Conference Okinawa 2022 23 地下1階 一旦リレーション無しでモデルを取得(SELECT) 今回はモデルが取れる想定
Eloquent Builder::eagerLoadRelations() PHP Conference Okinawa 2022 24 地下2階 さっき [‘posts’
=> function ($query)] をマージしたやつ
Eloquent Builder::eagerLoadRelation() PHP Conference Okinawa 2022 25 地下3階 ついに実行している部分を発見!!! function
($query) の $query は, $constraints($relation) の $relation $relation の型がわかれば良さそう
Eloquent Builder::getRelation() PHP Conference Okinawa 2022 26 地下4階 $this->getModel() ->newInstance()
->$name() で,User モデルの を呼んでる
Eloquent Relations Relation::noConstraints() PHP Conference Okinawa 2022 27 地下5階 そのままクロージャを実行して結果を
返却
Eloquent Builder::getRelation() PHP Conference Okinawa 2022 28 地下4階 $relation には
posts() の返り値 HasMany が入っていそう
Eloquent Builder::eagerLoadRelation() PHP Conference Okinawa 2022 29 地下3階 $relation の型が
HasMany に決定!
$query の正体(今回の場合) • Illuminate/Database/Eloquent/Relations/HasMany – 今回渡される実体 • Illuminate/Database/Eloquent/Relations/HasOneOrMany – HasMany
の継承元(抽象クラス) • Illuminate/Database/Eloquent/Relations/Relation – HasOneOrMany の継承元(抽象クラス) • Illuminate/Contracts/Database/Eloquent/Builder – Relation が実装しているインターフェース PHP Conference Okinawa 2022 30 抽 象 度 高 低
Laravel にちょっと詳しいヤツになれた! PHP Conference Okinawa 2022 31 Model::with() にわたすクロージャの引数 に何が渡ってくんのか全然分からん!
32 (おまけ)その他のメリット PHP Conference Okinawa 2022 mockery/library/Mockery/Container.php • 作者からのメッセージが残さ れていることも...?
I'll refactor it one day so it's easier to follow. いつか分かりやすくリファクタするよ ー Padraic Brady • OSS 貢献チャンス – コメントの修正レベルでも OK!実績作りにもってこい
• フレームワークのソースコードリーディングには メリットが沢山 – メソッドの発掘 – フレームワークの深い理解 – OSS への貢献チャンス
• ソースコードリーディングは成長への近道 – 初心者こそ,ツヨツヨに一歩近づくためにソースコ ードリーディングをして欲しい 33 まとめ PHP Conference Okinawa 2022
34 PHP Conference Okinawa 2022 -BSBWFM ͷίʔυΛಡ͏ʂ