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
抽象化という思考のツール - 開発現場での活用 - / Abstraction-as-a-To...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
shin1x1
September 11, 2025
Programming
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
抽象化という思考のツール - 開発現場での活用 - / Abstraction-as-a-Tool-for-Thinking-in-dev
2025-09-09 PHPカンファレンス関西 アフターパーティー in スマレジ
shin1x1
September 11, 2025
More Decks by shin1x1
See All by shin1x1
Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE
shin1x1
0
700
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
1.5k
php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
shin1x1
6
4.2k
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
3
2.5k
PHPコードの実行モデルを理解する / Understanding-the-PHP-Execution-Model
shin1x1
2
3.4k
制約の力 - 状態を限定する -
shin1x1
6
5.9k
Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era
shin1x1
2
4.9k
Docker イメージのマルチアーキテクチャビルド / docker-muti-arch-build
shin1x1
1
580
Domain modeling with PHP / domain-modeling-with-php-en
shin1x1
1
340
Other Decks in Programming
See All in Programming
App Intentsのビルドプロセスを支える技術
kntkymt
0
480
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
140
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
SREの越境 / SRE Collaboration
y0hgi
2
290
カツオ、ご期待ください
suneo3476
0
130
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
4
420
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.2k
Are APIs Still Relevant in the AI Era?
soyuka
0
380
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
180
一人だけ、Kiroが静止する日
hideg
0
140
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.6k
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
410
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
52k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Optimizing for Happiness
mojombo
378
71k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
250
So, you think you're a good person
axbom
PRO
2
2.2k
Everyday Curiosity
cassininazir
0
340
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.2k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
HDC tutorial
michielstock
2
930
Visualization
eitanlees
153
17k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Transcript
நԽͱ͍͏ࢥߟͷπʔϧ ։ൃݱͰͷ׆༻ 1)1ΧϯϑΝϨϯεؔΞϑλʔύʔςΟʔJOεϚϨδ !TIJOY
D .BTBTIJ4IJOCBSB!TIJOY !TIJOY ৽ݪʢ͠ΜΒʣխ࢘ େࡕͰ8FCγεςϜ։ൃٕज़αϙʔτΛߦ͍ͬͯ·͢ɻ wCMPH IUUQTCMPHTIJOYDPN w1PEDBTU1)1ͷݱ IUUQTQIQHFOCBTIJOYDPN
D .BTBTIJ4IJOCBSB!TIJOY ͡Ίʹ 👉͜ͷࢿྉެ։͠·͢ɻ 👉நԽʹؔ͢ΔࢲͳΓͷߟ͑ํΛ͝հ͠·͢ɻ ͜͏͍͏ߟ͑ํ͋Δͷͩͳͱฉ͍͍ͯͩ͘͞ɻ 👉ײɺϑΟʔυόοΫ͓͍ͪͯ͠·͢ʂ 9Ͱɺ࠙ձͰʂ ͡Ίʹ
D .BTBTIJ4IJOCBSB!TIJOY "HFOEB w நԽͱ w ׆༻શମ૾ΛݟΔ w ׆༻)PX͔Β8IBU8IZ w
׆༻ίʔυͷநΛἧ͑Δ
D .BTBTIJ4IJOCBSB!TIJOY IUUQTTQFBLFSEFDLDPNTIJOYBCTUSBDUJPOBTBUPPMGPSUIJOLJOH
D .BTBTIJ4IJOCBSB!TIJOY நԽͱ
D .BTBTIJ4IJOCBSB!TIJOY நԽͱ w ந நԽͰ࡞ΒΕͨ֓೦ʢநԽͱ͍͏ߦҝʹ͏έʔε͋Δʣ w ࣺ ର͔ΒෆཁͳཁૉΛࣺͯΔ͜ͱɺࣺͯͨͷ ରʢ۩ମʣ͔Βຊ࣭తʹॏཁͳཁૉΛऔΓग़ͯ͠
Ұͭͷ֓೦ͱͯ͠ఆٛ͢Δ͜ͱ
D .BTBTIJ4IJOCBSB!TIJOY நԽྫ TIJOY w ࢯ໊ w ੜ݄ʢྸʣ w ݂ӷܕ
w ॅॴ w ϝʔϧΞυϨε w ࡕਆϑΝϯ w ສതճߦͬͨ w ͳͲ
D .BTBTIJ4IJOCBSB!TIJOY நԽྫ TIJOY w ࢯ໊ w ੜ݄ʢྸʣ w ݂ӷܕ
w ॅॴ w ϝʔϧΞυϨε w ࡕਆϑΝϯ w ສതճߦͬͨ w ͳͲ จ຺ษڧձࢀՃ จ຺ʹଈͨ͠ந w DPOQBTTϢʔβ໊ w ϝʔϧΞυϨε
D .BTBTIJ4IJOCBSB!TIJOY நԽྫ TIJOY w ࢯ໊ w ੜ݄ʢྸʣ w ݂ӷܕ
w ॅॴ w ϝʔϧΞυϨε w ࡕਆϑΝϯ w ສതճߦͬͨ w ͳͲ จ຺ݙ݂ w ࢯ໊ w ݂ӷܕ w ݙ݂ཤྺ w ମॏ w ମԹ w ͳͲ จ຺ʹଈͨ͠ந
D .BTBTIJ4IJOCBSB!TIJOY நԽͷϝϦοτ w ຊ࣭తʢจ຺ʹదͨ͠ʣͳใͷΈʹूதͰ͖Δɻ w ใΛݮΒͤΔͷͰɺཧղ͘͢͠ͳΔɻ w จ຺ʹదͨ͠۩ମΛݟ͚ͭ͘͢ͳΔɻ
D .BTBTIJ4IJOCBSB!TIJOY நʢநϨϕϧʣ w நநͷ߹͍Λࣔ͢ͷɻ ந͕ߴ͍ΑΓߴ࣍ͷந w நʹจ຺ʢ࣠ʣ͕͋Δɻ w நͱ۩ମ૬ରతɻ
͋ΔநΑΓߴ࣍ͷந͔Β۩ମ w ந͕ἧ͍ͬͯΔɺฒΜͰ͍Δͱཧղ͍͢͠ɻ
D .BTBTIJ4IJOCBSB!TIJOY நྫษڧձࢀՃจ຺ εϚϨδษڧձࢀՃऀ ษڧձࢀՃऀ ந͕ߴ͍ ʢநతʣ ந͕͍ ʢ۩ମతʣ TIJOY
D .BTBTIJ4IJOCBSB!TIJOY நྫݙ݂จ຺ N-ݙ݂ऀ ݙ݂ऀ ந͕ߴ͍ ʢநతʣ ந͕͍ ʢ۩ମతʣ TIJOY
D .BTBTIJ4IJOCBSB!TIJOY நྫϘϥϯςΟΞจ຺ N-ݙ݂ऀ ݙ݂ऀ ந͕ߴ͍ ʢநతʣ ந͕͍ ʢ۩ମతʣ TIJOY
ϘϥϯςΟΞ ৽ͨͳࢹ
D .BTBTIJ4IJOCBSB!TIJOY ׆༻શମ૾ʢਤʣΛ࡞Δ
D .BTBTIJ4IJOCBSB!TIJOY શମ૾ͱ͍͏ந w ͋ΔࣄͷશମతͳΠϝʔδΛࣔͨ͠ͷɻ w ཁૉΛจ຺ʹԠͯ͡நԽͯ͠ஔ͢Δͷ͕ॏཁɻ w ඞཁͳใʹߜΔͷͰશମΛཧղ͍͢͠ɻ w
ࢥߟͷਤʹͳΔʢ၆ᛌͰ͖Δʣɻ
D .BTBTIJ4IJOCBSB!TIJOY શମ૾ྫγεςϜߏਤ $%/ -# 8FCαʔό OHJOY QIQGQN 8FCαʔό OHJOY
QIQGQN %#
D .BTBTIJ4IJOCBSB!TIJOY શମ૾ྫγεςϜߏਤ $%/ -# 8FCαʔό OHJOY QIQGQN 8FCαʔό OHJOY
QIQGQN %#
D .BTBTIJ4IJOCBSB!TIJOY શମ૾ྫද 42-จ ΫΤϦϏϧμʔ "DUJWF3FDPSE ίʔυྔ ଟ͍ தؒ গͳ͍
ࣗ༝ ߴ͍ தؒ ͍ ηΩϡϦςΟ ҙ͕ඞཁ தؒ ߴ͍
D .BTBTIJ4IJOCBSB!TIJOY શମ૾Λ࡞Δ w ·ͣ࠷ॳ͔Β࠷ޙ·ͰͷྲྀΕΛߥ͘ॻ͍ͯΈΔ w ͔Βͳ͍ͱ͜Ζɺฉ͘PSௐΔ w νʔϜͰҰॹʹ࡞ͬͯΈΔʢϫʔΫγϣοϓʣ
D .BTBTIJ4IJOCBSB!TIJOY FYγεςϜશମ૾ ཧγεςϜ ొ ൃૹॲཧ ߪೖϢʔβ "ࣾ୲ &$αΠτ ߪೖ
%#
D .BTBTIJ4IJOCBSB!TIJOY ׆༻)PX͔Β8IBU8IZ
D .BTBTIJ4IJOCBSB!TIJOY )PX۩ମɺ8IBU8IZந w )PXΛநԽͯ͠8IBU8IZΛΔɺݟΔɻ w )PX͕ଥ͔8IBU8IZʹΑͬͯมΘΔɻ w ຊ࣭ΛΔ͜ͱͰΑΓޮՌతͳ)PXΛબΔɻ
D .BTBTIJ4IJOCBSB!TIJOY )PX͔Β8IBU8IZྫ )PX1)1ίʔυΛ͘͢Δ
D .BTBTIJ4IJOCBSB!TIJOY )PX͔Β8IBU8IZྫ )PX1)1ίʔυΛ͘͢Δ 8IBUγεςϜΛ͘͢Δ
D .BTBTIJ4IJOCBSB!TIJOY )PX͔Β8IBU8IZྫ 8IBUγεςϜΛ͘͢Δ )PX$%/ͰΩϟογϡ͢Δ )PX%#ΫΤϦΛվળ͢Δ )PX1)1ίʔυΛ͘͢Δ
D .BTBTIJ4IJOCBSB!TIJOY )PX͔Β8IBU8IZྫ )PX8IBUγεςϜΛ͘͢Δ )PX$%/ͰΩϟογϡ͢Δ )PX%#ΫΤϦΛվળ͢Δ )PX1)1ίʔυΛ͘͢Δ 8IZγεςϜ͕͘ͳ͖ͬͯͨͨΊʹམͪͨ࡞ۀޮΛվળ͍ͨ͠ɻ
D .BTBTIJ4IJOCBSB!TIJOY )PX8IBU૬ରత w ͋Δ)PXʹର͢Δ8IBUɺ্Ґͷ)PXʹͳΔɻ w )PXԼҐʹର͢Δ8IBUʹͳΓಘΔɻ w )PXPS8IBUΑΓநΛม͑ͯཧղΛਂΊΔɺ͛ Δ͜ͱ͕େࣄɻ
D .BTBTIJ4IJOCBSB!TIJOY ׆༻நΛἧ͑Δ
D .BTBTIJ4IJOCBSB!TIJOY ίʔυʹ͓͚Δந w ॲཧରͷநʢ಄ࢿྉࢀরʣ ίϯϐϡʔλจ຺ͰߴϨΠϠந͕ߴ͍4-"1 w ཻ࣮ʹΑΔந ཻ࣮͕ߥ͍ந͕ߴ͍$PNQPTFE.FUIPE
D .BTBTIJ4IJOCBSB!TIJOY ཻ࣮ͷநΛཧ͢Δ w ந͕ߴ͍ίʔυશମΛཧղ͍͢͠ɻ w ந͕͍ίʔυ࣮ࡍͷڍಈ͕ཧղ͍͢͠ɻ w QVCMJDϝιουෳࡶͳϝιουநΛ্͛Δɻ w
QSJWBUFϝιουநΛԼ͛Δɻ
D .BTBTIJ4IJOCBSB!TIJOY $PNQPTFE.FUIPE w ϝιουίʔυͷநʢৄࡉʣΛཧ͢Δύλʔϯɻ w QVCMJDϝιου࣮ߦखॱͷΈΛॻ͘ɻ w QSJWBUFϝιουʹॲཧৄࡉΛॻ͘ɻ w
݁ՌɺQVCMJDϝιουQSJWBUFϝιουͷݺͼग़͠ ͷΈʹͳΔɻ
ཻ࣮ͷந͕͍ public function register(Request $request) { $errors = []; if
(!$request->input('name')) { $errors['name'] = '໊લඞਢͰ͢'; } // snip if (!empty($errors)) { return response()->json(['errors' => $errors], 422); } $userId = DB::table('users')->insertGetId([ 'name' => $request->input('name'), 'email' => $email, // snip ]); return response()->json([ 'message' => 'ొ͕ྃ͠·ͨ͠', 'userId' => $userId, ], 201); } ༷ʑͳίʔυ͕͍ࠞͬͯͯ͡ ཧղͮ͠Β͍
✅ཻ࣮ͷந͕ߴ͍ public function register(Request $request) { $errors = $this->validateRegistration($request); if
(!empty($errors)) { return $this->validationErrorResponse($errors); } $userId = $this->createUser($request); return $this->registrationSuccessResponse($userId); } QSJWBUFϝιουݺͼग़͠ͷΈͰॲཧϑϩʔΛهड़ શମͷॲཧͷྲྀΕ͕͔Γ͍͢ɻ ʢผΫϥεʹ࣮͢Δͷ0,ʣ
✅நͷ͍ίʔυ֤ϝιουʹׂ private function validateRegistration(Request $request): array { // όϦΤʔγϣϯ }
private function validationErrorResponse(array $errors): Response { // όϦσʔγϣϯΤϥʔϨεϙϯεੜ } private function createUser(Request $request): int { // Ϣʔβอଘ } private function registrationSuccessResponse(int $userId): Response { // ਖ਼ৗϨεϙϯεੜ } ॲཧର͕ϝιου͝ͱʹ ׂ͞Ε͍ͯΔͷͰཧղ͍͢͠
D .BTBTIJ4IJOCBSB!TIJOY $MBVEF$PEFͰநΛཧ w ʮ ⚪︎⚪︎ ϝιουͷநΛἧ͑ͯʯ w நͷ͍ίʔυΛผϝιουʹׂͯ͘͠ΕΔɻ w
ରϝιουநͷߴ͍࣮ʹͳΔɻ w ίʔυΛཧղ͢ΔͨΊͷϦϑΝΫλϦϯάʹศརɻ
D .BTBTIJ4IJOCBSB!TIJOY ·ͱΊ
D .BTBTIJ4IJOCBSB!TIJOY ·ͱΊ w நԽۙͳࢥߟπʔϧ w நͰશମΛཧղ͢Δ w ҙࣝͯ͠நΛมԽͤͯ͞ݟํΛม͑Δ
D .BTBTIJ4IJOCBSB!TIJOY ࢀߟ w நԽ IUUQTLPUPCBOLKQXPSE &"#%&#"&$ w ۩ମͱந IUUQTXXXBNB[PODPKQEQ#-65/*
w ϓϩμΫςΟϒɾϓϩάϥϚ IUUQTXXXPSFJMMZDPKQCPPLT