Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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.5k
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
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
How to Ace a Technical Interview
jacobian
280
24k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
A Modern Web Designer's Workflow
chriscoyier
698
190k
A designer walks into a library…
pauljervisheath
210
24k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Embracing the Ebb and Flow
colly
88
4.9k
Code Reviewing Like a Champion
maltzj
527
40k
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 ༻๏༻ྔकͬͯਖ਼͍͘͠·͠ΐ͏