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
810
ElmでWebサービスを作るふわっとしたお話
NGK2017B(名古屋合同懇親会 2017忘年会) LT内容
youku_s
December 02, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
強みを伸ばすキャリアデザイン
yug1224
0
200
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
3
230
マルチアカウント環境への発見的統制の導入
ch1aki
1
1.3k
WebアプリケーションにおけるPDOの使い方入門 / phpcon odawara 2024
meihei3
2
430
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
14
35k
ChatGPT for IT Service Management (IT Pro)
dahatake
2
130
ユーザーストーリーのレビューを自動化したみたの
bun913
1
310
Garoon 開発チーム / Garoon development team
cybozuinsideout
PRO
2
2.9k
SREとその組織類型
tatsuo48
8
1.5k
オーナーシップを持つ領域を明確にする
konifar
11
2.3k
AWS を使う上で知っておきたいオンプレミス知識/aws-on-premise-essentials
emiki
1
4.2k
NLP2024 参加報告LT ~RAGの生成評価と懇親戦略~ / nlp2024_attendee_presentation_LT_masuda
taro_masuda
1
200
Featured
See All Featured
Building Effective Engineering Teams - LeadDev
addyosmani
27
1.8k
Designing the Hi-DPI Web
ddemaree
276
33k
Gamification - CAS2011
davidbonilla
76
4.6k
In The Pink: A Labor of Love
frogandcode
138
21k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
15
1.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
Testing 201, or: Great Expectations
jmmastey
27
6.3k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
KATA
mclloyd
14
12k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
20
1.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
124
32k
It's Worth the Effort
3n
180
27k
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ʹͳΔ·Ͱ੩؍͕ඞཁͦ͏