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
uzimaru0000
December 13, 2020
Programming
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OGPを使いたい
#stdout2020
uzimaru0000
December 13, 2020
More Decks by uzimaru0000
See All by uzimaru0000
git入門
uzimaru0000
1
360
Webフロントエンド入門
uzimaru0000
1
460
WebフロントエンジニアはOSの夢を見る
uzimaru0000
0
370
BrainFuckをつくった
uzimaru0000
0
580
Elmで作るCLI
uzimaru0000
0
140
Blogを作った話 -Zli x DeNA-
uzimaru0000
1
210
Compression Vue App
uzimaru0000
0
130
好きなライブラリ_OSS
uzimaru0000
0
240
Other Decks in Programming
See All in Programming
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
14
6.6k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
630
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
2
550
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.2k
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
820
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
190
dRuby over BLE
makicamel
2
400
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
160
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
230
Vite+ Unified Toolchain for the Web
naokihaba
0
410
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.9k
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
140
Featured
See All Featured
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Color Theory Basics | Prateek | Gurzu
gurzu
0
380
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
360
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Raft: Consensus for Rubyists
vanstee
141
7.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
The Curse of the Amulet
leimatthew05
2
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
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の作り方の記事を書くから読んでね
ご清聴ありがとうございました