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
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
60
完璧を求めない意思決定-アクセス制御基盤における制約との向き合い方
bmf_san
5
19k
AAPについて調べてみた
bmf_san
0
130
レーダーをつくる
bmf_san
0
78
契約テストと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
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
230
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
250
ふつうのFeature Flag実践入門
irof
7
3.6k
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.9k
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
220
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
150
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
500
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
340
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
500
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
250
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
350
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
570
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Designing for Performance
lara
611
70k
Site-Speed That Sticks
csswizardry
13
1.2k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
210
Product Roadmaps are Hard
iamctodd
PRO
55
12k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
Prompt Engineering for Job Search
mfonobong
0
330
First, design no harm
axbom
PRO
2
1.2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
It's Worth the Effort
3n
188
29k
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 !