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
MDX with Next.js
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kazuhiro hara
April 24, 2019
Programming
430
1
Share
MDX with Next.js
新進気鋭のドキュメントフォーマット MDX をためす
kazuhiro hara
April 24, 2019
More Decks by kazuhiro hara
See All by kazuhiro hara
visionOS 開発向けの MCP / Skills をつくり続けることで XR の探究と学習を最大化
karad
1
1.4k
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
200
Vapor を使って VisionPro とWebSocket 通信をしてみる
karad
0
300
slow types ってなんだろう?
karad
1
780
ほぼ日のハッカソン Team 1 発表資料
karad
0
490
Dist.43.英語仕事で地味につかうChatGPT 配布版
karad
0
800
VisionOS 向けアプリをつくってみる - よりひろいフロントエンド
karad
0
200
スマートコントラクト入門
karad
0
160
Servo Embed 入門
karad
1
1.1k
Other Decks in Programming
See All in Programming
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
270
ファインチューニングせずメインコンペを解く方法
pokutuna
0
250
Java 21/25 Virtual Threads 소개
debop
0
320
「速くなった気がする」をデータで疑う
senleaf24
0
130
モダンOBSプラグイン開発
umireon
0
190
The free-lunch guide to idea circularity
hollycummins
0
400
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
3
2.7k
Geminiをパートナーに神社DXシステムを個人開発した話(いなめぐDX 開発振り返り)
fujiba
0
130
存在論的プログラミング: 時間と存在を記述する
koriym
5
760
Rethinking API Platform Filters
vinceamstoutz
0
5.5k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
1.3k
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
780
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
210
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
700
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
140
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
320
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
370
Building Applications with DynamoDB
mza
96
7k
Balancing Empowerment & Direction
lara
5
1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
990
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
170
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
190
Transcript
MDX with Next.js MDX を本番環境に導入するまで 2019/04/24 React LT 会
KAZUHIRO HARA @kara_d
https://kansock.industries KAZUHIRO HARA 原 一浩 (@kara_d) ビッグデータの観測・ビジュアライズ および、複雑な
UI デザインがメイン領域
もくじ 1. MDX とは何ですか ? 2. MDX を使うには ?
3. Next.js における導入事例 4. demo : KANSOCK.INDUSTRIES 5. MDX に移行する場合ハマりそうなところ a. front matter を使う b. レイアウトの適用 c. Syntax highlight の適用 d. React コンポーネントをどう書く? 6. MDX は何が変換されるのか ?
MDX とは何ですか ? • MDX ◦ https://mdxjs.com/ ◦ Markdown
for the component era • Markdown 文書に、JSX をシームレスに記述することができるフォーマット形式 ◦ 公開されている React コンポーネントや独自コンポーネントを使うことができる ◦ グラフやリッチコンテンツなど可能性は無限 ! • 拡張子は .mdx ( 設定次第で .md 形式でも使える ) • React やるマンにとっては至福のドキュメント形式 ◦ React やらないマンでも、コンポーネントを使うだけならそこまで専門的な知識は不要
MDX を使うには ? • 公式サイトにて、それぞれのプロダクトへの導入方法が掲載されている ◦ Next.js ◦ Gatsby ◦
Create React App ◦ React static ◦ Webpack ◦ Parcel ◦ X0 • VS Code のプラグインもあるよ ◦ https://marketplace.visualstudio.com/items?itemName=silvenon.mdx
Next.js における導入事例 https://kansock.industries/ では、Next.js を Siatic Site Generator として使っていて、そ の中で
MDX による記述を可能にしている --- title: "全面的に MDX に移行しました" ... --- import { MdxArticle } from '../../../components/layouts/mdxArticle' export default ({ children }) => <MdxArticle>{children}</MdxArticle> # タイトル MDX 表示テストです
demo https://kansock.industries/
MDX に移行する場合ハマりそうなところ • Front matter を使う • レイアウトの適用 • Syntax
highlight の適用 • React コンポーネントをどう書く?
Front matter について Front matter は、ページ固有の情報を記載する変数 next-mdx-frontmatter が便利
--- title: "Example Page" ogp_url: "/ogp_url" --- module.exports = withTypescript( withMdxFm( withSass({ ... })));
レイアウトについて Front matter 的な情報を定義した上で、レイアウトを指定することもできる Markdown は子コンポーネントになる 例えば title や ogp_url
という変数を使える import { MdxArticle } from '../../../components/layouts/mdxArticle' export default ({ children }) => <MdxArticle title={title} date={date} ogp_url={path} ogp_image={ogpImage} ogp_description={ogpDescription} model={this.props.model}>{children}</MdxArticle>
Syntax highlighting について Bulma と Prism が相性悪いので、 highlight.js (rehype-highlight) を使っている
(next.config.js) const rehypeHighlight = require('rehype-highlight'); const withMDX = require('@next/mdx')() const withMdxFm = require('next-mdx-frontmatter')({ MDXOptions: { hastPlugins: [ rehypeHighlight ] } })
MDX で使えるコンポーネント形式 いろいろなスタイルで書ける ( React パッケージは import 済み )
export const TestComponent = function (props) { return (<h1>{props.name} COMPONENT 1</h1>) } export const TestComponent2 = (props) => <h1>{props.name} COMPONENT 2</h1> export class TestComponent3 extends React.Component { render() { return (<h1>{this.props.name} COMPONENT TEST 3</h1>) } }
MDX は何が変換されるのか ? https://mdxjs.com/advanced/ast によれば、以下が AST の Node Type になっている
• jsx (instead of html) • comment (instead of html comments) • import • export
まとめ • MDX を使うと、Markdown に React コンポーネントを書いたり、 定義したりできる • 柔軟なレイアウト、Front
matter、Syntax highlighting もバッチリ • UI スケッチや UI ドキュメントにぜひ!
END KAZUHIRO HARA @kara_d React / React Native /
React 360 / Next.js / MDX でお困りの方、お気軽にご相談ください https://kansock.industries