MDXの高度な使い方


MDXの基本を理解したら、より高度な機能を活用してコンテンツをさらに魅力的にできます。この記事では、MDXの応用テクニックを紹介します。

フロントマター活用

MDXファイルのフロントマターでメタデータを定義し、コンポーネント内で活用できます:

---
title: 高度なMDX
author: 山田太郎
tags: ['MDX', 'React', 'JavaScript']
---

export function Meta() {
  return (
    <div className="meta">
      <h1>{frontmatter.title}</h1>
      <p>作成者: {frontmatter.author}</p>
      <div className="tags">
        {frontmatter.tags.map(tag => (
          <span key={tag}>{tag}</span>
        ))}
      </div>
    </div>
  )
}

<Meta />

カスタムMDXコンポーネント

Markdownの標準要素をカスタムコンポーネントで上書きできます:

// MDXComponents.jsx
const MDXComponents = {
  h1: props => <h1 className="title" {...props} />,
  p: props => <p className="text-lg" {...props} />,
  code: props => <CodeBlock {...props} />
}

export default MDXComponents

インタラクティブな要素

MDXを使用して、インタラクティブな要素を記事に組み込めます:

import { useState } from 'react'

export function Counter() {
  const [count, setCount] = useState(0)
  return (
    <div>
      <p>カウント: {count}</p>
      <button onClick={() => setCount(c => c + 1)}>
        増やす
      </button>
    </div>
  )
}

# インタラクティブなデモ

以下のカウンターを試してみてください:

<Counter />

データの可視化

MDXは、データ可視化ライブラリとの相性も抜群です:

import { LineChart } from './Charts'

# アクセス解析

先月のアクセス統計です:

<LineChart 
  data={[
    { date: '2024-02-01', visits: 100 },
    { date: '2024-02-15', visits: 150 },
    { date: '2024-02-28', visits: 200 }
  ]}
/>

まとめ

MDXの高度な機能を活用することで、単なる文書以上の豊かなコンテンツを作成できます。インタラクティブな要素、データの可視化、カスタムコンポーネントなどを組み合わせることで、読者により良い体験を提供できます。