Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
sassc-railsΛར༻͍ͯ͠ΔզʑɺSassͷ@importͷඇਪԽΛͲͷΑ͏ʹΓӽ͍͔͑ͯ͘ Kaigi on Rails 2022 / @MH4GF Hirotaka Miyagi 1
Slide 2
Slide 2 text
Hirotaka Miyagi @MH4GF •ϑϦʔϥϯεΤϯδχΞ •גࣜձࣾϏοτδϟʔχʔ͞Μͷ Kibelaͷ։ൃνʔϜʹࢀՃ͍ͯ͠· ͢ 2
Slide 3
Slide 3 text
sassc-railsͬͯ·͔͢ 3
Slide 4
Slide 4 text
օ͞ΜͷϓϩδΣΫτͰ͜Μͳapplication.scss ͋Γ·ͤΜ͔ 4
Slide 5
Slide 5 text
͜ͷ@importඇਪͱͳΓɺআ͕༧ఆ͞Ε͍ͯ·͢ ΘΓͷϞδϡʔϧγεςϜͰ͋Δ@useΛ͏͜ͱʹͳΓ·͢ 5 https://sass-lang.com/blog/the-module-system-is-launched#future-plans
Slide 6
Slide 6 text
• ͔͠͠sassc-railsͰ@useαϙʔτ͞Ε͍ͯ·ͤΜ😇 • ͱ͍͏͜ͱ@importΛ@useʹҠߦ͢Δલʹɺsassc-railsΛผͷԿ͔ʹม͑Δ ඞཁ͕͋Δͬͯ͜ͱ…!? 6
Slide 7
Slide 7 text
ࠓճͷηογϣϯͷతɺ ʮSassͷݱࡏपลࣝΛͬ͘͟Γཧղ͠ɺ ໌͔ΒҠߦͷΞΫγϣϯΛ࢝ΊΒΕΔঢ়ଶʯ ʹͳΔ͜ͱͰ͢ 7
Slide 8
Slide 8 text
ࠓͷΞδΣϯμ • Sassपลͷࣄલࣝͷհ • Ҡߦʹ͓͚Δํ • ҠߦϓϩηεͰؾ͍ͮͨ͜ͱ 8
Slide 9
Slide 9 text
Sassपลͷࣄલࣝͷհ 9
Slide 10
Slide 10 text
Sassͱ • CSSͷεʔύʔηοτɾϓϦϓϩηοα • มɾؔɾωετʹΑΔߏԽ͕ಛ 10
Slide 11
Slide 11 text
CSSؔ࿈ٕज़ • State of CSSʹΑΔௐࠪͰϢʔ βʔ͕࠷ଟ͘ຬ্Ґʹ Ґஔ͍ͯ͠Δ 11 https://2021.stateofcss.com/ja-JP/technologies/
Slide 12
Slide 12 text
Sassͷ࣮ • Ruby Sass, LibSass, DartSass͕͋ΓɺDart SassͰݱࡏΞΫςΟϒͳ։ൃ͕ਐ ߦத • @useDart Sassʹ͔࣮͠͞Ε͍ͯͳ͍ • sassc-railsLibSassΛ࣮ߦ͢Δ • Ruby SassEOL ⚰ͰɺLibSassඇਪ • อकܧଓ͞ΕΔ͕৽ػೳαϙʔτ͞Εͳ͍ͨΊɺCSS/Sassߏจͷޓ ੑ͔Βঃʑʹဃ͍ͯ͘͠ 12
Slide 13
Slide 13 text
@import • ϑΝΠϧׂΛ࣮ݱ͢ΔͨΊͷߏจ 13
Slide 14
Slide 14 text
@importͳͥඇਪͳͷ͔ʁ • શͯͷfunctionɾmixinɾvariable͕άϩʔόϧͰΞΫηεͰ͖ΔΑ͏ ʹͳΔͨΊɺఆٛͷڝ߹͕͠͠ى͖Δ • ಛఆͷఆ͕ٛͲ͜ͰΘΕΔ͔Λ୳ࡧ͢Δ͜ͱ͕ࠔ • ಉ͡ϑΝΠϧΛෳճ@importͰݺͼग़ͯ͠͠·ͬͨ߹ɺݺͼग़͠ ͨճධՁ͞Εͯ͠·͏ 14 https://sass-lang.com/documentation/at-rules/import
Slide 15
Slide 15 text
@use 15 มͱmixinΛఆٛ @useͰར༻Λએݴ cornersͷωʔϜεϖʔεͰݺͼग़͢
Slide 16
Slide 16 text
@use • ϝϯόݺͼग़͠ʹ໊લۭؒΛ໌ࣔ͢ΔͨΊɺάϩʔόϧͳఆٛͷॏෳ Λؾʹͤͣྑ͘ͳͬͨ 👍 • ಉ͡ϑΝΠϧΛෳճ@useͰݺͼग़ͯ͠ҰͷΈධՁ͢ΔΑ͏ʹ ͳͬͨ 👍 • privateͳมͳͲɺՄࢹੑͷ੍ޚ͕Ͱ͖ΔΑ͏ʹͳͬͨ👍 16 https://sass-lang.com/documentation/at-rules/use
Slide 17
Slide 17 text
͍ͭ·Ͱʹ@useʹҠߦ͢Εྑ͍ͷ͔ʁ • ݩʑ2022/10/01·ͰʹϝδϟʔόʔδϣϯͷΞοϓάϨʔυΛ࣋ͬ ͯআ͞ΕΔ༧ఆ͕ͩͬͨɺLibSassͷඇਪԽΛड͚Ԇظ͞Εͨ • 80%ͷϢʔβʔ͕Dart SassʹҠߦ͢ΔͷΛͪɺͦͷޙগͳ͘ͱ1 ɺ͓ͦΒͬ͘ͱ͔ͬͯΒશʹআ͢Δ༧ఆ 17 https://sass-lang.com/blog/the-module-system-is-launched#future-plans
Slide 18
Slide 18 text
͍ͭ·Ͱʹ@useʹҠߦ͢Εྑ͍ͷ͔ʁ • NPMͷμϯϩʔυͰஅ͍ͯ͠Δ sass / (sass + node-sass) • 8,098,297 / (8,098,297 + 2,677,869) = 75% (2022/10/22࣌) 18 https://github.com/sass/sass/issues/3276#issuecomment-1090803953 → 1ҎͰҠߦ͓ͯ͘͠ͷ͕ແ
Slide 19
Slide 19 text
Ҡߦʹ͓͚Δํ 19
Slide 20
Slide 20 text
Ҡߦʹ͓͚Δํ 1. sassc-railsΛআ͠DartSassΛRailsͰ͑ΔΑ͏ʹ͢Δ 2. @import͔Β@useʹΓସ͑Δ 3. (@useΒ͍͠ઃܭʹΓସ͍͑ͯ͘) 20
Slide 21
Slide 21 text
RailsͰDartSassΛѻ͏ํ๏ʁ • 3ͭ͋Δ • dartsass-rails gem • css-bundling-rails gem • webpackͷsass-loader 21
Slide 22
Slide 22 text
dartsass-rails • SassͷόΠφϦ͕แ͞Ε͓ͯΓɺNodeͳͲͷϥϯλΠϜͳ͠ʹ࣮ ߦՄೳ • assets:precompileͷઌ಄ʹbuild༻RakeTaskΛࠩ͠ࠐΉ 22 → importmap-railsར༻ԼͳͲɺwebpacknodeʹґଘ͠ͳ͍ڥͰͷར༻Λఆ https://github.com/rails/dartsass-rails
Slide 23
Slide 23 text
cssbundling-rails • ηοτΞοϓ༻RakeλεΫͰpackage.jsonͷscriptsʹbuild:cssΛɺ npmύοέʔδͷsassΛdependenciesʹՃ • assets:precompileͷઌ಄ʹ yarn install && yarn build:css Λࠩ͠ࠐΉ 23 https://github.com/rails/cssbundling-rails → npm scriptsΛར༻͢ΔͨΊɺॊೈʹ࣮ߦ༰Λ੍ޚՄೳ
Slide 24
Slide 24 text
Webpackͷsass-loader • WebpackʹόϯυϦϯάͤ͞Δํ๏ • ࠓ࣌ؒͷ߹্লུ 24
Slide 25
Slide 25 text
ͲΕΛબ͍͍ͷ͔ʁ • NodeΛར༻͍ͯ͠ΔϓϩδΣΫτͰ͋Εcssbundling-rails͔Webpack Λ͏ͷ͕ྑ͍ • npmͷsassʹґଘ͢ΔͨΊdependabotͳͲͰͷΞοϓσʔτ͕Մೳ • ϑϩϯτΤϯυίϛϡχςΟͷใΛద༻Ͱ͖Δ • 2ͭͷͲͪΒΛ͏͔Webpackʹґଘͤ͞Δ͔͠ͳ͍͔Ͱݕ౼͢Δ • Dartsass-railsɺsassͷόʔδϣϯΞοϓ͕ߦΘΕ͍ͯͳ͍ͷ͕ؾʹͳΔ 25
Slide 26
Slide 26 text
@import͔Β@useͷॻ͖͑ • Sassެ͔ࣜΒఏڙ͞Ε͍ͯΔϚΠάϨʔλʔ͕͋ΔͷͰɺ·ͣͦΕΛ ࢼ͢ͷ͕ྑ͍ • @import͔Β@useͷॻ͖͑ɺ֤ఆٛͷར༻ՕॴͰͷ໊લۭؒͷ ༩ͳͲ 26 https://sass-lang.com/blog/the-module-system-is-launched#automatic-migration
Slide 27
Slide 27 text
ҠߦϓϩηεͰؾ͍ͮͨ͜ͱ 27
Slide 28
Slide 28 text
sassc-railsͷ᠘ • DartSassʹΓସ͑Δͱɺͦͷ··Ͱ@import͕ಈ͔ͳ͍Օॴ͕ଟʑ͋ͬͨ • @import “utilities/**” ͷΑ͏ͳglob → ϑΝΠϧΛͦΕͧΕ໌ࣔ͢Δ • xxx.scss.erb → ͖͋ΒΊ·͠ΐ͏ • admin-lte/dist/css/adminlte → admin-lte/dist/css/adminlte.css • ͜ΕΒsassc-rails͕ॊೈʹॲཧͯ͘͠Ε͍ͯͨ 28 → Ϗϧυʹࣦഊ͢Δ߹ɺsassc-rails͕ॲཧͯ͘͠Ε͍ͯͳ͍͔ʁΛ֬ೝ
Slide 29
Slide 29 text
QAํ๏ • LibSass͔ΒDartSassʹΓସ͑Δɾ@import͔Β@useʹΓସ͑Δࡍͷ QAͱͯ͠࠷ऴతͳग़ྗCSSͷࠩΛνΣοΫ͢Δͱྑ͍ • SassʹoutputStyleͱ͍͏Φϓγϣϯ͕͋Γɺexpandedʹઃఆ͢Δ͜ͱ ͰՄಡੑ͕ߴ·ΓdiffΛऔΔ͜ͱ͕Ͱ͖Δ • Kibelaͷ߹ϕϯμʔϓϨϑΟοΫεͷআՃɺbackground-image ͷύε͕มΘΔͳͲ͕͋ͬͨ • QAͷൣғΛߜΔ͜ͱ͕Ͱ͖Δ 29
Slide 30
Slide 30 text
ࠓճͷηογϣϯͷ·ͱΊ • @importඇਪͰ͋Γ@useʹΓସ͑Δඞཁ͕͋Δɺ@useDartSassͰͷ Έར༻Մೳ • 80%ͷϢʔβʔ͕DartSassʹҠߦͨ͠1ޙΛॲʹ@importআ͞ΕΔ༧ ఆͰɺݱࡏ75% • RailsͰDartSassΛར༻͢Δखஈ1.dartsass-rails, 2.css-bundling-rails, 3.webpack͕͋ΓɺnodeΛར༻͍ͯ͠ΔͳΒ2͔3͕ྑ͍ • Ҡߦ࣌ͷQAํ๏ͱͯ͠outputStyleΛexpandedʹઃఆ͠diffΛऔΔํ๏͕͋Δ 30
Slide 31
Slide 31 text
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ cssbundling-rails + dartsassͷݕূ࣮ΛGitHubʹࡌ͍ͤͯ·͢ https://github.com/MH4GF/css-bundling-rails-dartsass-demo 31