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
MDX with Next.js
Search
kazuhiro hara
April 24, 2019
Programming
450
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MDX with Next.js
新進気鋭のドキュメントフォーマット MDX をためす
kazuhiro hara
April 24, 2019
More Decks by kazuhiro hara
See All by kazuhiro hara
WebMCP ってなんですか?
karad
0
68
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
200
空間アプリ開発のフィードバックをCodexにするための抽象的なデザインツールの模索
karad
0
220
Exploring Abstract Design Tools to Turn Spatial App Feedback into Codex (En)
karad
0
77
visionOS 開発向けの MCP / Skills をつくり続けることで XR の探究と学習を最大化
karad
2
1.9k
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
310
Vapor を使って VisionPro とWebSocket 通信をしてみる
karad
0
420
slow types ってなんだろう?
karad
1
880
ほぼ日のハッカソン Team 1 発表資料
karad
0
590
Other Decks in Programming
See All in Programming
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
330
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
170
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
20
20k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.8k
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
530
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
450
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
180
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
480
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
430
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
120
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
330
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
5
1.3k
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
540
How to Ace a Technical Interview
jacobian
280
24k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
A Modern Web Designer's Workflow
chriscoyier
699
190k
Site-Speed That Sticks
csswizardry
13
1.5k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
380
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
Product Roadmaps are Hard
iamctodd
55
13k
Mind Mapping
helmedeiros
1
390
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