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
URLルーティングをつくる
Search
bmf_san
March 31, 2019
Programming
3.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
URLルーティングをつくる
bmf_san
March 31, 2019
More Decks by bmf_san
See All by bmf_san
桃太郎で始めるRego入門‐今日から使えるRegoの基本編
bmf_san
0
100
完璧を求めない意思決定-アクセス制御基盤における制約との向き合い方
bmf_san
5
20k
AAPについて調べてみた
bmf_san
0
150
レーダーをつくる
bmf_san
0
93
契約テストとPactについて
bmf_san
0
140
5分でわかるSLO
bmf_san
2
190
権限について考える
bmf_san
2
190
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.9k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
530
Other Decks in Programming
See All in Programming
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
270
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
7
5.1k
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
160
SREの越境 / SRE Collaboration
y0hgi
2
290
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
260
Java 27新機能 / Java 27 new features
kishida
2
180
Workers Cache を知る
syumai
0
310
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
250
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
280
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
730
すこし踏み込む CancellationToken
htkym
2
1.5k
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
290
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
530
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
290
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
エンジニアに許された特別な時間の終わり
watany
109
250k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
290
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
590
Fireside Chat
paigeccino
43
4k
The Language of Interfaces
destraynor
162
27k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
490
Transcript
URLϧʔςΟϯάΛͭ͘Δ @bmf_san @PHPerKaigi 2019 2019/03/31
@bmf_san bmf-san bmf-tech.com Twitter Github Blog
֓ཁ 1. ಈػ 2. ࣗ࡞ͷಓͷΓ • લఏɹ • ࣮લͷաఔ •
༷ͱ͔ઃܭ·ͱΊ 3. ࣮ • ۩ମతͳ࣮༰ʹ͍ͭͯ͋·Γ৮Ε·ͤΜɻʢ࣌ؒత߹ʣ • ࣮͢ΔࡍͷϙΠϯτ 4. ·ͱΊ • ࣗ࡞ͯ͠Έͨॴײ
ιʔε • Github • bmf-san/ahi-router • https://github.com/bmf-san/ahi-router
1 ಈػ
ಈػ • goͰϧʔςΟϯάΛࣗલͰ࣮͔ͨͬͨ͠ • ͰgoͦΜͳʹ׳Ε͍ͯͳ͍… • phperkaigiͷcfpग़͍ͨ͠ɺͰωλ͕… • ͦͦϧʔςΟϯάͬͯͲ͏࣮ͬͯ͞Ε͍ͯΔΜ ͩΖ͏…
ؐΖ͏͓ΕͨͪͷPHP
2 ࣗ࡞ͷಓͷΓ
͜Μͳͷ͕Ͱ͖ͨ
ϧʔςΟϯάΛఆٛ͢Δ ୳ࡧ݁ՌΛಘΔ ࠓճ࣮ͨ͠3PVUFSύοέʔδ
ΞΫγϣϯͱύεύϥϝʔλ͕औಘͰ͖Δ
URLϧʔςΟϯάͱ • ϦΫΤετ͞ΕͨURLʹରͯ͠ɺ࣮ߦ͍ͨ͠ॲཧΛฦ͢ • ύεʢ/foo/bar/1ʣ෦Λύʔεͯ͠ɺҙͷΛฦ͢ • ਖ਼نදݱ • จࣈྻ୳ࡧΞϧΰϦζϜ
URLϧʔςΟϯάͱ IUUQFYBNQMFDPNGPPCBS GPPCBS JE͕ BDUJPO #BS$POUSPMMFS!TIPX 3PVUFS ϧʔςΟϯάॲཧΛߦ͏ *OQVU 0VUQVU
PHPͷϧʔςΟϯάϥΠϒϥϦ • FastRoute • https://github.com/nikic/FastRoute • Pux • https://github.com/c9s/Pux •
Klein • https://github.com/klein/klein.php • etc…
༷ • ෳͷύεύϥϝʔλʔΛؚΉURLʹରԠ • /foo/bar/:foo/:bar • ΞΫγϣϯͱύϥϝʔλʔใΛฦ͢ • ϜζΧγΠίτϋϠϥφΠ •
ศརͳػೳͱ͔
RouterΛͭ͘Δ IUUQFYBNQMFDPNGPPCBS GPPCBS JE͕ BDUJPO #BS$POUSPMMFS!TIPX 3PVUFS *OQVU 0VUQVU
I/O Input • Path • /foo/bar/1 • HTTP Method •
GET/POST… • Routing Definition • ϧʔςΟϯάͷఆٛ Output • Action • ॲཧʢฦ͍ͨ͠ʣ • ex. PostController@getPosts • Parameters • ύεύϥϝʔλʔ • ex. /boo/bar/1 • /foo/bar/:id • → id 1
Routing Map *OQVU 0VUQVU 3PVUFS 1BUI )551.FUIPE 3PVUJOH%FpOJUJPO 1BUI )551.FUIPE
3PVUJOH.BQ ϧʔςΟϯάͷͨΊ ͷσʔλߏ
Routing Mapͱ • Routing Map • ϧʔςΟϯάͷͨΊͷσʔλߏ • Router͕෦తʹ࣋ͭ •
URLͱ࣮ߦ͍ͨ͠ॲཧΛϚοϐϯά
Routing Map *OQVU 0VUQVU 3PVUFS 3PVUJOH.BQ ϧʔςΟϯάͷͨΊ ͷσʔλߏ .BQΛੜ .BQ͔Β୳ࡧ
Routing 1BUI .FUIPE "DUJPO (&5 *OEFY$POUSPMMFS!JOEFY QPTUT (&5 1PTU$POUSPMMFS!HFU1PTUT
QPTUTJE (&5 1PTU$POUSPMMFS!FEJU QPTUTJE 1045 1PTU$POUSPMMFS!VQEBUF QPTUTJEUPLFO (&5 1PTU$POUSPMMFS!QSFWJFX QPTUTDBUFHPSZ (&5 1PTU$POUSPMMFS!HFU1PTUT#Z$BUFHPSZ QSPpMF (&5 1SPpMF$POUSPMMFS!HFU1SPpMF
Routing 1BUI .FUIPE "DUJPO (&5 *OEFY$POUSPMMFS!JOEFY QPTUT (&5 1PTU$POUSPMMFS!HFU1PTUT
QPTUTJE (&5 1PTU$POUSPMMFS!FEJU QPTUTJE 1045 1PTU$POUSPMMFS!VQEBUF QPTUTJEUPLFO (&5 1PTU$POUSPMMFS!QSFWJFX QPTUTDBUFHPSZ (&5 1PTU$POUSPMMFS!HFU1PTUT#Z$BUFHPSZ QSPpMF (&5 1SPpMF$POUSPMMFS!HFU1SPpMF
ߏ ɹࠜʢSPPUʣ ɹࢬʢFEHFʣ ɹઅʢOPEFʣ ɹ༿ʢMFBGʣ
σʔλߏ 1BUI .FUIPE "DUJPO (&5 *OEFY$POUSPMMFS!JOEFY QPTUT (&5 1PTU$POUSPMMFS!HFU1PTUT
QPTUTJE (&5 1PTU$POUSPMMFS!FEJU QPTUTJE 1045 1PTU$POUSPMMFS!VQEBUF QPTUTJEUPLFO (&5 1PTU$POUSPMMFS!QSFWJFX QPTUTDBUFHPSZ (&5 1PTU$POUSPMMFS!HFU1PTUT#Z$BUFHPSZ QSPpMF (&5 1SPpMF$POUSPMMFS!HFU1SPpMF
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10*/5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT
JE &/%@10*/5 ˞&/%@10*/5ޠฐ͕͋Γͦ͏ʜ
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10*/5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT
JE &/%@10*/5 (&5QPTUT
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10* /5 QSPpMF DBUFHPSZ &/%@10*/5
QPTUT JE &/%@10*/5 (&5QPTUT
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10* /5 QSPpMF DBUFHPSZ &/%@10*/5
QPTUT JE &/%@10*/5 (&5QPTUT
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10* /5 QSPpMF DBUFHPSZ &/%@10*/5
QPTUT JE &/%@10*/5 (&5QPTUT
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10* /5 QSPpMF DBUFHPSZ &/%@10*/5
QPTUT JE &/%@10*/5 (&5QPTUT (&51PTU$POUSPMMFS!HFU1PTUT 10451PTU$POUSPMMFS!FEJU )551ϝιουʹԠͯ͡ॲཧΛৼΓ͚ ˞QBSBNFUFSTҰॹʹฦ͢
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10*/5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT
JE &/%@10*/5
࣮
3 ࣮
࣮ • ͲΜͳॲཧ͕ඞཁ͔ʁ • Routing MapΛੜ͢Δ • Routing Map͔Β୳ࡧ͢Δ
࣮Πϝʔδ *OQVU 0VUQVU 3PVUFS 3PVUJOH.BQ ϧʔςΟϯάͷͨΊ ͷσʔλߏ .BQΛੜ .BQ͔Β୳ࡧ
͓ଋ • PHPͷਖ਼نදݱۃྗආ͚Δ • ΦϨΦϨΞϧΰϦζϜͰߟ͑ͯΈ͔ͨͬͨ • ͱΓ͋͑ͣಈ͘Ϟϊʹ͢Δ • ϓϩμΫγϣϯͰ͏Ϩϕϧ·Ͱͪΐͬͱ…
ιʔε • Github • bmf-san/ahi-router • https://github.com/bmf-san/ahi-router
ϧʔςΟϯάϚοϓΛੜ • ϧʔςΟϯάϚοϓΛੜ͢Δ • PathɺMethodɺActionͷσʔληοτ͔Βੜ • /posts GET PostController@getPosts
None
ϧʔςΟϯάΛఆٛ͢Δ
࣮
ࢀরʢʣͰ͕ΜΔ
ϧʔςΟϯάϚοϓ͔Β୳ࡧ • ϧʔςΟϯάϚοϓ͔Β୳ࡧ͢Δ • ଟ࣍ݩྻΛ୳ࡧ͢Δॲཧ • →ߏͷ୳ࡧΞϧΰϦζϜ
None
1)1ͷਖ਼نදݱආ͚ͯΦϨΦϨจࣈྻ୳ࡧ
՝ • ͪΌΜͱΕ͍ͯͳ͍ • ΤϥʔϋϯυϦϯά • ࣮ߦͷߟྀ • ߏɺจࣈྻ୳ࡧΞϧΰϦζϜΛֶͿ •
Ͱ͖ͨΒྑͦ͞͏ • ωʔϜϧʔτʢϧʔςΟϯάͷάϧʔϐϯάʣ • ύεύϥϝʔλʔʹਖ਼نදݱΛ͑ΔΑ͏ʹ͢Δ • :id → \d ͚ͩώοτ͢ΔΑ͏ʹ͢Δɺͱ͔ • ϛυϧΣΞͱͷͭͳ͗ࠐΈ
ύοέʔδެ։ • Packagist • bmf-san/ahi-router • https://packagist.org/packages/bmf-san/ahi- router#2.0.0
4 ·ͱΊ
·ͱΊ • 158ߦͰಈ͍ͨ • https://github.com/bmf-san/ahi-router/blob/master/src/ Router.phpɹ • ࠶ؼॲཧͱύϫʔϓϨΠͰͳΜͱ͔͍͚Δ • ͪΌΜͱΔͳΒ
• ߏͷΞϧΰϦζϜʢτϥΠɺجɺύτϦγΞ … etcʣΛֶΜͰదͨ͠ͷΛબఆ͢Δ
͓·͚ • bmf-tech.com • URLϧʔςΟϯάΛͭ͘ΔɹΤϐιʔυ1 • https://bmf-tech.com/posts/ URL%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%92%E3%81%A4%E3% 81%8F%E3%82%8B%E3%80%80%E3%82%A8%E3%83%94%E3%82%BD%E3%83%BC%E3%83%891 •
URLϧʔςΟϯάΛͭ͘ΔɹΤϐιʔυ2 • https://bmf-tech.com/posts/ URL%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%92%E3%81%A4%E3% 81%8F%E3%82%8B%E3%80%80%E3%82%A8%E3%83%94%E3%82%BD%E3%83%BC%E3%83%892 • URLϧʔςΟϯάΛͭ͘ΔɹΤϐιʔυ3ʢ݁ฤʣ • https://bmf-tech.com/posts/ URL%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%92%E3%81%A4%E3% 81%8F%E3%82%8B%E3%80%80%E3%82%A8%E3%83%94%E3%82%BD%E3%83%BC%E3%83%893%EF%BC%88% E5%AE%8C%E7%B5%90%E7%B7%A8%EF%BC%89 • Speakerdeck • URLϧʔςΟϯάΛͭ͘ΔΤϐιʔυ1 • https://speakerdeck.com/bmf_san/urlruteinguwotukuruepisodo1
Thank you !