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
440
開発のアジリティ向上のためのシステムリプレイス ~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
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
220
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
sbt 2.0: takeoff
eed3si9n
0
120
最近”作らせてる” ローカルAIアプリの話
akit37
0
440
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
200
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
360
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
110
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
200
mrbgem 三角測量 開発
ogom
0
230
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
240
残高管理から台帳サービスへの進化
artoy
0
180
APNsからLive Activityを開始する話
yumnumm
0
160
Featured
See All Featured
New Earth Scene 8
popppiees
4
2.7k
The browser strikes back
jonoalderson
0
1.8k
The Language of Interfaces
destraynor
162
27k
Test your architecture with Archunit
thirion
2
2.4k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
750
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
350
Designing Powerful Visuals for Engaging Learning
tmiket
1
600
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
790
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.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