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
370
yarnの話.pdf
kaminchu
1
200
React勉強会.pdf
kaminchu
0
370
ルーターの選び方その2.pdf
kaminchu
0
870
ルーターの選び方
kaminchu
0
1.3k
NDS56.pdf
kaminchu
0
150
nds54
kaminchu
0
270
internet
kaminchu
0
3.1k
Other Decks in Programming
See All in Programming
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
150
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
440
Go 1.27 における memory allocation の高速化
andpad
0
170
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
870
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
270
源内ハンズオン概要編
hideg
0
170
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
400
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
240
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
170
SlackアプリとLambdaの 連携を構築した話
pawn_4_s
1
120
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
360
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.6k
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Discover your Explorer Soul
emna__ayadi
2
1.3k
The Cult of Friendly URLs
andyhume
79
7k
Code Review Best Practice
trishagee
74
20k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
Marketing to machines
jonoalderson
1
5.7k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
How to make the Groovebox
asonas
2
2.3k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
960
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
370
New Earth Scene 8
popppiees
3
2.5k
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