
nisshi.devのMDX記法一覧
このページは実装したソースコードを元に Claude Code Agent Skills(Claude Opus 4.5)で自動生成し、著者(nisshi-dev)がレビュー・修正して公開しています。
nisshi.devのブログは、MDX記法でコンテンツを執筆しています。 fumadocs-mdx v14.2.4をベースに、いくつか独自コンポーネントを追加しています。
本ページでは、使用可能なMDX記法とコンポーネントを紹介します。
基本的なMarkdown構文
見出し
## 見出し2
### 見出し3
#### 見出し4テキスト装飾
**太字テキスト**
*斜体テキスト*
~~取り消し線~~
`インラインコード`太字テキスト、斜体テキスト、取り消し線、インラインコード
リスト
- 箇条書き1
- 箇条書き2
- ネストした項目
1. 番号付きリスト1
2. 番号付きリスト2- 箇条書き1
- 箇条書き2
- ネストした項目
- 番号付きリスト1
- 番号付きリスト2
引用
> これは引用文です。
> 複数行にまたがることもできます。これは引用文です。 複数行にまたがることもできます。
リンク
外部リンクと内部リンクで表示が異なります。外部リンクには自動的にリンク先が外部サイトであることを示すマーク(↗)が付きます。
外部リンク
[Google](https://google.com)内部リンク
[ブログ一覧](/blog)コードブロック
基本
```js
console.log('Hello World');
```console.log('Hello World');ファイル名付き
titleオプションでファイル名を表示できます。
```typescript title="src/components/Button.tsx"
export function Button({ onClick }: { onClick: () => void }) {
return <button onClick={onClick}>Click me</button>;
}
```export function Button({ onClick }: { onClick: () => void }) {
return <button onClick={onClick}>Click me</button>;
}行番号
lineNumbersオプションで行番号を表示できます。開始行を指定することも可能です。
```js lineNumbers
function hello() {
console.log("Hello");
}
```
```js lineNumbers=10
// 10行目から開始
function world() {
console.log("World");
}
```function hello() {
console.log("Hello");
}// 10行目から開始
function world() {
console.log("World");
}行ハイライト
Shikiトランスフォーマーを使用して特定の行をハイライトできます。
```js
const highlighted = true;
const normal = true;
```const highlighted = true;
const normal = true;差分表示
追加・削除行を視覚的に表示できます。
```js
console.log("Hello");
console.log("World");
```console.log("Hello");
console.log("World"); シンタックスハイライト
def hello_world():
print("Hello, World!")
hello_world()npm install my-package{
"name": "my-project",
"version": "1.0.0"
}パッケージインストール
npm/yarn/pnpm/bunの切り替えタブ付きで表示します。
```package-install
my-package
```npm install fumadocs-uiTypeScript ⇔ JavaScript 変換
ts2jsオプションで切り替え表示できます。
```tsx ts2js
import { ReactNode } from 'react';
export default function Layout({ children }: { children: ReactNode }) {
return <div>{children}</div>;
}
```import { ReactNode } from 'react';
export default function Layout({ children }: { children: ReactNode }) {
return <div>{children}</div>;
}タブ付きコードブロック
tabオプションで複数コードをタブ表示できます。
```ts tab="TypeScript"
const message: string = "Hello";
```
```js tab="JavaScript"
const message = "Hello";
```const message: string = "Hello";Callout(注意書き)
:::type構文で注意書きブロックを作成できます。
| タイプ | 用途 |
|---|---|
info | 補足情報(デフォルト) |
warning / warn | 警告・注意事項 |
error | エラー・重要な警告 |
success | 成功・完了メッセージ |
idea | アイデア・ヒント |
タイトル付き
:::type[タイトル]構文でカスタムタイトルを設定できます。
:::info[補足情報]
これはカスタムタイトル付きの補足情報です。
:::
:::info
これは補足情報です。
:::
:::warning
これは警告メッセージです。
:::
:::error
これはエラーメッセージです。
:::
:::success
これは成功メッセージです。
:::
:::idea
これはアイデア・ヒントです。
:::補足情報
これはカスタムタイトル付きの補足情報です。
これは補足情報です。
これは警告メッセージです。
これはエラーメッセージです。
これは成功メッセージです。
これはアイデア・ヒントです。
Cards(カードリンク)
関連ページへのリンクをカード形式で表示します。
<Cards>
<Card title="Next.jsについて学ぶ" href="https://nextjs.org/docs" />
<Card title="Fumadocsについて学ぶ" href="https://fumadocs.dev" />
</Cards>説明付き
<Cards>
<Card href="https://nextjs.org/docs" title="データフェッチング">
Next.jsでのデータ取得方法について学びます
</Card>
<Card title="hrefは省略可能">
リンクなしの説明カードも作れます
</Card>
</Cards>データフェッチング
Next.jsでのデータ取得方法について学びます
hrefは省略可能
リンクなしの説明カードも作れます
Link Card(リンクプレビュー)
nisshi.dev独自実装
このコンポーネントはnisshi.devで独自に実装したものです。OGP情報を自動取得してリンクカードを表示します。
URLを単独行に書くと、自動的にOGP付きリンクカードになります。
https://nextjs.org
https://fumadocs.dev
https://github.com/honojs/hono手動指定
LinkCardコンポーネントで手動指定も可能です。
| Prop | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | ✅ | リンク先URL |
| title | string | - | タイトル(指定するとOGP取得をスキップ) |
| description | string | - | 説明文 |
| image | string | - | 画像URL |
<LinkCard
url="https://example.com"
title="サイトのタイトル"
description="サイトの説明文"
/>数式(KaTeX)
LaTeX記法で数式を書けます。
インライン
ピタゴラスの定理: $$c = \pm\sqrt{a^2 + b^2}$$ピタゴラスの定理:
ブロック
```math
E = mc^2
``````math
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
```メディア埋め込み
画像
nisshi.dev独自実装
画像はクリックで拡大表示できます。react-medium-image-zoomを採用しています。

Figure(キャプション付き画像)
nisshi.dev独自実装
このコンポーネントはnisshi.devで独自に実装したものです。
画像などにキャプションを付けるコンポーネントです。
| Prop | 型 | 必須 | 説明 |
|---|---|---|---|
| caption | string | ✅ | キャプション(説明文) |
| children | ReactNode | ✅ | 子要素(画像など) |
| className | string | - | カスタムクラス名 |
<Figure caption="イベント会場の様子">

</Figure>Video(動画)
nisshi.dev独自実装
このコンポーネントはnisshi.devで独自に実装したものです。WebM形式の場合、自動的にMP4フォールバックを追加します。media-chromeを採用しています。
動画プレイヤーコンポーネントです。
| Prop | 型 | 必須 | 説明 |
|---|---|---|---|
| src | string | ✅ | 動画のURL |
| fallbackSrc | string | - | フォールバック用動画URL |
| alt | string | - | 代替テキスト(アクセシビリティ用) |
| poster | string | - | ポスター画像URL |
| autoPlay | boolean | - | 自動再生(デフォルト: false) |
| loop | boolean | - | ループ再生(デフォルト: false) |
| muted | boolean | - | ミュート(デフォルト: false) |
| children | ReactNode | - | キャプション |
<Video src="/content/blog/example/video.webm" alt="デモ動画の再生画面">
動画の説明テキスト
</Video>Model3D(3Dモデル)
nisshi.dev独自実装
このコンポーネントはnisshi.devで独自に実装したものです。React Three FiberとDreiを採用しています。
GLB/GLTF形式の3Dモデルを表示します。OrbitControlsで回転・ズーム・パン操作が可能です。
| Prop | 型 | 必須 | 説明 |
|---|---|---|---|
| src | string | ✅ | モデルファイルのパス |
| alt | string | - | モデルの説明(アクセシビリティ用) |
| children | ReactNode | - | キャプション |
| height | string | number | - | ビューアーの高さ(デフォルト: "400px") |
| autoRotate | boolean | - | 自動回転(デフォルト: false) |
| autoRotateSpeed | number | - | 自動回転速度(デフォルト: 1.0) |
| scale | number | - | モデルのスケール(デフォルト: 1) |
<Model3D src="/models/robot.glb" alt="ロボットモデル" autoRotate>
3Dロボットモデル(ドラッグで回転、ホイールでズーム)
</Model3D>YouTube動画
nisshi.dev独自実装
このコンポーネントはnisshi.devで独自に実装したものです。@next/third-parties/googleを採用しています。
YouTubeのURLを単独行に書くと埋め込みプレーヤーになります。
https://www.youtube.com/watch?v=Vxtr-JzaePYX(Twitter)の投稿
nisshi.dev独自実装
このコンポーネントはnisshi.devで独自に実装したものです。react-tweetを採用しています。
XのポストURLで埋め込み表示されます。
https://x.com/nisshi_dev/status/1697919798217200076MediaGrid(メディアグリッド)
nisshi.dev独自実装
このコンポーネントはnisshi.devで独自に実装したものです。
メディア要素を横並びに配置するグリッドコンポーネントです。画像、Tweet、YouTube、LinkCardなど様々な要素に対応しています。
| Prop | 型 | 必須 | 説明 |
|---|---|---|---|
| cols / columns | 2 | 3 | 4 | - | 列数(デフォルト: 2) |
| gap | "sm" | "md" | "lg" | - | 要素間のギャップ(デフォルト: "md") |
| align | "start" | "center" | - | 垂直方向の配置(デフォルト: "start") |
| children | ReactNode | ✅ | 子要素 |
<MediaGrid cols={2}>


</MediaGrid>
<MediaGrid cols={3} gap="sm">



</MediaGrid>Figureと組み合わせ
<MediaGrid>
<Figure caption="リアル会場">

</Figure>
<Figure caption="VR会場">

</Figure>
</MediaGrid>Mermaid(ダイアグラム)
nisshi.dev独自実装
このコンポーネントはnisshi.devで独自に実装したものです。mermaidを採用しています。
Mermaid記法でフローチャートや図を描けます。
```mermaid
graph TD
A[開始] --> B{条件分岐}
B -->|Yes| C[処理A]
B -->|No| D[処理B]
C --> E[終了]
D --> E
```シーケンス図
テーブル
| 機能 | 説明 | 対応状況 |
|------|------|----------|
| MDX | Markdownの拡張構文 | ✅ |
| シンタックスハイライト | コードの色付け | ✅ |
| 数式 | KaTeX による数式表示 | ✅ || 機能 | 説明 | 対応状況 |
|---|---|---|
| MDX | Markdownの拡張構文 | ✅ |
| シンタックスハイライト | コードの色付け | ✅ |
| 数式 | KaTeX による数式表示 | ✅ |
Frontmatter(記事メタデータ)
各記事の先頭にメタデータを記述します。
---
title: 記事のタイトル
description: 記事の説明文(SEO・OGPに使用)
type: tech # tech または idea
topics: ["Next.js", "React"] # タグ
createdAt: 2025-01-01
published: true
featured: false # 注目記事
---参考
新しいコンポーネントが追加された際は、このページも随時更新していきます。 「このコンポーネントも追加したら?」などのアイデアがあれば、ぜひ下のコメント欄で教えてください!
VRが好きなWebエンジニア。WebXRやVR・機械加工などの技術が好きでものづくりしている。WebXR JPというコミュニティやWeb技術集会というVR空間内の技術イベントを運営中。
コメント
この記事についてのご意見・ご質問をお気軽にどうぞ