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
OGPを使いたい
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
uzimaru0000
December 13, 2020
Programming
0
170
OGPを使いたい
#stdout2020
uzimaru0000
December 13, 2020
Tweet
Share
More Decks by uzimaru0000
See All by uzimaru0000
git入門
uzimaru0000
1
350
Webフロントエンド入門
uzimaru0000
1
450
WebフロントエンジニアはOSの夢を見る
uzimaru0000
0
360
BrainFuckをつくった
uzimaru0000
0
550
Elmで作るCLI
uzimaru0000
0
140
Blogを作った話 -Zli x DeNA-
uzimaru0000
1
200
Compression Vue App
uzimaru0000
0
130
好きなライブラリ_OSS
uzimaru0000
0
230
Other Decks in Programming
See All in Programming
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
230
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.2k
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
高速開発のためのコード整理術
sutetotanuki
1
400
Architectural Extensions
denyspoltorak
0
290
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
140
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
430
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
730
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
Grafana:建立系統全知視角的捷徑
blueswen
0
330
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
Fireside Chat
paigeccino
41
3.8k
Mind Mapping
helmedeiros
PRO
0
81
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
310
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Making Projects Easy
brettharned
120
6.6k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
Transcript
OGPを使いたい うじまる
自己紹介 - B4 - うじまる - Webフロントエンド - TypeScript -
Elm - 最近Rustをやってます。 - Twitter - @uzimaru0000 - GitHub - @uzimaru0000
今回話すこと
OGPについて
OGPとは?
Open Graph protocol > Facebook、TwitterなどのSNS上でシェアされた時やシェアされたい時に、ページのタイ トル、URL、概要、画像(サムネイル)を正しく伝えるためにHTMLソースに記述するタグ 情報です。 こんな感じのやつ →
OGPの問題点
OGPの問題点 - Twitter, FacebookのクローラーはJSを解釈してくれない - JSを使って動的にmetaタグの変更をする場合は反映されない SPAだとOGPが使えない!!!!
解決策 - SSRをする - SSRをすればmetaタグをリクエストに応じて変えれる - 諦める - SPAで耐えうるコンテンツはクローラーを気にしてないよね☆
結論
SSRをする!
諦める!
おわり
SPAでもOGPを使いたい うじまる
解決策
metaタグの部分だけSSRする
metaタグの部分だけSSRする HTML 普通のSPA
metaタグの部分だけSSRする HTML 今回やったこと meta
使ったもの
使ったもの - vercel - デプロイ先 - 今回はFunctionsを利用 - ejs -
HTMLの生成に利用 - TypeScript - JavaScript?しらんな
vercel おなじみのホスティングサービス Next.jsを作ってる functionsという機能がある (FaaSみたいなやつ(というよりAWS LambdaのラップなのでFaaS)) これを使って部分的にSSRをする
ソースコード
ソースコード
ソースコード
これ毎回やるのめんどくない?
ejs使いたくなくない?
React使いたくない?
というわけで
Runtimeを作りました
None
Runtime?? - VercelのfunctionsはRuntimeというものがある - 公式で node, Go, python, ruby が出ている
- 準公式で deno, bash などがある - 一応自分でも作れる - なのでつくった
やったこと - tsxを投げるとそれをもとにSSRをしてくれるRuntimeを作成 - tsxをJSにcompile - compileされたJSを使って renderToStaticMarkup をする -
Responseのbodyにrenderした結果を返す これだけ!!
開発に使ったライブラリ等 - @vercel/build-utils - Runtimeを作るutilな関数が入ってるpackage - TooTallNate/vercel-dev-runtime - publishしないでもRuntimeを使えるようにするpackage 参考にしたもの
- TooTallNate/vercel-deno, importpw/vercel-bash - 上2つを使っているリポジトリ
詰んだところ - `vercel dev` コマンドで実行されない!!! - Runtimeから `shouldServe` をexportしましょう
詰んだところ - どのファイルが実行されるの!!! - `createLambda` で指定したもの
詰んだところ - 関数の引数には何が入ってくるの!!! - AWS Lambdaのhandlerに入ってくるものです - Lambdaのドキュメントを読みましょう
DEMO
使い方
まとめ - SPAでもOGPを扱える - vercelのRuntimeはAWS Lambdaなので そっちに詳しい人は作ってみると楽しいかも - Javaとかdotnetとかも使えるらしい -
公式ドキュメントはしっかり読みましょう - ずっとわからんって言ってた部分の8割はドキュメントに書いてた - あとでRuntimeの作り方の記事を書くから読んでね
ご清聴ありがとうございました