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
query_stringのはなし / how to use query string
Search
ryo kato
October 18, 2018
0
1.4k
query_stringのはなし / how to use query string
ryo kato
October 18, 2018
Tweet
Share
More Decks by ryo kato
See All by ryo kato
PyCon傾向と対策 / pycon-trend-and-countermeasures
ryokato
0
200
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
53
7.7k
Designing for Performance
lara
609
69k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
A designer walks into a library…
pauljervisheath
207
24k
Building an army of robots
kneath
306
45k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
950
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Code Review Best Practice
trishagee
68
18k
Transcript
query_stringͷͳ͠ ୈճ&MBTUJDTFBSDIษڧձɹݕࡧฤ
About me Ճ౻ྒྷ 3ZP,BUP ຊܦࡁ৽ฉࣾ "1*ɾݕࡧ %KBOHP &MBTUJDTFBSDI
agenda
w ܦిࢠ൛Ͱͷ&MBTUJDTFBSDIݕࡧʹ͍ͭͯ w RVFSZTUSJOHʹ͍ͭͯ෮श w ฐࣾͰRVFSZTUSJOHΛ͏্Ͱࠔͬͨ
ܦిࢠ൛ʹ͍ͭͯ
ܦిࢠ൛Ͱͷ&MBTUJDTFBSDIͷར༻ ɾݕࡧ هࣄݕࡧ اۀݕࡧ ۀछݕࡧ τϐοΫɾ࿈ࡌ໊ͷݕࡧ ɹΧςΰϦηΫγϣϯͰͷهࣄҰཡऔಘ ɾϩάੳ ܦిࢠ൛ͷΞϓϦ։ൃΛࢧ͑Δϩά׆༻ज़ ɹɹIUUQTTQFBLFSEFDLDPNCVOHPVNFOJLLFJMPH
ݕࡧ"1*पΓͷγεςϜ DMJFOU "1*(8 TFBSDI"1* TFBSDIBENJO 3FEJT &MBTUJDTFBSDI EKBOHP ΞϓϦέʔγϣϯ ࣙॻཧ
ෳࡶͳΫΤϦʹରԠ͢Δ ྫ͑ ɹɹDPNQBOZ͕ʮຊܦࡁ৽ฉࣾʯͷهࣄͱ ɹɹUJUMFʹʮ"*ʯΛؚΈDBUFHPSZ͕ʮܦࡁʯͰͳ͍هࣄͱɹ ɹɹUZQF͕ʮே༦ץʯͷهࣄ ͷΑ͏ͳ݅ͰݕࡧͰ͖Δඞཁ͕͋Δɻ ݕࡧཁ݅̍
"*03ࢲͷཤྺॻ03 "*ਓೳ/05DBUFHPSZܦࡁ 03 ग़൛03 ຊ/05 ൜ࡑ03ສҾ͖ 03 DPNQBOZຊܦࡁܦࡁ03 DPNQBOZܦ#1 /05DBUFHPSZܦࡁ
˞ΠϝʔδͰ͢ɻ ྫ
ݕࡧ݁Ռ࠶ݱΛ༏ઌͯ͠ είΞϦϯάͰͳ͘ɺهࣄͷ৴࣌ࠁͰιʔτ ࠷৽ͷهࣄΛ༏ઌͯ͠ग़͢ඞཁ͕͋Δɻ ݕࡧཁ݅̎
ࣗલͷRVFSZQBSTFS RVFSZTUSJOHRVFSZΛ࠾༻ Ҏ্ͷཁ݅Λ౿·͑ɺ࣮ͷ͞Λ༏ઌͯ͠
query string queryʹ͍ͭͯ෮श
w NBUDIBMMRVFSZ w DPNQPVOERVFSJFT CPPMRVFSZ GVODUJPO@TDPSF w UFSNMFWFMTRVFSZ w GVMMUFYURVFSJFT
&MBTUJDTFBSDIͷRVFSZ
w NBUDI w NBUDIQISBTFNBUDIQISBTFQSFpY w NVMUJ@NBUDI w DPNNPO w RVFSZ@TUSJOH
w TJNQMFRVFSZTUSJOH GVMMUFYURVFSJFT
NBUDIRVFSZ యܕతͳશจݕࡧ༻్Ͱ͏
RVFSZTUSJOHRVFSZ ݕࡧ݅ʹMVDFOFγϯλοΫεͷݕࡧࣜΛهࡌͰ͖Δ
RVFSZTUSJOHRVFSZ w ΤΩεύʔτϢʔβʔ͚ w -VDFOFγϯλοΫεͷݕࡧࣜΛهࡌͰ͖Δ w ݕࡧΫΤϦ͕؆ܿʹ͔͚Δ
w 'JFMEOBNF w XJMEDBSET w SFHVMBSFYQSFTTJPO w SBOHF w CPPMFBO
w HSPVQJOH -VDFOFγϯλοΫε
-VDFOFγϯλοΫεpFMEOBNF ࢦఆͨ͠pFMEҎ֎ͷpMFEΛݕࡧରʹͰ͖Δ ˠUJUMF"*03CPEZ"*03DPNQBOZຊܦࡁ৽ฉࣾ
RVFSZTUSJOHRVFSZͷpFMEࢦఆ ɾEFGBVMU@pFMEύϥϝʔλ ࢦఆͨ͠ϑΟʔϧυΛݕࡧରʹ͢Δɻ ࢦఆ͕ͳ͍߹ͯ͢ͷpFMEΛରʹ͢Δɻ ɾpFMETύϥϝʔλ ෳϑΟʔϧυΛࢦఆͰ͖ΔɻɹFYpFMET<UJUMF lCPEZ> XJMEDBSE͑ΔɻɹFYpFMET<lDJUZ z>
RVFSZTUSJOH NBUDI lUZQFzl5FSN2VFSZz lEFTDSJQUJPOzlCPEZ"*z -VDFOFΠϯσοΫεʹର࣮ͯ͠ߦ͞ΕΔΫΤϦ lUZQFzl5FSN2VFSZz lEFTDSJQUJPOzlCPEZ"*z 1SPpMF 1SPpMF
RVFSZTUSJOH NVMUJ@NBUDI UZQF%JTKVODUJPO.BY2VFSZ EFTDSJQUJPO CPEZ"*cUJUMF"* -VDFOFΠϯσοΫεʹର࣮ͯ͠ߦ͞ΕΔΫΤϦ 1SPpMF 1SPpMF
UZQF%JTKVODUJPO.BY2VFSZ EFTDSJQUJPO CPEZ"*cUJUMF"*
RVFSZTUSJOHUZQFCFTU@pFMET RVFSZTUSJOHUZQFNPTU@pFMET UZQF%JTKVODUJPO.BY2VFSZ EFTDSJQUJPO CPEZ"*cUJUMF"* UZQF#PPMFBO2VFSZ EFTDSJQUJPOCPEZ"*UJUMF"*
-VDFOFΠϯσοΫεʹର࣮ͯ͠ߦ͞ΕΔΫΤϦ 1SPpMF 1SPpMF
MVDFOFγϯλοΫεCPPMFBO "/% 03 /05 c͕͑Δ
ಉ༷ͷ݅ΛCPPMΛ͏ͱ ɾݕࡧରͷϑΟʔϧυ͕ݻఆͰͳ͍߹ ಈతʹՃ͢Δඞཁ͕͋Δ ɾ͕݅ෳࡶʹͳΔͱ֊͕ਂ͘ͳΔ ɾΫΤϦʹΑͬͯNBUDI@QISBTFͱ͔ ɹNVMUJ@NBUDI ɾύʔαʔΛॻ͍ͨΓ͢Δ͜ͱͰରԠ͕ ɹඞཁɹ㱺ɹෳࡶͰͭΒ͔ͬͨ
RVFSZTUSJOHύϥϝʔλ w EFGBVMUpFME w EFGBVMU@PQFSBUPS w GV[[JOFTT w BOBMZ[FS w
IUUQTXXXFMBTUJDDPHVJEFFOFMBTUJDTFBSDISFGFSFODFDVSSFOU RVFSZETMRVFSZTUSJOHRVFSZIUNM WFSTJPOʹΑͬͯ૿͑ͨΓݮͬͨΓ͠·͢
w ΫΤϦͷهड़ָ͕ w ։ൃ͕͍ RVFSZTUSJOHͷར
w ύϥϝʔλʹΑͬͯੜ͞ΕΔΫΤϦ͕େ͖͘มΘΔͷͰEFTDSJQUJPOΛ֬ೝ ͢Δ w pFMEࢦఆ͢Δ w ෳࡶͳΫΤϦΛ࡞Γ์ w WFSTJPOʹΑ༷͕ͬͯมΘΔ RVFSZTUSJOHͷؾΛ͚ͭΔϙΠϯτ
ସҊͱͯ͠
TJNQMFRVFSZTUSJOH RVFSZTUSJOHͷγϯϓϧͳߏจΫΤϦFY c lz ΫΤϦͷهड़ϛε͕͋ͬͯΤϥʔ͕ൃੜ͠ͳ͍
TJNQMFRVFSZTUSJOH UZQF#PPMFBO2VFSZ EFTDSJQUJPOUJUMF"*UJUMF"/%UJUMFDPNQBOZຊܦࡁ৽ฉࣾ -VDFOFγϯλοΫε͑ͣΩʔϫʔυʹͳΔͨΊҙ
ฐࣾͰͷࠔͬͨɾղܾࡦ
̍ɽʮ""/%#03$ʯ
w FMBTUJDTFBSDI -VDFOF ͷύʔεϧʔϧͰ03͕༏ઌ͞ΕΔ UZQF#PPMFBO2VFSZ EFTDSJQUJPO l CPEZB
CPEZCCPEZD
#PPMFBOPQFSBUPS-VDFOFಠࣗͷॲཧ͕ߦΘΕΔͨΊ ҰൠతͳCPPMFBOPQFSBUJPOͱҟͳΔɻ 03"/%/05Ͱ༏ઌ͞ΕΔɻ ΫΤϦ""/%#03$ Ϣʔβʔͷҙਤɿ ""/%# 03$ ࣮ࡍɹɹɹɹɹɿ""/% #03$
IUUQTMVDJEXPSLTDPNXIZOPUBOEPSBOEOPU ݪҼ
ղܾࡦ w ʮ ""/%# 03$ʯʹͳΔΑ͏ʹΫΤϦΛύʔε w ݕࡧ݁ՌΛΩʔϫʔυͷશҰகΛ༏ઌͯ͠هࣄͷ৴࣌ࠁͰιʔτ͢Δඞ ཁ͕͋ΔͨΊɺύʔαʔͰରԠ͢Δ͔͠ͳ͔ͬͨɻ w IUUQTRJJUBDPNPTBNVONVOJUFNTBFEBECDG
ҙ w ʮ"/% 03ʯΑΓʮ ʯͷ΄͏͕ਪ͞Ε͍ͯΔͷͰۃྗʮ ʯΛ͍· ͠ΐ͏ɻ w IUUQTXXXFMBTUJDDPHVJEFFOFMBTUJDTFBSDISFGFSFODFDVSSFOU RVFSZETMRVFSZTUSJOHRVFSZIUNM@CPPMFBO@PQFSBUPST
UZQF#PPMFBO2VFSZ EFTDSJQUJPO l CPEZB CPEZC CPEZD
̎ɽBVUP@HFOFSBUF@QISBTF@RVFSJFTΦϓγϣϯ͕EFQSFDBUFE
w FT̑ͰBVUP@HFOFSBUF@QIBSBTF@RVFSJFTύϥϝʔλΛ͍͕ͬͯͨFTͰ EVQMJDBUF͞Εͨɻ w ΘΓʹೖྗจࣈྻʹzzΛ͚ͭͳ͚Ε͍͚ͳ͍Β͍͠ w &Yʮ"*"/%ਓೳʯ㱺ʮz"*z"/%lਓೳzʯ w ͨͩ͠ɺ-VDFOFγϯλοΫεͱ͔ߟྀ͢Δඞཁ͕͋ͬͯ໘ͩͳͱ͍͏ײ͡
ͩͬͨɻ
w υΩϡϝϯτʹ ͨͿΜ ॻ͍ͯͳ͍͚Ͳɺύϥϝλͱ͔ͪΐͬͱͨ͠Β ͍͚ΔͬΆ͍ ղܾࡦ
FT EFTDSJQUJPO TQBO0S <TQBO/FBS <CPEZ౦ژ CPEZλϫʔ> USVF CPEZ౦ژλϫʔ>
CPEZ౦ژ
UZQFQISBTFΦϓγϣϯ໌ࣔతʹPQFSBUPSՃ FT
RVFSZl౦ژλϫʔ౦ژz EFTDSJQUJPO TQBO/FBS <TQBO0S <TQBO/FBS <CPEZ౦ژ CPEZλϫʔ> USVF
CPEZ౦ژλϫʔ> CPEZ౦ژ CPEZ> USVF 㱺l౦ژλϫʔ౦ژzͷϑϨʔζݕࡧ RVFSZl౦ژλϫʔ"/%౦ژz EFTDSJQUJPO +spanOr([spanNear([body:౦ژ, body:λϫʔ], 0, true), body:౦ژλϫʔ]) +body:"౦ژ ” 㱺 “౦ژλϫʔ” ͱ”౦ژ”ͷϑϨʔζݕࡧ
w εϖʔε͚ͩͰɺεϖʔεؚΜͩϑϨʔζݕࡧʹͳΔ w ෳΩʔϫʔυΛͦΕͧΕϑϨʔζݕࡧ͍ͨ͠߹PQFSBUPS͕ඞཁ w ฐࣾͰɺEFGBVMU@PQFSBUPS͕"/%ͷͨΊɺεϖʔε͕ΘΕ͍ͯΔͱ ͜Ζʹ ΛՃ͍ͯ͠Δɻ w FYʮ౦ژλϫʔɹ౦ژʯˠʮ౦ژλϫʔɹ
౦ژʯ
·ͱΊ
ϝϦοτ ɾগ͠ෳࡶͳ݅ͷΫΤϦͰ؆ܿʹهड़Ͱ͖Δ ɾ։ൃૣ͍ͷͰ։ൃॳظͰ͏ͷಛʹ͓͢͢Ί σϝϦοτ ɾύϥϝʔλͷ͍ํੜ͞ΕΔΫΤϦͳͲ ɹͳΜͱͳ͘Ͱ͏ͱҙਤ͠ͳ͍ݕࡧ݁ՌʹͳΔ ɾ༷͕݁ߏมΘΔ ɾύʔαʔͱ͔ͰؤுΔඞཁ͕ग़ͯ͘Δ
RVFSZ@TUSJOHRVFSZ ༻๏༻ྔकͬͯਖ਼͍͘͠·͠ΐ͏