Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GatsbyJSで作った個人ブログの構成を色々見直してみた / Improve my pers...
Search
Kentaro Matsushita
March 27, 2021
Programming
480
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GatsbyJSで作った個人ブログの構成を色々見直してみた / Improve my personal blog made with GatsbyJS
Kanazawa.js Remote Meetup #11
https://kanazawajs.connpass.com/event/206416/
Kentaro Matsushita
March 27, 2021
More Decks by Kentaro Matsushita
See All by Kentaro Matsushita
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
1
430
開発のアジリティ向上のためのシステムリプレイス ~DMM GAMESの事例~
kentarom
0
880
Denoで簡単なCLIツールを作ってみる / Try to make a simple CLI tool with Deno
kentarom
0
1.1k
Webサイトパフォーマンスを継続的に計測したい!!! / I want to continuously measure my website performance!!!
kentarom
2
630
Actions ToolkitではじめるGitHub Action開発 / Getting started creating a GitHub Action with Actions Toolkit
kentarom
2
2.1k
GitHub Gistを使って、アクティビティを可視化しよう / Let's try visualizing your activity using the GitHub Gist
kentarom
1
920
OGP画像を生成するNode.jsのライブラリを作ってみた / Create a Node.js module for generating Open Graph image
kentarom
1
7.7k
チームをよしなにする立場を経験して学んだこと / Things I have learned in leading the team
kentarom
0
860
AWSの既存サービスを活用して、 障害検知・復旧を迅速化するカラクリ / JAWS-UG Kanazawa x OpsJAWS
kentarom
2
5k
Other Decks in Programming
See All in Programming
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
150
The Rails Doctrine Decade
koic
2
490
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.5k
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
150
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
440
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.4k
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
190
ジョジョの世界をXRで再現する
mofurune
0
100
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.1k
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
580
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
730
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
440
Featured
See All Featured
HDC tutorial
michielstock
2
940
30 Presentation Tips
portentint
PRO
1
420
The World Runs on Bad Software
bkeepers
PRO
72
12k
Utilizing Notion as your number one productivity tool
mfonobong
4
610
Un-Boring Meetings
codingconduct
0
440
We Have a Design System, Now What?
morganepeng
55
8.4k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
350
Exploring anti-patterns in Rails
aemeredith
4
520
KATA
mclloyd
PRO
35
16k
Docker and Python
trallard
47
4.2k
Transcript
GatsbyJSで作った個⼈ブログの構成 を⾊々⾒直してみた Kanazawa.js Meetup #11 2021.03.27 @_kentaro_m
⾃⼰紹介 @_kentaro_m ⾦沢市内のゲーム会社で働くWeb開発者 レガシーシステムを新しくする仕事を担当 最近触っている技術 Next.js / GraphQL / Kubernetes
/ Datadog
今⽇話すこと GatsbyJSで作った個⼈ブログのイマイチだと思う部分を改善 した点についてお話します。 blog.kentarom.com
抱えていた課題 ブログのビルド速度が遅い ブログ全体のスタイルに⼀貫性がない マークダウン出⼒のスタイル適⽤が⼒技
ブログのビルド速度が遅い Netlifyで4分30秒から5分00秒のビルド時間 OGP画像をNode Canvasで動的⽣成
ブログ全体のスタイルに⼀貫性なし フィーリングでマージンやフォントスタイルを指定 スタイル全体に⼀貫性がない状態 コンポーネントのカプセル化はされている CSS in JSライブラリのEmotionを利⽤ スタイル変更の影響はコンポーネントにとどまる
ブログ全体のスタイルに⼀貫性なし const BioWrapper = styled.div` display: block; ${mq[0]} { display:
flex; justify-content: center; } ` const AuthorLink = styled.a` font-size: 24px; margin-bottom: .2em; display: block; ` const DescriptionText = styled.p` font-size: 20px; display: block; margin: 0; `
マークダウンのスタイル適⽤が⼒技 マークダウンはRemarkプラグインでHTML出⼒ 出⼒されたHTMLにEmotionでCSSを適⽤ HTMLタグの描画でコンポーネントを利⽤したい 要素指定してCSSを直接定義したくない
マークダウンのスタイル適⽤が⼒技 <div className='blog-post' css={[postStyle]} dangerouslySetInnerHTML={{ __html: post.html }} /> const
postStyle = css` h2 { font-size: 28px; border: none; line-height: 1.5; } /* 省略 */ `
取り組んだ解決策 OGP画像⽣成の外部サービス利⽤ ブログビルドをGatsby Cloudに変更 GatsbyJS v3へのアップデート Chakra UIの導⼊ MDXの導⼊
OGP画像⽣成の外部サービス利⽤ Node Canvasの画像⽣成をやめた ビルドが遅くなるため Cloudinary の画像加⼯機能を利⽤ クラウドベースの画像管理サービス ベース画像に記事タイトルを動的追加
OGP画像⽣成の外部サービス利⽤ URLのパスパラメータの変更で画像⽣成を制御 記事タイトル フォントスタイル テキスト折返し https://res.cloudinary.com/johndoe/image/upload/c_ fit,l_text:fontname_64:${encodeURIComponent(title) },co_rgb:D6BCFA,w_1000,y_-100,w_1000/v1616667308/b ackground.png
OGP画像⽣成のサンプル画像
OGP画像⽣成のベース画像 ベース画像にテキストが追加される
ビルドをGatsby Cloudに変更 ビルドとホスティングはこれまでNetlifyを利⽤ ビルドはGatsby Cloud、ホスティングはVercelに変更 デプロイまでの時間が5分00秒から1分30秒に短縮
GatsbyJS v3のアップデート GatsbyJS v2からv3にアップデート 変更詳細を追っていないので、ビルド速度向上の直接的な 要因が確認できていない
Chakra UIの導⼊ ⼀貫性のあるスタイル適⽤のためにChakra UI導⼊ Chakra UIコンポーネントベースのレイアウトを⼼がけた レールからはずれるレイアウト適⽤は最⼩限
MDXの導⼊ マークダウン描画部分にコンポーネント適⽤のためにMDX導 ⼊ HTMLタグと描画させたいコンポーネントをマッピング 良い感じにスタイル適⽤ができる
MDXの導⼊ const components = { a: (props) => <Link {...props}>{props.children}</Link>,
p: ({ children }) => <Text mb={8} lineHeight='tall' >{children}</Text>, h2: ({ children }) => <Heading size='lg'>{children}</Heading>, ul: ({ children }) => <UnorderedList>{children}</UnorderedList>, li: ({ children }) => <ListItem mt={1} mb={1}>{children}</ListItem>, pre: (props) => <Box {...props} mb={8} />, code: (props) => <CodeBlock {...props} />, img: (props) => <Image {...props} mb={8} />, <MDXProvider components={components}> {data?.mdx?.body} </MDXProvider> }
MDXの応⽤ Gatsby Plugin MDX Embedでツイート埋め込み実現 ⾃作コンポーネントでSpeaker Deckの埋め込み実現 Speakerdeck の Embed
をコンポーネントにして、MDX に埋め込む - ARTICLES <Tweet tweetLink="yu_kgr/status/1264060189646286850" />
取り組んだ結果 ビルド⾼速化を実現 スタイルに⼀貫性が⽣まれた マークダウン出⼒でコンポーネント適⽤
ブログ執筆環境が快適になりました 次はブログを書くことを頑張ります。
付録:ソースコード github.com/kentaro-m/learn-something-new