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
0
160
OGPを使いたい
#stdout2020
uzimaru0000
December 13, 2020
Tweet
Share
More Decks by uzimaru0000
See All by uzimaru0000
git入門
uzimaru0000
1
320
Webフロントエンド入門
uzimaru0000
1
430
WebフロントエンジニアはOSの夢を見る
uzimaru0000
0
350
BrainFuckをつくった
uzimaru0000
0
460
Elmで作るCLI
uzimaru0000
0
130
Blogを作った話 -Zli x DeNA-
uzimaru0000
1
180
Compression Vue App
uzimaru0000
0
120
好きなライブラリ_OSS
uzimaru0000
0
220
Other Decks in Programming
See All in Programming
Refactor your code - refactor yourself
xosofox
1
260
テストケースの名前はどうつけるべきか?
orgachem
PRO
0
130
Symfony Mapper Component
soyuka
2
730
コンテナをたくさん詰め込んだシステムとランタイムの変化
makihiro
1
120
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
130
快速入門可觀測性
blueswen
0
340
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
1
560
17年周年のWebアプリケーションにTanStack Queryを導入する / Implementing TanStack Query in a 17th Anniversary Web Application
saitolume
0
250
ドメインイベント増えすぎ問題
h0r15h0
1
270
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
110
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
2
170
MCP with Cloudflare Workers
yusukebe
2
220
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Making Projects Easy
brettharned
116
5.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
How GitHub (no longer) Works
holman
311
140k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
The Language of Interfaces
destraynor
154
24k
GraphQLとの向き合い方2022年版
quramy
44
13k
Adopting Sorbet at Scale
ufuk
73
9.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
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の作り方の記事を書くから読んでね
ご清聴ありがとうございました