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
910
ElmでWebサービスを作るふわっとしたお話
NGK2017B(名古屋合同懇親会 2017忘年会) LT内容
youku_s
December 02, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
CDKのコードレビューを楽にするパッケージcdk-mentorを作ってみた/cdk-mentor
tomoki10
0
200
デジタルアイデンティティ技術 認可・ID連携・認証 応用 / 20250114-OIDF-J-EduWG-TechSWG
oidfj
2
610
Goで実践するBFP
hiroyaterui
1
120
Bring Your Own Container: When Containers Turn the Key to EDR Bypass/byoc-avtokyo2024
tkmru
0
840
テストを書かないためのテスト/ Tests for not writing tests
sinsoku
1
170
実践! ソフトウェアエンジニアリングの価値の計測 ── Effort、Output、Outcome、Impact
nomuson
0
2k
0→1事業こそPMは営業すべし / pmconf #落選お披露目 / PM should do sales in zero to one
roki_n_
PRO
1
1.1k
データ基盤におけるIaCの重要性とその運用
mtpooh
4
440
技術に触れたり、顔を出そう
maruto
1
150
コロプラのオンボーディングを採用から語りたい
colopl
5
950
AWS re:Invent 2024 recap in 20min / JAWSUG 千葉 2025.1.14
shimy
1
100
Accessibility Inspectorを活用した アプリのアクセシビリティ向上方法
hinakko
0
180
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
53
13k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
Producing Creativity
orderedlist
PRO
343
39k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
For a Future-Friendly Web
brad_frost
176
9.5k
Git: the NoSQL Database
bkeepers
PRO
427
64k
The Pragmatic Product Professional
lauravandoore
32
6.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Visualization
eitanlees
146
15k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
570
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ʹͳΔ·Ͱ੩؍͕ඞཁͦ͏