Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ElmでWebサービスを作るふわっとしたお話
Search
youku_s
December 02, 2017
Technology
1
980
ElmでWebサービスを作るふわっとしたお話
NGK2017B(名古屋合同懇親会 2017忘年会) LT内容
youku_s
December 02, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
AI Agent Agentic Workflow の可観測性 / Observability of AI Agent Agentic Workflow
yuzujoe
1
850
[PR] はじめてのデジタルアイデンティティという本を書きました
ritou
1
800
田舎で20年スクラム(後編):一個人が企業で長期戦アジャイルに挑む意味
chinmo
1
1.4k
次世代AIコーディング:OpenAI Codex の最新動向 進行スライド/nikkei-tech-talk-40
nikkei_engineer_recruiting
0
140
Eight Engineering Unit 紹介資料
sansan33
PRO
0
6.2k
ECS_EKS以外の選択肢_ROSA入門_.pdf
masakiokuda
1
130
純粋なイミュータブルモデルを設計してからイベントソーシングと組み合わせるDeciderの実践方法の紹介 /Introducing Decider Pattern with Event Sourcing
tomohisa
1
1k
Everything As Code
yosuke_ai
0
510
Claude Codeを使った情報整理術
knishioka
20
12k
AIエージェントを5分で一気におさらい!AIエージェント「構築」元年に備えよう
yakumo
1
150
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
520
Master Dataグループ紹介資料
sansan33
PRO
1
4.2k
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
270
Deep Space Network (abreviated)
tonyrice
0
34
The Invisible Side of Design
smashingmag
302
51k
Heart Work Chapter 1 - Part 1
lfama
PRO
4
35k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
110
Utilizing Notion as your number one productivity tool
mfonobong
2
200
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
64
Designing Powerful Visuals for Engaging Learning
tmiket
0
200
Test your architecture with Archunit
thirion
1
2.1k
Color Theory Basics | Prateek | Gurzu
gurzu
0
170
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
120
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Transcript
ElmͰWebαʔϏεΛ࡞Δ ;Θͬͱ͓ͨ͠
Θͨ͠Ͱ͢ • ฏຌͳϓϩάϥϚʔͰ͢ • TwitterIDɿyouku_s • झຯ • ͓ֆ͔͖ •
TRPG
Ϟνϕʔγϣϯ • ཁ͢Δͱɺ͕ࣗ༡ͿϚΠφʔͳTRPGγεςϜͷϓϨΠิॿ αʔϏε࡞Δͱ͕ࣗͤʹͳΔɻ • TRPGͬͯͳʹΑʁ • ͍ͷͰɺ͋ͱͰฉ͍ͯ
ElmͬͯԿ • ߴ࣭ͳϑϩϯτΤϯυ։ൃΛߦ͏͜ͱʹಛԽͨ͠ݴޠ • AltJS • ൚༻ݴޠͰͳ͍ • HaskellͷαϒηοτΈ͍ͨͳݴޠ༷Λ࣋ͭ •
ElmΞʔΩςΫνϟͰ͏͜ͱΛఆ͞Ε͍ͯΔ • ElmΛ͏ͳΒɺ͜ΕҎ֎ͳ͍ • ಠࣗͷvdom࣮ͱɺঢ়ଶભҠϑϨʔϜϫʔΫΛ͍࣋ͬͯΔ • ͞Βʹৄ͘͠ • ElmͲΜͳਓʹΦεεϝͰ͖ͳ͍͔ • https://qiita.com/arowM/items/dfb38d1c5f3dfde8b8bf
ͳͥElm͔ • ओʹڵຯ • ੲͪΐͬͱ͚͚ͩͬͯͨͲɺΞʔΩςΫνϟʹഁյతมߋ͕ೖͬͨޙ ͬͯͳ͔ͬͨ • ͜Μͳ͜ͱݴͬͯͨΒɺElmͷڧ͍ਓʹ͖ͨͨى͜͞Εͨ
ͳͥElm͔ɿͪΐͬͱ͚ͩਅ໘ʹ • vdomܥͷϑϨʔϜϫʔΫʹڵຯ͕͋ͬͨ • JSωΠςΟϒͩͱReact.jsɺVue.js͋ͨΓ͕ϝδϟʔʁ • Vue.jsΑ͘Βͳ͍ • Βͳ͍ͷʹؔͯ͠͠ͳ͚ΕͳΒͳ͍ •
React.jsScalajs-reactܦ༝Ͱগ͠৮ͬͨ͜ͱ͕͋Δ • ঢ়ଶભҠϑϨʔϜϫʔΫͱ๊͖߹ΘͤΔඞཁ͕͋Δ • Reduxͱ͔ • ͪΐͬͱΊΜͲ͏͍͘͞
ͳͥElm͔ɿͪΐͬͱ͚ͩਅ໘ʹ • ͦͦɺJSΛͳΔ͘ੜͰॻ͖ͨ͘ͳ͍ • AltJS͏ػӡ • TypeScriptɿతσʔλܕ͕ͳ͍ͷͰ͍ͩ • HaxeɿۀͰे৮͔ͬͨΒ͍͍ •
Scala.jsɿे৮͔ͬͨΒ͍͍ • ElmɿਪΞʔΩςΫνϟʹΕvdomঢ়ଶભҠϑϨʔϜϫʔΫαϙʔτ ͞Ε͍ͯΔɺܕڧ͍ • ͳʹΑΓɺࢲͷܦݧ͕·ͩগͳ͍
γεςϜߏ • AWSΛͬͨαʔόʔϨεΞʔΩςΫνϟ • ؒҧ͍ͬͯͨΒ͝ΊΜͳ͍͞ Amazon CloudFront Amazon Route 53
Amazon API Gateway Amazon S3 ʢHTML+JS+ը૾ͳͲʣ AWS Lambda Amazon DynamoDB
γεςϜߏ • Lambda͍͔͚ͨͬͨͩ • ΠϯελϯεΛཱͯͯαʔϏε࡞ͬͨΒ௧͍Λݟ͍ͯΔ • ࡒ͕ • ಛʹRDSߴ͍ •
কདྷతʹͦΕLambda+DynamoDBʹҠߦΛݕ౼͍ͯ͠Δ
ElmͲ͏ͩͬͨʁɿྑ͍ • ܕ͕ڧ͍ͷخ͍͠ • ϨϯμϦϯά͕ૣ͍ʁ • http://elm-lang.org/blog/blazing-fast-html-round-two (ͪΐͬͱݹ͍) • ঢ়ଶͱΠϕϯτͷΈ߹ΘͤΛ൱Ԡͳ͘ߟ͑ͤ͞ΒΕΔ
• ߟྀ࿙Ε͕ݮΔ • ҎલͷElmͱൺͯ • ੜJSͱͷ࿈ܞָ͕ʹͳ͍ͬͯΔ • ඇಉظॲཧɺ෭࡞༻ΛؚΉॲཧͷΓग़ָ͕͠ʹͳ͍ͬͯΔ • 2byteจࣈͷѻ্͍͕ख͘ͳ͍ͬͯΔ
ElmͲ͏ͩͬͨʁɿѱ͍ • JSONΛऔΓѻ͏ͷ͕ͭΒ͍ • Elm to JSONɺJSON to ElmͱʹඇৗʹࢁίʔυΛॻ͔͞ΕΔ •
json4sΈ͍ͨͳͷ͕΄͍͠ • ϦϑϨΫγϣϯͳ͍͠ɺPure ElmͰͨͿΜແཧͦ͏ʁ • ग़ྗ͞ΕΔJSͷαΠζ͕େ͖͍ • ࠓճͷΞϓϦέʔγϣϯͩͱɺminifyͯ͠400kb↑ • CloudFront͍ͬͯΔͷओʹ͍͕ͭ͜ݪҼ • View͕ϓϩάϥϚҎ֎ʹಡΊͳ͍/ॻ͚ͳ͍ • σβΠφͱڠۀ͢ΔʹɺhtmlϥΠΫͳςϯϓϨʔτΛElmͷViewʹม͢Δͷ͕ඞཁͦ ͏
ElmͲ͏ͩͬͨʁɿͦͷଞ • ݴޠͷඪ४ػೳ͕খ͍͞ • ඞཁͳΒɺެࣜɾ3rd PartyͷύοέʔδΛೖΕ֦ͯு͍ͯ͘͠ • Θͳ͍ػೳΛল͍ͯɺJSͷαΠζΛখ͘͢͞ΔͨΊͷઓུʁ • ͜ͷ͋ͨΓɺAltJSͩͱHaxe͕ڧ͍ҹ͕͋Δ
• ͰɺListMaybeʹflatMap͕ͳ͍ͷΓա͗Ͱ
ײ • ָ͔ͬͨ͠ • ֶशίετߴ͍ • μΠΞϩάɺλϒͳͲগ͠ڽͬͨίϯϙʔωϯτΛ͏ͳΒɺεΫϥονͰॻ͚ Δఔͷ࣮ྗ͕ͳ͍ͱͭΒ͍ • ElmΞʔΩςΫνϟΛ֮͑ΔͷɺҰ͔ΒReact.js࢝ΊΔͷͱ͍ͨͯ͠มΘΒͳ
͍ؾ͢Δ • Haskellͷॻ͖ํΕ͚ͨΕͲɺಛʹͳ͘ॻ͚·ͨ͠ • ݱঢ়ͰͦΕͳΓʹ͑ͦ͏ʁʁʁ • աڈʹഁյతมߋΒ͔͍ͯ͠ΔͷͰɺv1.0ʹͳΔ·Ͱ੩؍͕ඞཁͦ͏