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ルーティングをつくるエピソード1
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
bmf_san
December 19, 2018
Programming
330
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
URLルーティングをつくるエピソード1
bmf_san
December 19, 2018
More Decks by bmf_san
See All by bmf_san
桃太郎で始めるRego入門‐今日から使えるRegoの基本編
bmf_san
0
77
完璧を求めない意思決定-アクセス制御基盤における制約との向き合い方
bmf_san
5
20k
AAPについて調べてみた
bmf_san
0
140
レーダーをつくる
bmf_san
0
85
契約テストとPactについて
bmf_san
0
130
5分でわかるSLO
bmf_san
2
180
権限について考える
bmf_san
2
170
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.9k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
520
Other Decks in Programming
See All in Programming
My Marp Sample
sinoue0108
0
110
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
220
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
120
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
190
ソフトウェアラスタライザ
fadis
1
480
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.5k
What's New in Android 2026
veronikapj
0
270
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
5.1k
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
400
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
270
React本体のコードリーディング
high_g_engineer
1
150
引き算の組織 ― アウトカムとAIに全振りするために辞めたこと ― / Organization by Subtraction
hirokiyamamoto14
PRO
0
280
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
400
Color Theory Basics | Prateek | Gurzu
gurzu
0
430
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
380
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
500
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Making the Leap to Tech Lead
cromwellryan
135
10k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
280
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
So, you think you're a good person
axbom
PRO
2
2.1k
How to Ace a Technical Interview
jacobian
281
24k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
310
Transcript
URLルーティングをつくる エピソード1 @Makuake LT Party 2018/12/19
動機 ・ある⽇Golangを触っていた ・「標準ライブラリが充実していていいなぁ」 ・「でもnet/httpのURLパースはちょっと弱いから外 部ライブラリ使うのがスタンダートかな・・?」 ・「⾃分で⽤意したい!」
URLルーティングとは? ・リクエストされるURLに対し、実⾏したい処理は何 かを判定させるもの • ex. http://example.com/users • /users → UserControllerͷॲཧΛฦ͢
実装パターン ・正規表現でURLマッチング ・⽊構造を⽤いて⽂字列探索のアルゴリズムを使う
⽊構造とは? ・グラフ理論という数学の分野で定義されている⽊の 構造を持つデータ構造のこと ・⽊ ・複数の点(nodeまたはvertex)と複数の辺 (edge)で構成されたグラフ
ɹࠜʢSPPUʣ ɹࢬʢFEHFʣ ɹઅʢOPEFʣ ɹ༿ʢMFBGʣ
⽊構造の例 ・家系図 ・ファイルシステム ・ドメイン名(cf. https://www.nic.ad.jp/ja/dom/system.html) ・構⽂⽊ ・コンパイラ ・DOMツリー ・親⼦構造を持つタグやカテゴリとか
参考になりそうな実装を⾒てみる ・https://gist.github.com/neo-nanikaka/ c2e2f7742b311696d50b ・https://github.com/nissy/bon ・https://github.com/nissy/mux ・https://github.com/ytakano/radix_tree ・https://github.com/kkdai/radix ・https://github.com/MarkBaker/Tries
なるほどわからん
URLルーティングをつくる ・何を⽊構造として扱うか? ・→ルート定義のリスト ・実装の流れ ・インプットとして、ルート定義とURLパスを得る ・ルート定義から⽊構造を⽣成 ・URLパスをターゲットとして⽊構造を探索、マッチしたデー タを返す
None
1BUI .FUIPE "DUJPO (&5 )PNF$POUSPMMFS!EP4PNF"DUJPO VTFST (&5 6TFS$POUSPMMFS!EP4PNF"DUJPO VTFSTVTFS@JE
(&5 6TFS$POUSPMMFS!EP4PNF"DUJPO VTFSTVTFS@JE 1045 6TFS$POUSPMMFS!EP4PNF"DUJPO VTFSTFWFOUT (&5 6TFS$POUSPMMFS!EP4PNF"DUJPO VTFSTFWFOU@JE (&5 6TFS$POUSPMMFS!EP4PNF"DUJPO VTFSTFWFOU@JE 1045 6TFS$POUSPMMFS!EP4PNF"DUJPO VTFSTTVQQPSU (&5 6TFS$POUSPMMFS!EP4PNF"DUJPO
VTFST (&5 VTFS@JE TVQQPSU FWFOU@JE (&5
(&5 (&5 (&5 1045 )551෦͕ऴϊʔυʢ༿ʣʹͳΔ
None
To be continued