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
URLルーティングをつくる
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
bmf_san
March 31, 2019
Programming
3k
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
64
完璧を求めない意思決定-アクセス制御基盤における制約との向き合い方
bmf_san
5
19k
AAPについて調べてみた
bmf_san
0
130
レーダーをつくる
bmf_san
0
80
契約テストとPactについて
bmf_san
0
120
5分でわかるSLO
bmf_san
2
170
権限について考える
bmf_san
2
160
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.8k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
500
Other Decks in Programming
See All in Programming
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.2k
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
210
Agentic UI
manfredsteyer
PRO
0
180
CSC307 Lecture 17
javiergs
PRO
0
320
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
180
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
260
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.8k
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
110
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.4k
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
550
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
700
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
440
The Pragmatic Product Professional
lauravandoore
37
7.3k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
430
Navigating Team Friction
lara
192
16k
Writing Fast Ruby
sferik
630
63k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
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 !