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ルーティングをつくるエピソード1
Search
bmf_san
December 19, 2018
Programming
340
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
94
完璧を求めない意思決定-アクセス制御基盤における制約との向き合い方
bmf_san
5
20k
AAPについて調べてみた
bmf_san
0
150
レーダーをつくる
bmf_san
0
88
契約テストとPactについて
bmf_san
0
130
5分でわかるSLO
bmf_san
2
190
権限について考える
bmf_san
2
190
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.9k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
520
Other Decks in Programming
See All in Programming
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
200
Security issues being discussed on Web Platforms
petamoriken
0
1k
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
490
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
320
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
150
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
850
Family mrubyの進捗
kishima
1
130
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
280
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.4k
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
iOSDC2026登壇資料.pdf
riofujimon
0
170
Webの地図
yosuke_furukawa
PRO
6
4.7k
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
The World Runs on Bad Software
bkeepers
PRO
72
12k
New Earth Scene 8
popppiees
4
2.6k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
730
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Faster Mobile Websites
deanohume
310
32k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Between Models and Reality
mayunak
4
460
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Abbi's Birthday
coloredviolet
4
10k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
710
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