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
Web_アプリ_勉強会_FE_BE_.pdf
Search
kaminchu
March 19, 2019
Programming
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Web_アプリ_勉強会_FE_BE_.pdf
kaminchu
March 19, 2019
More Decks by kaminchu
See All by kaminchu
jawsug_niigata_20220115
kaminchu
0
380
yarnの話.pdf
kaminchu
1
210
React勉強会.pdf
kaminchu
0
370
ルーターの選び方その2.pdf
kaminchu
0
880
ルーターの選び方
kaminchu
0
1.3k
NDS56.pdf
kaminchu
0
160
nds54
kaminchu
0
280
internet
kaminchu
0
3.1k
Other Decks in Programming
See All in Programming
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
870
業務時間外もAIに働いてもらう話
colorful12
3
10k
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
270
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
190
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
6
2.5k
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
110
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
130
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
120
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
570
Press start. Python's next generation.
willingc
PRO
3
310
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
170
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.3k
Featured
See All Featured
A designer walks into a library…
pauljervisheath
211
25k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.5k
Technical Leadership for Architectural Decision Making
baasie
3
560
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Visualization
eitanlees
152
17k
Building AI with AI
inesmontani
PRO
1
1.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
A better future with KSS
kneath
240
18k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
260
Speed Design
sergeychernyshev
33
2.1k
Transcript
React のSSR をAWS Lambda 上の Express でServerlessFramework 使っ て簡単に(?) 実装できた話
Web アプリ 勉強会(FE/BE) in Prototype-cafe Vol.1 (2019/03/19 ) 1
⾃⼰紹介 Twitter: @kam1nchu 職種: フロントエンドエンジニア ⾔語: JavaScript, Java 最近: AWS
ばかり触ってます 2
みなさんSSR してますか? 3
4
ではなくて 5
サーバーサイドレンダリング(SSR) とは 少なくとも私たちWeb デベロッパーのここ数年の⽂脈においては、 「( 元々ブラウザ上でしか動かなかった)JavaScript をサーバー内部で実 ⾏して、HTML を⽣成すること」を指します。 出典:
ユーザー体験を向上させるサーバーサイドレンダリング JavaScript — 歴史と利点 6
サーバーサイドレンダリング(SSR) とは 今まで SPA などでは、bundle されたjs をロードし終わるまで、ブラウザに view が表⽰されなかった。 SSR
使うと 事前にある程度レンダリングしたHTML を返しておくことで、初期表 ⽰にかかる時間を短縮できる。 7
でもSSR って結構⼤変? 8
結構簡単( サーバー) react-dom/server の renderToString などが、component から⽂字列を くので、それをExpress でresponse.send すればサーバ側はおしまい。
import * as Express from "express"; import * as React from 'react'; import { renderToString } from 'react-dom/server'; import Component from "component"; const app = Express(); app.get("/", function (req, res) { res.send(renderToString(<Component/>)); }); // ... 9
結構簡単( クライアント) サーバ側のレンダリングだけだと、React のsetState などのjs 使った処 理ができないので、クライアント側もロードさせる。 ※サーバ側でレンダリングされたDOM が再利⽤される import
* as React from 'react'; import * as ReactDOM from 'react-dom'; import Component from "component"; ReactDOM.hydrate( <Component/>, document.getElementById('root') ); // ... 10
え、Express を使うの 11
Express ダルい... js 動かすので、少なくともnodejs は必要 nodejs って管理が結構⼤変 12
AWS Lambda 13
Express on Lambda aws-serverless-express や serverless-http を使うと割と難なく⾏ける import serverless from
"serverless-http"; import * as Express from "express"; const app = Express(); app.get("/", function (req, res) { res.send("hello"); }); exports.handler =serverless(app); 14
Lambda 使うメリット フルマネージドなので管理いらず ~~( いらないとは⾔っていない)~~ Lambda はとてもスケールできる CloudFront やRoute53 など活⽤できる
15
AWS のデプロイって⼤変では? 16
AWS のデプロイ ServerlessFramework 使えば、とても簡単にデプロイできる plugins: - serverless-webpack provider: name: aws
runtime: nodejs8.10 functions: app: handler: app.handler events: - http: method: ANY path: "{proxy+}" 17
他いろいろ TypeScript 使うととても捗る(serverless のテンプレートあります) react-router 使うと、クライアントとサーバのルーティングが共通 化できて便利 その時はExpress で app.get("*",
() => {}) するといい API-Gateway のステージには注意( パスを上⼿に書かないと詰む) Redis やmemcached でレンダリング結果をキャッシュすることもで きるらしい 18
時間があったらデモ 19
おわり 20