Slide 1

Slide 1 text

Xslate։ൃͷৼΓฦΓ Template Engine Night 2014-10-17 by gfx (CPAN:GFUJI)

Slide 2

Slide 2 text

ࣗݾ঺հ • gfx • ϞόΠϧΞϓϦΤϯδχΞ • Android / iOS ༻ͷࣾ಺ϥΠϒϥϦ։ൃ͕ओ • HTMLΑΓ΋Androidͷlayout XMLͷ΄͏Λ୔ࢁॻ͍ ͯ·͢ • Xslate͸2010೥4݄ʹ։ൃͯ͠2011೥1݄ʹ1.0

Slide 3

Slide 3 text

http://xslate.org/ https://github.com/xslate

Slide 4

Slide 4 text

arity

Slide 5

Slide 5 text

Introduction to Xslate • Xslate: Perl࠷଎ͷςϯϓϨʔτΤϯδϯ • ʮςϯϓϨʔτΤϯδϯͷ࣮૷͸ʰ଎౓ʱͱʰػೳʱ ͷτϨʔυΦϑ͕͋Δʯͱ͍͏ݴઆΛ൱ఆͨ͠ʂ • ࣮ߦΤϯδϯ͸CͰ࣮૷ͨ͠Ծ૝Ϛγϯ • DTC: Direct Threaded Code • YARV ManiacsͱCRubyΛࢀߟʹͨ͠

Slide 6

Slide 6 text

ࢀߟ: XslateҎલͷ࣌୅ • ߴ଎ • HTML::Template::Pro, Text::ClearSilver • ߴػೳ • Template-Toolkit, Text::MicroTemplate

Slide 7

Slide 7 text

)FMMP OBNF "45 0QDPEF4FRVFODF %5$ < <MJUFSBM l)FMMP l> <QSJOU lOBNFz> > QBSTF DPNQJMF BTTFNCMF

Slide 8

Slide 8 text

Virtual Machine (written in C)

Slide 9

Slide 9 text

Template Syntax (“Kolon”)

Slide 10

Slide 10 text

Xslateͷಛ௃ • छྨ • ൚༻ɾಠࣗݴޠܕʢSmarty, Mustache) • ࢀߟ: ൚༻ɾϗετݴޠܕʢerb, JSPʣ, HAMLܕ (haml, Jade), XMLܕ (Thymeleaf, Genshi) • ॏ఺ • ߴػೳ & ߴ଎ ʢ͍͍ͩͨओཁͳػೳ͸͋ͬͯ଎͍ʣ • ࢀߟ: Τϯδϯͷอकੑ, ςϯϓϨʔτϑΝΠϧͷอकੑ, ଞͷݴޠ͔Βͷར༻

Slide 11

Slide 11 text

ৼΓฦΓ Keep / Problem / Try

Slide 12

Slide 12 text

Keep - Α͔ͬͨ͜ͱ • σϑΝΫτͩͬͨTemplate-Toolkitͷ100ഒߴ଎ • ஋ͷܕͰHTML escapeͷཁɾෆཁΛܾఆ͢Δ • PSGI͚ͩΛߟ͑ͯೖग़ྗΛ୯७ʹͨ͠ • ύʔαɾίϯύΠϥɾVMΛ෼཭͍͓͔ͯͨ͛͠Ͱ੩తղੳπʔϧ Λ࡞Δ༨஍͕͋ͬͨ • Locale::Maketext::Extract::Plugin::Xslate • جຊػೳҎ֎͸͢΂ͯϢʔβʔఆٛؔ਺Ͱఏڙͱ͍͏ͷ΋Α͔ͬͨ

Slide 13

Slide 13 text

Problem - ѱ͔ͬͨ͜ͱ • ଎౓ʹͩ͜ΘΓ࣮͗ͯ͢૷͕೉ղʹͳͬͨ • CʹΑΔͩ͜ΘΓͷVM, ෳࡶ͗͢ΔΩϟογϡγεςϜ… • ࣮༻Ϩϕϧͷ଎౓͕͋Ε͹ɺ࣍ʹॏཁͳͷ͸อकੑ • ಈతܕ෇͖ݴޠతͳܽ఺ • ͋Δύϥϝʔλ͕ʮ೚ҙʯͳͷ͔ʮඞਢʯͳͷ͔Λهड़Ͱ͖ͳ͍ • ΠϯΫϧʔυͰม਺ΛೝΊΔʢ<: include $file :> ʣඞཁ͸ຊ౰ʹඞ ཁ͔ͩͬͨ • ։ൃऀ͕΢Σϒ։ൃΛ͠ͳ͔ͬͨʢ࢓ࣄͰ࢖͏ͱࢥͬͨΒ࢖Θͳ͔ͬͨʣ

Slide 14

Slide 14 text

Try - ະདྷͷςϯϓϨʔτΤϯδϯ • ७ਮʹϗετݴޠͰ࣮૷͢Δ or JavaScriptͰ࣮૷ • ੩తղੳΛ༰қʹͯ͠πʔϧνΣΠϯΛ๛෋ʹ • ςϯϓϨʔτϑΝΠϧͷؔ܎Λநग़͢Δπʔϧ • Ͳ͏͍͏ύϥϝʔλΛͱΔ͔Λநग़͢Δπʔϧ • ϓϩϑΝΠϥ͕΄͍͠ • ͍ͣΕʹͤΑςϯϓϨʔτݴޠ͸JSͷαϒηοτͰΑ͍

Slide 15

Slide 15 text

࣮૷ݴޠ • ϗετݴޠͰ࣮૷͢Δͱϝϯς͠΍͍͢ • Keep It Simple, Stupid! • JavaScriptͰ࣮૷͢ΔͱϒϦοδ෦෼Ͱτϥϒϧ ͕ى͖͕͕ͪͩ࠶ར༻Ͱ͖ΔՄೳੑ͸ߴ͍ • ౉ͤΔσʔλ΋JSONʹ੍ݶͤ͟ΔΛ͑ͳ͍ • རศੑͱͷτϨʔυΦϑ͕ͩݕ౼ͷՁ஋͸͋Δ

Slide 16

Slide 16 text

ςϯϓϨʔτͷछྨ • ൚༻ܕ͸HTMLͷग़ྗҎ֎ʹ΋࢖͑ΔͷͰඞਢ • hamlܕ͸ॻ͘ͷָ͕ͳ൓໘ɺֶशίετ͕ߴ ͍ɻه๏΋౷Ұ͞Ε͓ͯΒͣա౉ظͳײ͡ • XMLܕͷϝϦοτ͸Α͘Θ͔Βͳ͍ • SࣜͰॻ͘ͷҙ֎ͱѱ͘ͳ͍Μ͡Όͳ͍͔

Slide 17

Slide 17 text

hamlͷޭࡑ • %ul • %li • - if expr • Hello, world # ΠϯσϯτϨϕϧ͸ʁ • ࣮૷͕buggy & slowͰΞϨ͗͢Δ

Slide 18

Slide 18 text

੩తղੳ • ϓϩάϥϜΛ࣮ߦͤͣʹɺߏจˍincludeͷଥ౰ੑ&ύϥϝʔλͷ ଥ౰ੑΛνΣοΫ͍ͨ͠ • <: $foo :> ͕ۭʹͳΔͷ͸ϩδοΫΤϥʔ • <: $foo // “bar” :> ͸$foo͕ۭͰ͋Ε͹barʹͳΔ • <: f($foo) :> ͜ͷϢʔβʔఆٛؔ਺ͱΈΒΕΔf()͸ଥ౰͔ʁ • ͜ͷνΣοΫΛ੩తʹ͢Δͷ͸೉͍͠ • ఆٛͷΈΛॻ͍ͨσʔλ = IDL͕ඞཁ

Slide 19

Slide 19 text

That’s all. ! ࢀߟ: https://gist.github.com/ tokuhirom/61f5e20cf759706ca3c9