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.2k
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
190
Featured
See All Featured
What the flash - Photography Introduction
edds
64
11k
Making the Leap to Tech Lead
cromwellryan
124
8.5k
The Art of Programming - Codeland 2020
erikaheidi
42
12k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
The Illustrated Children's Guide to Kubernetes
chrisshort
31
46k
Product Roadmaps are Hard
iamctodd
44
9.7k
GraphQLとの向き合い方2022年版
quramy
32
12k
Build your cross-platform service in a week with App Engine
jlugia
225
17k
Building Better People: How to give real-time feedback that sticks.
wjessup
355
18k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
14
1.6k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
17
1.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
121
39k
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 ༻๏༻ྔकͬͯਖ਼͍͘͠·͠ΐ͏