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
940
ElmでWebサービスを作るふわっとしたお話
NGK2017B(名古屋合同懇親会 2017忘年会) LT内容
youku_s
December 02, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
第9回情シス転職ミートアップ_テックタッチ株式会社
forester3003
0
120
LinkX_GitHubを基点にした_AI時代のプロジェクトマネジメント.pdf
iotcomjpadmin
0
160
本部長の代わりに提案書レビュー! KDDI営業が毎日使うAIエージェント「A-BOSS」開発秘話
minorun365
PRO
14
2.3k
AWS CDK 実践的アプローチ N選 / aws-cdk-practical-approaches
gotok365
4
460
強化されたAmazon Location Serviceによる新機能と開発者体験
dayjournal
2
150
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
140
Workflows から Agents へ ~ 生成 AI アプリの成長過程とアプローチ~
belongadmin
3
170
IAMのマニアックな話 2025を執筆して、 見えてきたAWSアカウント管理の現在
nrinetcom
PRO
4
650
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
2
180
VCpp Link and Library - C++ breaktime 2025 Summer
harukasao
0
220
Definition of Done
kawaguti
PRO
6
450
Agentic Workflowという選択肢を考える
tkikuchi1002
1
340
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
The Cost Of JavaScript in 2023
addyosmani
51
8.4k
GitHub's CSS Performance
jonrohan
1031
460k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
Code Reviewing Like a Champion
maltzj
524
40k
BBQ
matthewcrist
89
9.7k
The Invisible Side of Design
smashingmag
299
51k
Visualization
eitanlees
146
16k
Building Adaptive Systems
keathley
43
2.6k
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ʹͳΔ·Ͱ੩؍͕ඞཁͦ͏