Slide 1

Slide 1 text

T H E A R C H I T E C T U R E O F H A M L 5 @ k 0 k u b u n / To k y u R u b y ձ ٞ 1 1

Slide 2

Slide 2 text

ࣗ ݾ ঺ հ • GitHub, Twitter: @k0kubun • Treasure Data ॴଐ • !!ੵۃ࠾༻த!! • ERB, Hamlͷϝϯςφ • trunkͷERBΛErubi, ErubisΑΓ଎ͨ͘͠ • Haml 5Λ3ഒ଎ͨ͘͠

Slide 3

Slide 3 text

ࣗ ݾ ঺ հ • GitHub, Twitter: @k0kubun • Treasure Data ॴଐ • !!ੵۃ࠾༻த!! • ERB, Hamlͷϝϯςφ • trunkͷERBΛErubi, ErubisΑΓ଎ͨ͘͠ • Haml 5Λ3ഒ଎ͨ͘͠ ← ͜Εͷɺϒϩάʹॻ͔ͳ͔ͬͨ࿩

Slide 4

Slide 4 text

ࠓ ೔ ࿩ ͢ ͜ ͱ • Haml 4 → 5 ʹ͓͚Δઃܭมߋ • Haml Attributeͷੜ੒ίʔυ͕͍͔ʹߴ଎͔ • Tokyuʹ޲͚ͯߋʹHamlΛ଎͖ͯͨ͘͠࿩ • Haml 6Ͱ΍Γ͍ͨ͜ͱ

Slide 5

Slide 5 text

H A M L 4 → 5 ʹ ͓ ͚Δ ઃ ܭ ม ߋ T H E A R C H I T E C T U R E O F H A M L 5

Slide 6

Slide 6 text

H a m l 4 · Ͱ ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L

Slide 7

Slide 7 text

H a m l 4 · Ͱ ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ύʔε

Slide 8

Slide 8 text

H a m l 4 · Ͱ ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ύʔε

Slide 9

Slide 9 text

H a m l 4 · Ͱ ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ಠ ࣗ ͷ த ؒ ද ݱ ( ੜ ੒ ί ʔ υ ؚ Ή ) ύʔε ෦ ෼ త ί ʔ υ ੜ ੒ + ί ϯύ Πϧ

Slide 10

Slide 10 text

H a m l 4 · Ͱ ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ಠ ࣗ ͷ த ؒ ද ݱ ( ੜ ੒ ί ʔ υ ؚ Ή ) ಠ ࣗ ͷ த ؒ ද ݱ ( ඍ ົ ʹ ࠷ ద Խ ) ύʔε ෦ ෼ త ί ʔ υ ੜ ੒ + ί ϯύ Πϧ খ ͞ ͳ ཻ ౓ Ͱ ࠷ ద Խ

Slide 11

Slide 11 text

H a m l 4 · Ͱ ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ಠ ࣗ ͷ த ؒ ද ݱ ( ੜ ੒ ί ʔ υ ؚ Ή ) ಠ ࣗ ͷ த ؒ ද ݱ ( ඍ ົ ʹ ࠷ ద Խ ) ੜ ੒ ί ʔ υ ( R u b y ) ύʔε ෦ ෼ త ί ʔ υ ੜ ੒ + ί ϯύ Πϧ খ ͞ ͳ ཻ ౓ Ͱ ࠷ ద Խ ί ʔ υ ੜ ੒

Slide 12

Slide 12 text

H a m l 4 · Ͱ ͷ ί ϯύΠϧϓ ϩ η ε • ίϯύΠϥ͕ύʔεҎ֎શ෦΍ͬͯΔ • ίʔυ͕௕ͯ͘ݟ௨͕͠ѱ͍ • ෳࡶͳίϯύΠϧΛ΍Ζ͏ͱͯ͠΋શͯͷίʔυੜ ੒΍࠷దԽΛͦͷ৔Ͱ΍Βͳ͍ͱ͍͚ͳ͍ͷͰେม

Slide 13

Slide 13 text

H a m l 5 ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ύʔε

Slide 14

Slide 14 text

H a m l 5 ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ಠ ࣗ ͷ த ؒ ද ݱ ( ੜ ੒ ί ʔ υ ؚ Ή ) ύʔε ै དྷ ͷ ί ϯύΠϧύ ε

Slide 15

Slide 15 text

H a m l 5 ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ಠ ࣗ ͷ த ؒ ද ݱ ( ੜ ੒ ί ʔ υ ؚ Ή ) Te m p l e த ؒ ද ݱ ύʔε ै དྷ ͷ ί ϯύΠϧύ ε ( ޙ ํ ޓ ׵ ੑ ͷ ͨ Ί ࢒ ͢ ) ৽ ͨ ͳ ί ϯύΠϧύ ε ( ຊ ౰ ʹ ඞ ཁ ͳ ͱ ͜ Ζ ͩ ͚ Ϧ ϓ Ϩ ʔε ) +

Slide 16

Slide 16 text

H a m l 5 ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ಠ ࣗ ͷ த ؒ ද ݱ ( ੜ ੒ ί ʔ υ ؚ Ή ) Te m p l e த ؒ ද ݱ ύʔε ม ׵

Slide 17

Slide 17 text

H a m l 5 ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ಠ ࣗ ͷ த ؒ ද ݱ ( ੜ ੒ ί ʔ υ ؚ Ή ) Te m p l e த ؒ ද ݱ Te m p l e ϑΟϧ λ ʔ Te m p l e த ؒ ද ݱ ύʔε ม ׵

Slide 18

Slide 18 text

H a m l 5 ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ಠ ࣗ ͷ த ؒ ද ݱ ( ੜ ੒ ί ʔ υ ؚ Ή ) Te m p l e த ؒ ද ݱ Te m p l e ϑΟϧ λ ʔ Te m p l e த ؒ ද ݱ Te m p l e த ؒ ද ݱ ( ෦ ෼ త ͳ ί ʔ υ Խ & ࠷ ద Խ ) ύʔε ม ׵

Slide 19

Slide 19 text

ί ʔ υ δΣω Ϩ ʔ λ H a m l 5 ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ಠ ࣗ ͷ த ؒ ද ݱ ( ੜ ੒ ί ʔ υ ؚ Ή ) Te m p l e த ؒ ද ݱ Te m p l e ϑΟϧ λ ʔ Te m p l e த ؒ ද ݱ Te m p l e த ؒ ද ݱ ( ෦ ෼ త ͳ ί ʔ υ Խ & ࠷ ద Խ ) Te m p l e த ؒ ද ݱ ( ෦ ෼ త ͳ ί ʔ υ Խ & ࠷ ద Խ ) ύʔε ม ׵

Slide 20

Slide 20 text

ί ʔ υ δΣω Ϩ ʔ λ H a m l 5 ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ಠ ࣗ ͷ த ؒ ද ݱ ( ੜ ੒ ί ʔ υ ؚ Ή ) ੜ ੒ ί ʔ υ ( R u b y ) Te m p l e த ؒ ද ݱ Te m p l e ϑΟϧ λ ʔ Te m p l e த ؒ ද ݱ Te m p l e த ؒ ද ݱ ( ෦ ෼ త ͳ ί ʔ υ Խ & ࠷ ద Խ ) Te m p l e த ؒ ද ݱ ( ෦ ෼ త ͳ ί ʔ υ Խ & ࠷ ద Խ ) ύʔε ί ʔ υ ੜ ੒ ม ׵

Slide 21

Slide 21 text

• ίϯύΠϥͷ੹຿͕ݮΓݟ௨͕͠Α͘ͳͬͨ • 540ߦˠ333ߦ • ඞཁʹԠͯ͡ίʔυੜ੒ͱ࠷దԽͷίʔυ͕෼཭Ͱ͖Δঢ়ଶ ʹͳͬͨ • Ͱ΋ෆཁͳ෦෼Λແବʹॻ͖׵͑ͨΓ͸ͯ͠ͳ͍ • ͜ΕͰ࠷దԽ͞Εͨίʔυੜ੒͕΍Γ΍͘͢ͳͬͨͷͰɺ ϘτϧωοΫͰ͋ΔHaml Attributeͷ෦෼Λ׬શϦϓϨʔε H a m l 5 ͷ ί ϯύΠϧϓ ϩ η ε

Slide 22

Slide 22 text

• ίϯύΠϥͷ੹຿͕ݮΓݟ௨͕͠Α͘ͳͬͨ • 540ߦˠ333ߦ • ඞཁʹԠͯ͡ίʔυੜ੒ͱ࠷దԽͷίʔυ͕෼཭Ͱ͖Δঢ়ଶ ʹͳͬͨ • Ͱ΋ෆཁͳ෦෼Λແବʹॻ͖׵͑ͨΓ͸ͯ͠ͳ͍ • ͜ΕͰ࠷దԽ͞Εͨίʔυੜ੒͕΍Γ΍͘͢ͳͬͨͷͰɺ ϘτϧωοΫͰ͋ΔHaml Attributeͷ෦෼Λ׬શϦϓϨʔε H a m l 5 ͷ ί ϯύΠϧϓ ϩ η ε

Slide 23

Slide 23 text

ί ʔ υ δΣω Ϩ ʔ λ H a m l 5 ͷ ί ϯύΠϧϓ ϩ η ε ύʔ α ʔ H A M L A S T ί ϯύ Π ϥ A S T ಠ ࣗ ͷ த ؒ ද ݱ ( ੜ ੒ ί ʔ υ ؚ Ή ) ੜ ੒ ί ʔ υ ( R u b y ) Te m p l e த ؒ ද ݱ Te m p l e ϑΟϧ λ ʔ Te m p l e த ؒ ද ݱ Te m p l e த ؒ ද ݱ ( ෦ ෼ త ͳ ί ʔ υ Խ & ࠷ ద Խ ) Te m p l e த ؒ ද ݱ ( ෦ ෼ త ͳ ί ʔ υ Խ & ࠷ ద Խ ) ύʔε ί ʔ υ ੜ ੒ ม ׵ H a m l a t t r i b u t e ͸ શ ෦ ͜ Ε ʹ ͠ ͨ

Slide 24

Slide 24 text

H A M L AT T R I B U T E ͷ ੜ ੒ ί ʔ υ ͕ ͍ ͔ ʹ ߴ ଎ ͔ T H E A R C H I T E C T U R E O F H A M L 5

Slide 25

Slide 25 text

H a m l A t t r i b u t e ͱ ͸ !

Slide 26

Slide 26 text

H a m l A t t r i b u t e ࢓ ༷ 1 • .foo Ͱclass, #bar Ͱid͕ఆٛͰ͖Δ

Slide 27

Slide 27 text

H a m l A t t r i b u t e ࢓ ༷ 2 • %div(foo=“bar”) ͷΑ͏ʹAttributeΛఆٛՄೳ

Slide 28

Slide 28 text

H a m l A t t r i b u t e ࢓ ༷ 3 • %div{ foo: “bar” } Ͱ΋AttributeΛఆٛͰ͖Δ

Slide 29

Slide 29 text

H a m l A t t r i b u t e ࢓ ༷ 4 • %div{ hash1, hash2, hash3 } ͱෳ਺ͷHashͰ΋౉ͤΔ

Slide 30

Slide 30 text

H a m l A t t r i b u t e ࢓ ༷ 5 • %div[object] ͱ΍Δͱಈతʹid, classΛੜ੒ͯ͠౉ͤΔ

Slide 31

Slide 31 text

H a m l A t t r i b u t e ࢓ ༷ 6 • ஋ʹnil, false ͕౉ͬͯ͘ΔͱAttribute͕ফ͑Δ H a m l i t ͸ ϒʔ Ϧ Ξ ϯ ͱ ఆ Ί Β Εͯ ͍ Δ A t t r i b u t e ʹ ͠ ͔ ͜ Ε Λ ΍ Β ͳ ͍ ͨ Ί ɺ ޙ ͷ ੜ ੒ ί ʔ υ Ͱ ͜ Ε ͕ ແ ࢹ ͞ Ε · ͢

Slide 32

Slide 32 text

H a m l A t t r i b u t e ࢓ ༷ 7 • ஋ʹtrue͕౉ͬͯ͘Δͱಛघͳग़ྗʹͳΓɺ͔ͭΦϓ γϣϯʹΑͬͯग़ྗ͕มΘΔ H a m l i t ͸ ϒʔ Ϧ Ξ ϯ ͱ ఆ Ί Β Εͯ ͍ Δ A t t r i b u t e ʹ ͠ ͔ ͜ Ε Λ ΍ Β ͳ ͍ ͨ Ί ɺ ޙ ͷ ੜ ੒ ί ʔ υ Ͱ ͜ Ε ͕ ແ ࢹ ͞ Ε · ͢

Slide 33

Slide 33 text

H a m l A t t r i b u t e ࢓ ༷ 8 • Attribute͸ΞϧϑΝϕοτॱʹιʔτ͞ΕΔ

Slide 34

Slide 34 text

H a m l A t t r i b u t e ࢓ ༷ 9 • ஋͕Hashͷ৔߹Attribute໊͕มΘΔ F a m l , H a m l i t ͸ d a t a a t t r i b u t e ʹ ͠ ͔ ͜ Ε Λ ద ༻ ͠ ͳ ͍ ͷ Ͱɺ ޙ ͷ ੜ ੒ ί ʔ υ Ͱ ͜ Ε ͕ d a t a Ҏ ֎ ͷ A t t r i b u t e Ͱ ແ ࢹ ͞ Ε · ͢

Slide 35

Slide 35 text

H a m l A t t r i b u t e ࢓ ༷ 1 0 • ͜Ε·Ͱग़͖ͯͨશͯͷϧʔϧ͸ಉ࣌ʹ࢖༻Ͱ͖ɺෳ ਺ͷ஋͕౉͞ΕΔͱ஋͸Ϛʔδ͞ΕΔ͕ɺid, class, ͦ ΕҎ֎ͰAttribute͝ͱʹϚʔδنଇ͕ҧ͏

Slide 36

Slide 36 text

͜ ͷ Θ ͚ ͷ Θ ͔ Β Μ ࢓ ༷ ͔ Β ੜ ੒ ͞ Ε Δ ί ʔ υ ͷ ༷ ࢠ

Slide 37

Slide 37 text

͜ ͷ H a m l ς ϯ ϓ Ϩ ʔ τ Λ Ϩϯ μ Ϧ ϯ ά ͢ Δ ͨ Ί ͷ ੜ ੒ ί ʔ υ ʹ ͭ ͍ͯ ߟ ͑ͯ Έ · ͠ ΐ ͏ ͜ ͷ ෦ ෼ ͸ ί ϯύΠϧ ࣌ ʹ ੜ ੒ Ͱ ͖ ͦ ͏ ɺ ͘ Β ͍Ͱ ͍ ͍Ͱ ͢ b ͕ ਅ ِ ஋ ͡ Ό ͳ ͍ έ ʔε Ͱ ͸ “ b a r = ‘ “ Λ Ұ ؾ ʹ ࿈ ݁ Ͱ ͖ ͦ ͏ ɺ ͱ ͔

Slide 38

Slide 38 text

͜ ͷ H a m l ς ϯ ϓ Ϩ ʔ τ Λ Ϩϯ μ Ϧ ϯ ά ͢ Δ ͨ Ί ͷ ੜ ੒ ί ʔ υ ʹ ͭ ͍ͯ ߟ ͑ͯ Έ · ͠ ΐ ͏ b , c , d ͸ ม ਺ ͳ ͷ Ͱ ࣄ લ ͷ Ϩϯ μ Ϧ ϯ ά ͸ ແ ཧ . c l a s s ͸ ࣄ લ ʹ Ϩϯ μ Ϧ ϯ ά Ͱ ͖ ͦ ͏ ͩ ͕ɺ c ͱ ཁ Ϛʔ δ ม ਺ ͕ H a s h ͩ ͱ A t t r i b u t e ໊ ͸ ม Θ Δ ม ਺ ͕ ਅ ِ ஋ ͩ ͱ A t t r i b u t e ໊ ΍ ஋ ͕ ফ ͑Δ ஫ ҙ :

Slide 39

Slide 39 text

H a m l 4 ͷ ੜ ੒ ί ʔ υ Ϩϯ μ Ϧ ϯ ά ࣌ ʹ ΍ Γ ͨ ͍ ์ ୊ _ h a m l o u t . a t t r i b u t e s ͕ ஗ ͘ ɺ ͔ ͭ ৗ ʹ ݺ ͹ Ε Δ ͷ Ͱ Ξ ΢ τ S t r i n g i n t e r p o l a t i o n Ͱ ݁ ߹ + ό οϑ Ν ʹ ࠶ ౓ ݁ ߹ = ແ ବ

Slide 40

Slide 40 text

F a m l ͷ ੜ ੒ ί ʔ υ d i v λ ά ͷ ό οϑ Ν ΁ ͷ ࿈ ݁ ෦ ෼ ʹ ແ ବ ͕ ͳ ͘ ͳ ͬͯ ͍ Δ d a t a a t t r i b u t e ͕ དྷ Δ ͱ ί ϯύΠϧ ࣌ ͷ ࠷ ద Խ Λ ์ غ ͢ Δ ͷ Ͱ F a m l ʹ ͸ ౎ ߹ ͕ ѱ ͍ έ ʔε ͩ ͕ɺ C + + ֦ ு Ͱ ಈ ͘ͷ Ͱ H a m l Α Γ ଎ ͍

Slide 41

Slide 41 text

H a m l i t ͷ ੜ ੒ ί ʔ υ b a r ͱ c l a s s ʹ ର ͯ͠ ਅ ِ ஋ ΍ H a s h ͷ ͨ Ί ͷ ػ ೳ Λ ఏ ڙ ͯ͠ ͍ ͳ ͍ ( େ ෼ ζ ϧ ͍ ࢓ ༷ ) ͷ Ͱ ൑ ఆ ͳ ͠Ͱ ࣄ લ ʹ ࿈ ݁ Ͱ ͖ ɺ ߴ ଎ c l a s s , d a t a ͷ Ϛʔ δ ͷ ͨ Ί ʹ ઐ ༻ ͷ C ֦ ு ϝ ι ο υ ͕ ༻ ҙ ͞ Εͯ ͓ Γ ɺ ͦ Ε Λ ௚ ઀ ݺ ͼ ग़ ͢ͷ Ͱ ଎ ͍ ͨ ͩ ɺ ” d a t a = ‘ “ ͱ ͔ ͷ ෦ ෼ ͸ b u i l d _ d a t a ೚ ͤ ͩ ͕ … ?

Slide 42

Slide 42 text

H a m l 5 ͷ ੜ ੒ ί ʔ υ

Slide 43

Slide 43 text

H a m l 5 ͷ ੜ ੒ ί ʔ υ ඞ ཁ ͳ ஋ Λ ޙ ํ ޓ ׵ ੑ ͷ ͋ Δ ॱ ং Ͱ ४ උ ͯ͠ ͓ ͖ ɺ c l a s s ઐ ༻ ͷ ํ ๏ Ͱ ஋ Λ Ϛʔ δ H a m l i t ͩ ͱ C ֦ ு Ͱ ྗ ٕ Ͱ ΍ ͬͯ ͍ Δ ͱ ͜ Ζ Λ ஸ ೡ ʹ ί ϯύ Πϧ ͯ͠ ͓ Γ ɺ ߴ ଎ i d , c l a s s ઐ ༻ ෼ ذ

Slide 44

Slide 44 text

H a m l 5 ͷ ί ʔ υ ͸ ͜ ͜ ͕ ε ΰ ͍ • ஗͘͢Δඞཁ͕͋Δͱ͜Ζ͚͕ͩ஗͍ • merge_valuesͱ͍͏ಛघͳॲཧ͸ɺ஋͕ෳ਺͔ͭid΍classͷέʔεͷΈ࢖ΘΕΔ • _hamlout.attributesͱ͍͏஗͍ϝιου͕ɺ͘͝ݶΒΕͨ৚݅Ͱ͔͠ݺ͹Εͳ͍ • ಛʹɺdataଐੑͷͨΊͷੜ੒ίʔυ͕Faml΍HamlitΑΓݡ͍ • (όοϑΝͷࢀরҎ֎Ͱ)ϝιουݺͼग़͠ͷ਺͕ཧ࿦্࠷খɺݺ͹ͳ͍ύε΋͋Δ • whenͷ෼ذ͸ςʔϒϧҾ͖Ͱ͋Γɺ૿΍ͯ͠΋஗͘ͳΒͳ͍ • case HashΛ࡟Δ౒ྗΛ͍ͯ͠ΔHamlit΍Famlʹൺ΂஗͘ͳ͍ͱ͍͏͜ͱ

Slide 45

Slide 45 text

g o t o ઌ ͷ Ξ υ Ϩε Λ s t ͷ l o o k u p Ͱ औ ಘ w h e n ͷ ஋ ͕ ଈ ஋ ͔ F l o a t , S y m b o l , B i g n u m , S t r i n g ͔ ͭ ɺ ͦ Ε Β ͷ # = = = ͕ ࠶ ఆ ٛ ͞ Εͯ ͍ ͳ ͍ ৔ ߹

Slide 46

Slide 46 text

H a m l 5 ͷ ί ʔ υ ͸ ͜ ͜ ͕ ε ΰ ͍ • RipperͰRubyͷࣜΛύʔε͠ɺ੩తͳ஋͔Ͳ͏͔൑ఆͯ͠ίϯύΠϧ ࣌ʹϨϯμϦϯάͰ͖Δ • ίϯύΠϧ࣌ʹࣄલʹιʔτ͢ΔͷΛఘΊͨ͘ͳΔΑ͏ͳέʔεΛਅ ໘໨ʹղܾ͍ͯ͠Δ • hash = { bar: 1 } Ͱ %div{ foo: hash } ͳ࣌ɺίϯύΠϧ࣌ʹΘ͔ Δ”foo”͡Όͳͯ͘ɺϨϯμϦϯά࣌ʹ֬ఆ͢Δ”foo-bar”Ͱιʔτ ͠ͳ͍ͱ͍͚ͳ͍ • Hamlit΍Faml͸dataଐੑ͚ͩʹ”data-foo”Λద༻͢Δ͜ͱͰͦΕΛ ճආ͍ͯ͠ΔͨΊɺdataଐੑ͕དྷͯ͠·ͬͨ࣌ʹ஗͍

Slide 47

Slide 47 text

H a m l 5 ͷ a t t r i b u t e ι ʔ τ ϩ δ ο Ϋ

Slide 48

Slide 48 text

H a m l 5 ͷ a t t r i b u t e ι ʔ τ ϩ δ ο Ϋ a b , b - b c “ - ” Α Γ લ ͷ จ ࣈ ྻ ͕ ಉ ͡ ಉ ࢜ Λ άϧ ʔ ϐ ϯ ά

Slide 49

Slide 49 text

H a m l 5 ͷ a t t r i b u t e ι ʔ τ ϩ δ ο Ϋ a b , b - b c “ - ” Α Γ લ ͷ จ ࣈ ྻ ͕ ಉ ͡ ಉ ࢜ Λ άϧ ʔ ϐ ϯ ά “ - ” Α Γ લ ͷ จ ࣈ ྻ Ͱ ι ʔ τ ɺ άϧ ʔϓ ͝ ͱ ʹ ࠷ ద Խ ໊ લ ͕ ಉ ͡ ʹ ͳ Γ ͏ Δ ౕ ͕ ಉ ͡ ϝ ι ο υ ʹ ౉ ͬͯ ͍ Δ

Slide 50

Slide 50 text

H a m l 5 ͷ a t t r i b u t e ι ʔ τ ϩ δ ο Ϋ a b , b - b c “ - ” Α Γ લ ͷ จ ࣈ ྻ ͕ ಉ ͡ ಉ ࢜ Λ άϧ ʔ ϐ ϯ ά “ - ” Α Γ લ ͷ จ ࣈ ྻ Ͱ ι ʔ τ ɺ άϧ ʔϓ ͝ ͱ ʹ ࠷ ద Խ ͦ Ε Ҏ ֎ ͷ ෦ ෼ ʹ ׬ ᘳ ͳ ࠷ ద Խ ͕ ޮ ͍ͯ ͍ Δ ( ੩ త ͳ ࣜ ͷ ࣄ લ Ϩϯ μ Ϧ ϯ ά )

Slide 51

Slide 51 text

H a m l 5 ͷ a t t r i b u t e ι ʔ τ ϩ δ ο Ϋ • ϝϞ: ͜ͷϩδοΫ͕ίʔφʔέʔεͰڍಈ͕มΘΓͦ͏ͳͷ͸࣮૷͔ͨ࣌͠Βೝࣝ͠ ͍ͯΔ • ຊ౰͸ ”b,=” ͸ “b-b=” ΑΓखલʹདྷͳ͍ͱ͍͚ͳ͍͕ͦ͏ͳΒͳ͍ • “b,”ͱ”b”Ͱιʔτ͞ΕΔͱ”b”͕ઌʹདྷΔ͕ɺ”b,”ͱ”b-”Ͱ͸”b,”͕ઌʹདྷΔ • ͔ͱ͍ͬͯ”-”͕ͭ͘ͱ͸ݶΒͳ͍ͷͰ”b”Λ”b-”ʹͯ͠΋μϝ • “-”ΑΓલͳͷ͸ه߸͚ͩͳͷͰɺ࣮ࡍ͸࢖Θͳ͍͠Ͳ͏Ͱ΋͍͍ • ͜ͷࢿྉॻ͍ͯͨΒɺ͓ޓ͍ʹઌ಄͔Βͷจࣈྻ͕1จࣈͰ΋ڞ௨͢ΔάϧʔϓΛ࡞ͬ ͯ͋͛Ε͹ΧόʔͰ͖Δ (“b,”ͱ”b-b”͕དྷͨΒ”b”ͷάϧʔϓʹ͢Δ) ͜ͱʹؾ෇͍ͨ ͷͰͦͷ͏࣮ͪ૷͠·͢

Slide 52

Slide 52 text

T O K Y U ʹ ޲ ͚ ͯ ߋ ʹ H A M L Λ ଎ ͘ ͯ͠ ͖ ͨ ࿩ T H E A R C H I T E C T U R E O F H A M L 5

Slide 53

Slide 53 text

H a m l ߴ ଎ Խ ༧ ࠂ

Slide 54

Slide 54 text

ߴ ଎ Խ ύ ο ν Λ ग़ ͠ ͨ

Slide 55

Slide 55 text

ߴ ଎ Խ ύ ο ν Λ ग़ ͠ ͨ

Slide 56

Slide 56 text

ί ϯύΠϧ ର ৅ ͷ H a m l ͷ ί ʔ υ

Slide 57

Slide 57 text

ί ϯύΠϧ ର ৅ ͷ H a m l ͷ ί ʔ υ ί ϯύΠϧ ޙ ͷ R u b y ͷ ί ʔ υ ( b e f o re )

Slide 58

Slide 58 text

ί ϯύΠϧ ର ৅ ͷ H a m l ͷ ί ʔ υ ί ϯύΠϧ ޙ ͷ R u b y ͷ ί ʔ υ ( b e f o re ) ί ϯύΠϧ ޙ ͷ R u b y ͷ ί ʔ υ ( a f t e r )

Slide 59

Slide 59 text

ί ϯύΠϧ ର ৅ ͷ H a m l ͷ ί ʔ υ ί ϯύΠϧ ޙ ͷ R u b y ͷ ί ʔ υ ( b e f o re ) ί ϯύΠϧ ޙ ͷ R u b y ͷ ί ʔ υ ( a f t e r ) t e x t a re a , p re , c o d e Ҏ ֎ ͷ R u b y ͷ ε Ϋ Ϧ ϓ τ ຒ Ί ࠐ Έ ɺ ͭ · Γ ΄ ͱ Μ Ͳͷ έ ʔε ͕ ߴ ଎ Խ ର ৅ ͜ ͷ ༨ ܭ ͳ ॲ ཧ ͕ ফ ͑Δ

Slide 60

Slide 60 text

f i x _ t e x t a re a s ! ͱ ͸ • textareaλάͷ಺ଆʹվߦ͕͋ͬͯ΋ද্ࣔ͸վߦ͞Εͳ͍ϒϥ΢β ޲͚ʹɺHaml͸textareaλάͷ಺ଆͷ”\n”Λ” ”ʹΤεέʔϓ ͢Δ • Haml಺Ͱ͸preserveͱ͍͏໊લͰ࣮૷͞Ε͓ͯΓɺtextarea౳ͷλ άͷ಺ଆͰͷΈ͜Ε͕ݺ͹ΕΔ Rails 3.2.3ͰɺRailsͷtext_areaϔϧύʔͷ։࢝λάͷ௚ޙʹվߦΛ͍ ΕΔͱ͍͏໎࿭ͳมߋ͕ೖͬͨ ͦͷ࠷ॳͷվߦ΋Τεέʔϓ͞ΕΔͱظ଴͢ΔڍಈʹͳΒͳ͍ϒ ϥ΢βͷͨΊʹɺ࠷ॳͷ” ”Λ”\n”ʹ໭͍ͯ͠Δ

Slide 61

Slide 61 text

f i x _ t e x t a re a s ! ͱ ͸ • textareaλάͷ಺ଆʹվߦ͕͋ͬͯ΋ද্ࣔ͸վߦ͞Εͳ͍ϒϥ΢β ޲͚ʹɺHaml͸textareaλάͷ಺ଆͷ”\n”Λ” ”ʹΤεέʔϓ ͢Δ • Haml಺Ͱ͸preserveͱ͍͏໊લͰ࣮૷͞Ε͓ͯΓɺtextarea౳ͷλ άͷ಺ଆͰͷΈ͜Ε͕ݺ͹ΕΔ • Rails 3.2.3ͰɺRailsͷtext_areaϔϧύʔͷ։࢝λάͷ௚ޙʹվߦΛ͍ ΕΔͱ͍͏໎࿭ͳมߋ͕ೖͬͨ • ͦͷ࠷ॳͷվߦ΋Τεέʔϓ͞ΕΔͱظ଴͢ΔڍಈʹͳΒͳ͍ϒ ϥ΢βͷͨΊʹɺ࠷ॳͷ” ”Λ”\n”ʹ໭͍ͯ͠Δ

Slide 62

Slide 62 text

f i x _ t e x t a re a s ! ͱ ͸ • textareaλάͷ಺ଆʹվߦ͕͋ͬͯ΋ද্ࣔ͸վߦ͞Εͳ͍ϒϥ΢β ޲͚ʹɺHaml͸textareaλάͷ಺ଆͷ”\n”Λ” ”ʹΤεέʔ ϓ͢Δ • Haml಺Ͱ͸preserveͱ͍͏໊લͰ࣮૷͞Ε͓ͯΓɺtextarea౳ͷ λάͷ಺ଆͰͷΈ͜Ε͕ݺ͹ΕΔ • Rails 3.2.3ͰɺRailsͷtext_areaϔϧύʔͷ։࢝λάͷ௚ޙʹվߦΛ͍ ΕΔͱ͍͏໎࿭ͳมߋ͕ೖͬͨ • ͦͷ࠷ॳͷվߦ΋Τεέʔϓ͞ΕΔͱظ଴͢ΔڍಈʹͳΒͳ͍ϒ ϥ΢βͷͨΊʹɺ࠷ॳͷ” ”Λ”\n”ʹ໭͍ͯ͠Δ

Slide 63

Slide 63 text

f i x _ t e x t a re a s ! ͱ ͸ • textareaλάͷ಺ଆʹվߦ͕͋ͬͯ΋ද্ࣔ͸վߦ͞Εͳ͍ϒϥ΢β ޲͚ʹɺHaml͸textareaλάͷ಺ଆͷ”\n”Λ” ”ʹΤεέʔ ϓ͢Δ • Haml಺Ͱ͸preserveͱ͍͏໊લͰ࣮૷͞Ε͓ͯΓɺtextarea౳ͷ λάͷ಺ଆͰͷΈ͜Ε͕ݺ͹ΕΔ • Rails 3.2.3ͰɺRailsͷtext_areaϔϧύʔͷ։࢝λάͷ௚ޙʹվߦΛ͍ ΕΔͱ͍͏໎࿭ͳมߋ͕ೖͬͨ • ͦͷ࠷ॳͷվߦ΋Τεέʔϓ͞ΕΔͱظ଴͢ΔڍಈʹͳΒͳ͍ϒ ϥ΢βͷͨΊʹɺ࠷ॳͷ” ”Λ”\n”ʹ໭͍ͯ͠Δ = > t e x t a re a ౳ ͷ ಺ ଆ Ͱ ͩ ͚ f i x _ t e x t a re a s ! ͢ Ε ͹ ྑ ͍ ͷ Ͱ ͸ ! ! ( ͜ Ε Λ ΍ ͬ ͨ )

Slide 64

Slide 64 text

଎ ͘ ͳ ͬ ͨ : 3 . 3 2 x → 3 . 7 7 x

Slide 65

Slide 65 text

H A M L 6 Ͱ ΍ Γ ͨ ͍ ͜ ͱ T H E A R C H I T E C T U R E O F H A M L 5

Slide 66

Slide 66 text

H T T P S t re a m i n g f o r R a i l s • haml/haml#436 • Railsͷ render stream: true ͬͯ஌ͬͯ·͔͢ • ๻͸࢖ͬͨ͜ͱͳ͍ • partial͕ϨϯμϦϯά͞ΕΔ౓ʹνϟϯΫͱͯ͠ΫϥΠΞϯτʹ ૹΒΕΔ • ίʔυੜ੒ث͕෼཭͞ΕͨͷͰ៉ྷʹ࣮૷Ͱ͖ΔΑ͏ʹͳͬͨ • ΄ͲΑ͍࣮૷೉қ౓͔ͭ໘നΊͷػೳͳͷͰ୭͔࣮૷͍ͯͩ͘͠͞

Slide 67

Slide 67 text

L a z y H a m l B u ff e r ͜ Ε ͸ ݱ ঢ় ͷ ί ʔ υ

Slide 68

Slide 68 text

L a z y H a m l B u ff e r H a m l : : B u ff e r. n e w ͕ ஗ ͍ ͷ Ͱ Ͳ ͏ ʹ ͔ ͯ͠ _ h a m l o u t ͷ ੜ ੒ Λ ΍ Ί ͨ ͍

Slide 69

Slide 69 text

L a z y H a m l B u ff e r _ h a m l o u t . b u ff e r ͸ ผ ͷ ϩ ʔΧ ϧ ม ਺ ʹ ม ͑ Β Ε Δ

Slide 70

Slide 70 text

L a z y H a m l B u ff e r ͦ ͏͢ Δ ͱ _ h a m l o u t ͷ ༻ ్ ͕ɺ ͜ ͜ Ͱ ͸ ஋ ͕ H a s h , A r r a y ౳ ͷ ৔ ߹ ͳ Ͳ ɺ ( f i x _ t e x t a re a s ! Λ ফ ͠ ͨ ͷ Ͱ ) ͋ · Γ ࢖ Θ Ε ͳ ͍ έ ʔε ʹ ߜ Β Ε Δ

Slide 71

Slide 71 text

L a z y H a m l B u ff e r ͳ Β ɺ H a m l : : B u ff e r ͸ ࠷ ॳ ʹ ࡞ Βͣɺ ಺ ෦ ͷ ό οϑ Ν ʔ Λ Π ϯε λ ϯε ม ਺ @ _ e r b o u t ʹ ͍ Εͯ ͓ ͍ͯɺ

Slide 72

Slide 72 text

L a z y H a m l B u ff e r _ h a m l o u t ͕ ݺ ͹ Ε ͨ ࣌ ʹ @ _ e r b o u t Λ H a m l : : B u ff e r. n e w Ͱ ϥ οϓ ͢ Ε ͹ ͍ ͍ ͷ Ͱ ͸ ! ? ͱ ͍ ͏ ໨ ࿦ Έ

Slide 73

Slide 73 text

L a z y H a m l B u ff e r • ΊͪΌͪ͘Ό଎͘ͳΓɺΑ͘࢖ͬͯΔϕϯνϚʔΫͰݱߦ࢓༷ͷཧ࿦஋ ʹ౸ୡͰ͖Δ • Famlͱ΄΅ಉ଎ʹͳΔ͜ͱΛݕূࡁ • ۃΊ࣮ͯ૷೉қ౓͕ߴ͍ • HamlϚχΞͷਓ͚ͩͲ͏ͧ • εϥΠυͷதͰ͸͍Ζ͍Ζඞཁͳ͜ͱΛলུͯ͠ΔͷͰɺͱΓ͋͑ͣ ͕Μ͹ͬͯͦΕΒʹḷΓ͍͍ͭͯͩ͘͞ • Hamlߴ଎ԽͷϥεϘε(?)