Slide 1

Slide 1 text

ElmͰ ؔ਺ܕΛҙࣝ͢Δ 2018-06-26 ܂ാӳࢿ

Slide 2

Slide 2 text

ࣗݾ঺հ • ܂ാӳࢿ(͘Θ͸͍͚ͨ͑͢) • גࣜձࣾΞϥλφ • Node.js΍Nuxt.jsͰπʔϧ࡞ͬͨΓ • ޷͖ͳݴޠ͸Scala, Haskell • झຯɿμΠϏϯάɺυϩʔϯɺ਺ֶ

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Elmͬͯͳʹʁ

Slide 5

Slide 5 text

http://elm-lang.org/

Slide 6

Slide 6 text

Elm • ؔ਺ܕϑϩϯτΤϯυݴޠ • ੩తܕ෇͚ • Elm Architecture • ֎෦JSͱͷ΍ΓऔΓ΋Մೳ

Slide 7

Slide 7 text

example

Slide 8

Slide 8 text

ೖྗͱΧ΢ϯτΞοϓ • Elm൛ • https://ellie-app.com/BMTPN4b5kfa1 • Vue.js൛ʢόά͋Γʣ • https://codepen.io/anon/pen/PaBOWm

Slide 9

Slide 9 text

શମߏ੒͸ࣅ͍ͯΔ WJFX NPEFM VQEBUF )5.-5FNQMBUF EBUB NFUIPET Elm Vue.js ΞϓϦέʔγϣϯͷߏ੒্͸͍͍ͩͨಉ͡ʹͳΔ

Slide 10

Slide 10 text

ܕΛҙࣝ͢Δ type alias Model =
 { count : Int
 , incr : Int
 }
 
 initialModel : Model
 initialModel =
 { count = 0
 , incr = 0
 } data: {
 count: 0,
 incr: 0
 } ҟͳΔܕͷ஋ΛೖྗͰ͖ͳ͍ɺଐੑΛ௥ՃͰ͖ͳ͍

Slide 11

Slide 11 text

ܕΛҙࣝ͢Δ — アクションを受けて
 — モデルを次の値に更新する関数
 update : Msg -> Model -> Model — 起こりうるアクションの型
 type Msg
 = Increment
 | UpdateIncr String methods: {
 increment() { this.value += this.incr }
 } ΞΫγϣϯͷ஋ͱݱࡏͷϞσϧͷ஋͔Β
 ࣍ͷϞσϧͷঢ়ଶ͕Ұҙʹܾ·Δ

Slide 12

Slide 12 text

ܕΛҙࣝ͢Δ view : Model -> Html Msg
 view model =
 div []
 [ input [ onInput UpdateIncr ] []
 , button [ onClick Increment ] [ text "増加" ]
 , div [] [text <| toString model.count]
 ] ModelҎ֎ͷঢ়ଶม਺͸ແ͍

Slide 13

Slide 13 text

ࢀরಁաੑΛҙࣝ͢Δ • ೖྗͱग़ྗͷܕͰࢀরಁաੑΛҡ࣋ • ݱࡏ࣌ࠁऔಘͳͲ෭࡞༻ͷ͋Δؔ਺΋͋Δ • ಛผѻ͍͕ඞཁ • ίϯύΠϧ͕௨Ε͹ܕͷҧ͍ʹΑΔόά͕ແ ͍͜ͱ͕อূͰ͖Δ

Slide 14

Slide 14 text

Elmͷ࢖͍ॴ • ܕΛ͖ͬͪΓҙࣝͯ͠όάͷͳ͍ΞϓϦέʔγϣ ϯΛ࡞Δͱ͖ • ୈҰڃؔ਺ͷѻ͍Λ΋ͬͱચ࿅͍ͤͨ͞ͱ͖ • JavaScriptͰ΋ͬͱ៉ྷͳίʔυΛॻͨ͘Ί • ϥϑͳͷ΋͍͍͚Ͳɺͨ·ʹυMʹͳΓ͍ͨͱ͖

Slide 15

Slide 15 text

ElmΦεεϝͰ͢ɻ

Slide 16

Slide 16 text

͋Γ͕ͱ͏͍͟͝·ͨ͠