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
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.3k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Optimizing for Happiness
mojombo
378
70k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
4 Signs Your Business is Dying
shpigford
183
22k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.8k
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 ༻๏༻ྔकͬͯਖ਼͍͘͠·͠ΐ͏