🌿 えふてぃブログ

MDXコンポーネントでブログ表現が上がった話


こんにちは、えふてぃです!

このブログはAstroで作っているんですが、
「Markdownだけだと表現の幅が狭いな…もっと自由に表現してぇー」という願望を実現すべく、AIと壁打ちした結果MDXコンポーネントを3つ追加してみました。

結果、記事の読みやすさが段違いに良くなったので、今回はその紹介をしていきますー!

📝 情報

📝 MDXとはなんぞや?

MDX = Markdown + JSX(コンポーネント)

普通のMarkdownとして書けるけど、その中でReactやAstroのコンポーネントも使えるという優れものです。Astroは標準でMDX対応しています!

🎯 なぜMDXコンポーネントを追加したのか

技術ブログを書いていて(まだ全然書いてないけど)、こんな課題を感じていました:

  • 会話形式の説明がしたい: 「Q: ○○ってなに? A: △△です」みたいなやつ。あれをやりたくなった。
  • 重要な情報を目立たせたい: 注意事項やヒントを視覚的に強調したい
  • 画像にキャプションを付けたい: スクリーンショットに説明を添えたい

Markdownだけだと自由な表現が難しそうだ…。

そこで、3つのカスタムコンポーネントを作りました!

💬 1. ChatBubble(チャット吹き出し)

会話形式で説明できるコンポーネントです。実際に使ってみますね:

👤

ChatBubbleってどんな時に使うんですか?

FAQや対話形式の説明に最適です!例えば「こういう質問がよくあるよね」っていう内容を会話形式で書くと、読者が理解しやすくなります。

🤖
👤

確かに!普通の文章より読みやすいですね。

でしょう?しかも、アイコンも変えられるんですよ!

🤖

カスタムアイコンも使える

🤔

アイコンを変えるとこんな感じになります

好きな絵文字で記事の雰囲気に合わせて調整できます。今度画像をこそっと使えるようにしておこう。

💡

使い方

MDXファイルに以下のように書くだけなのでかなりシンプル:

<ChatBubble type="user">
  質問内容をここに書きます
</ChatBubble>

<ChatBubble type="assistant">
  回答内容をここに書きます
</ChatBubble>

<!-- アイコンをカスタマイズする場合 -->
<ChatBubble type="user" icon="😊">
  好きな絵文字を指定できます
</ChatBubble>

📦 2. InfoBox(情報ボックス)

重要な情報を目立たせたい時に使用するコンポーネントです。

ヒント(tip)- 黄色

💡 ヒント

💡 読者に役立つヒントやテクニックを書く時に使います。このコンポーネントを使うと、重要なポイントが埋もれなくなりますよ!

注意(warning)- オレンジ

⚠️ 注意

⚠️ 「ここは注意が必要!」という内容を強調したい時に。読者が見落としがちな注意事項をしっかり伝えられます。

成功/メリット(success)- 緑

メリット

✅ メリットや成功のポイントを書く時に使います

✅ 箇条書きで複数のメリットを並べるのにも便利

✅ 視覚的にポジティブな印象を与えられます

危険/デメリット(danger)- 赤

デメリット

❌ デメリットや避けるべき行動を書く時に

❌ 「これをやるとダメ」という内容を強調できます

❌ セキュリティリスクなどの警告にも最適

情報(info)- 青

📝 情報

📝 補足情報や参考資料を書く時に使います。本文の流れを邪魔せずに、追加情報を提供できるのが便利ですね。

もちろんタイトルもカスタマイズできる

💡 プロのテクニック

デフォルトのタイトル(ヒント、注意など)を変更できます。より具体的なタイトルを付けることで、内容が伝わりやすくなります。

使い方

<!-- 基本的な使い方 -->
<InfoBox type="tip">
  ヒントの内容をここに書きます
</InfoBox>

<!-- タイトルをカスタマイズ -->
<InfoBox type="warning" title="重要なお知らせ">
  カスタムタイトルを付けられます
</InfoBox>

個人的な使い分けのコツ:

  • tip: 読者が「なるほど!」と思うような有益な情報
  • warning: ミスしやすいポイントや注意事項
  • success: メリット、成功事例、推奨事項
  • danger: デメリット、避けるべき行動、セキュリティ警告
  • info: 補足情報、参考資料、豆知識

🖼️ 3. ImageBox(キャプション付き画像)

画像に枠線とキャプションを付けて、見栄え良く表示できます。

中央配置(デフォルト)

可愛い犬の画像
これは中央配置された画像です。記事のメイン画像やスクリーンショットを大きく見せたい時に使います。

何も指定しないと、画像は中央に配置されます。メインビジュアルや大きく見せたい画像に最適です。

左寄せ

可愛い犬の画像
左寄せにした画像です。本文の流れに沿って画像を配置したい時に便利。

使い方

<!-- まず画像をインポート -->
import myImage from '../../assets/blog/sample.jpg';

<!-- 中央配置(デフォルト) -->
<ImageBox
  src={myImage}
  alt="画像の説明"
  caption="画像のキャプション"
/>

<!-- 左寄せ -->
<ImageBox
  src={myImage}
  alt="画像の説明"
  caption="左寄せの画像"
  align="left"
/>

<!-- 右寄せ -->
<ImageBox
  src={myImage}
  alt="画像の説明"
  caption="右寄せの画像"
  align="right"
/>

🎨 実際の記事で組み合わせて使う

これからの記事ではこれらのコンポーネントを組み合わせて使っていきます。

例えば1つ前に投稿した、Astroの使い方を説明する記事なら:

🤔

Astroでブログを作りたいんですが、どうやって始めればいいですか?

簡単です!公式テンプレートを使えば、すぐに始められますよ。

💻
💡 初心者向けアドバイス

初めてAstroを使う方は、公式のブログテンプレートから始めるのがおすすめです。必要な機能が最初から揃っているので、すぐに記事を書き始められます。

⚠️ 注意

⚠️ Node.js 18以上が必要です。node -vでバージョンを確認してください。

こんな感じで、会話形式で説明しつつ、重要なポイントをInfoBoxで強調して使っていきます。
ただ多用すると逆効果なので適度に使う予定です👍


📝 実装した時に意識したこと

工夫した点

シンプルなAPI: プロパティは必要最小限に抑えて、使いやすさを重視

視覚的な区別: 色やアイコンで一目で種類がわかるように

レスポンシブ対応: スマホでも見やすいように調整

ちょっとつまずいたポイント

❌ 画像の配置がうまくいかない → max-widthでPC・スマホのサイズ制限を追加してすぐに解決


まとめ

MDXコンポーネントを導入した効果

記事の可読性が大幅向上: 重要なポイントが埋もれなくなった

表現の幅が広がった: 会話形式、視覚的な強調など、表現方法が増えた

記事を書くのが楽しくなった: 「どうやって伝えようか」を考えるのが面白い

読者の反応が良くなった: わかりやすいと好評(予定)

MDXコンポーネントを追加したことで、記事の表現の幅が広がって、これからブログ書いていくのが楽しみになってきました〜!

ブログの感想や意見があれば、ぜひXで教えてください!

この記事をシェア: X はてブ