Slide 1

Slide 1 text

αʔϏε։ൃ͢Δฏ੒ͷ܅ʹ ত࿨ͷ๻͔Β఻͍͑ͨ7ͭͷ͜ͱ @yaboojp ฏ੒.rb #2 2019/3/14

Slide 2

Slide 2 text

Self • Identifer • େ༅ Ӭ / Ϡϒ / @yaboojp • Job: • 22Inc. ૑ۀ -> Co-Founder & CTO • NTTdata -> ৽ଔͰΤϯδχΞ • Ed • େֶ -> ࣗવݴޠղੳͷݚڀ • ֶੜϕϯνϟʔ -> ஍ҬݶఆϑϦϚαΠτʢPHPʣ • Location • ژ౎ -> ౦ژ • Favorites • ΫϥϑτϏʔϧ, Իָ, όΠΫ, JALϚΠϧ

Slide 3

Slide 3 text

ত࿨ͱ͸ʁ • ͸͡Ίͯॻ͍ͨίʔυ͸Niftyʹஔ͍ͨHTML • ͱͰϨΠΞ΢τͨ͠ૉఢͳ ϚʔΫΞοϓɻCSSͳ͠ɻ௚઀ελΠϧఆٛ

Slide 4

Slide 4 text

͓ؾ࣋ͪ ত ࿨ ͷ ࿝ ֐ ͩ

Slide 5

Slide 5 text

ΊͬͪΌ͍͍͜ͱॻ͍ͯ͋ͬͨ

Slide 6

Slide 6 text

ؾΛऔΓ௚ͯ͠

Slide 7

Slide 7 text

ࠓ೔ͷ࿩ • ϦʔϯελʔτΞοϓͩͬͨRailsϓϩδΣΫ τ • ΍Ε͹Α͔ͬͨ • ΍ͬͯΑ͔ͬͨ

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

೥ؒͷ͕Μ͹Γ

Slide 11

Slide 11 text

versions 2013೥11݄ 3.2 2015೥8݄ 4.2 2018೥12݄ 5.0 2019೥1݄ 5.2

Slide 12

Slide 12 text

Ұ౓੒௕ͨ͠%#εΩʔϚ ͸खڧ͍Ͱ

Slide 13

Slide 13 text

DBઃܭ • ActiveRecordͷόϦσʔγϣϯ͸͋ͬ͞Γ͢ Γൈ͚Δ • DBεΩʔϚมߋ͸େม • ಛʹ੍໿͸σʔλύονඞཁʹͳΔ • NOT NULL, UNIQUE INDEX, FORIGN KEY

Slide 14

Slide 14 text

ྫ͑͹

Slide 15

Slide 15 text

࣮ߦͰ͖ͳ͍Migration

Slide 16

Slide 16 text

ϧʔςΟϯά͸ ؆୯ʹ͸ม͑Ε΁Μ

Slide 17

Slide 17 text

URLઃܭ • ಛʹAPIͳͲ͸มߋ͠ʹ͍͘ • ໊લۭؒ͸ͪΌΜͱ෼͚ͱ͘

Slide 18

Slide 18 text

URLઃܭͷഁ୼ Πϝʔδ • େྔͷόʔδϣχϯά

Slide 19

Slide 19 text

URLઃܭͷഁ୼ Πϝʔδ • େྔͷϦμΠϨΫτ

Slide 20

Slide 20 text

ηΩϡϦςΟ͸ଈࢮ͢Δ͠ ϗϯϚʹؾ͚͌ͭΔΜ΍Ͱ

Slide 21

Slide 21 text

ηΩϡϦςΟ • ͱΓ͋͑ͣɺࢮ͵ؾͰ on Rails • cookieηογϣϯ࢖Θͳ͍ʢηογϣϯϋΠδϟοΫʣ • ΧδϡΞϧʹprotect_from_forgeryΛΦϑΒͳ͍ʢCSRFʣ • ActiveRecordͷΫΤϦʹࣜల։ͨ͠จࣈྻΛ౉͞ͳ͍ʢSQL Injectionʣ • FragmentCache͸҆қʹ࢖Θͳ͍

Slide 22

Slide 22 text

SQL Injection • ͜Ε͚ͩͩͱ໰୊ͳ͘ݟ͑Δ

Slide 23

Slide 23 text

SQL Injection • தͷ࣮૷ͳΜͯ஌ΒΜ͕ͳ

Slide 24

Slide 24 text

Ωϟογϡ ࣄނྫ

Slide 25

Slide 25 text

Ωϟογϡ ࣄނྫ !QPTUͷJE VQEBUFE@BU ͕Ωʔͱͯ͠࢖ΘΕΔ ॳճΞΫηεͷϢʔβ͕ BENJOͷ৔߹ ͜Ε͕ΩϟογϡʹͷΔ

Slide 26

Slide 26 text

ͱͷࠩ͸ ͋·Γʹ΋େ͖͍

Slide 27

Slide 27 text

ςετͷଘࡏ • ΧόϨοδ͸ͦ͜·Ͱؾʹ͠ͳͯ͘΋ɻ • ࡉ͔͘ॻ͖͗ͯ͢΋ෆཁʹͳͬͨΓ଍ᐫʹͳΔ͜ͱ΋ɻ • E2E,RequestSpec͸࠷௿શମΛΧόʔ͢Δ͙Β͍ཉ͍͠ • ModelSpec͸ɺਖ਼ৗܥͷ1ύλʔϯ͚ͩͰ΋ଘࡏ͢Δҙ ຯ͸େ͖͍ɺςετͷଘࡏ 0ͱ1ͷࠩ͸େ͖͍ɻ

Slide 28

Slide 28 text

versions 2013೥11݄ 3.2 2015೥8݄ 4.2 2018೥12݄ 5.0 2019೥1݄ 5.2 ςετ ສΞϓϦϢʔβ ☓

Slide 29

Slide 29 text

૷උ͸େࣄ΍Ͱ

Slide 30

Slide 30 text

ίʔυ࡟আ • ೔ৗతʹ΍Δ͜ͱͰফ͠ʹ͕͋͘͞Ε͹ʹૣ Ίʹؾ෇͚Δ • CSS/JS/IMGͷϧʔϧ • ίʔσΟϯά/໋໊ن໿ • SPAʹ͢Δͷ͔͠ͳ͍ͷ͔ʁ

Slide 31

Slide 31 text

͜·ΊͳGemΞοϓσʔτ • ཷΊΔͱͲΜͲΜ΍Βͳ͘ͳΔѱ॥؀ • dependabotΦεεϝ

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

৘ใେࣄ

Slide 34

Slide 34 text

࿭Θ͞Εͳ͍ • ActiveRecordͷCallback • ౰࣌ϙδςΟϒͳΤϯτϦ͕ଟ͔ͬͨɻ • ϩδοΫ͕ॻ͔Ε͗ͯ͢ɺͲ͜Ͱߋ৽͞Ε ͔ͨΘ͔Βͳ͍ɻ • ίʔϧόοΫ஍ࠈʹͳΔ

Slide 35

Slide 35 text

·ͱΊ 1.DBઃܭ ͸৻ॏʹ 2.URLઃܭ͸৻ॏʹ 3.ηΩϡϦςΟ͸ͳʹΑΓେࣄ 4.ςετͷଘࡏ 0ͱ1ͷࠩ͸େ͖͍ 5.ෆཁίʔυ͸͙͢࡟আ 6.Gemͷߋ৽ΛఘΊͳ͍ 7.࿭Θ͞Εͳ͍

Slide 36

Slide 36 text

ΊͬͪΌืू

Slide 37

Slide 37 text

͝ਗ਼ௌ͓͓͖ʹ