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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
360
ルーターの選び方その2.pdf
kaminchu
0
850
ルーターの選び方
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
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
220
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
110
Claspは野良GASの夢をみるか
takter00
0
170
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
17
6.1k
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.3k
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
150
Oxlintのカスタムルールの現況
syumai
6
1k
JavaDoc 再入門
nagise
0
290
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
320
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
3.1k
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
110
Webフレームワークの ベンチマークについて
yusukebe
0
140
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
360
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
We Have a Design System, Now What?
morganepeng
55
8.2k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.3k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
460
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Color Theory Basics | Prateek | Gurzu
gurzu
0
350
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
150
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
400
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