MDX と Markdownについて
先日、このサイトではないところでAstroを使用した。そこでたまたま記事を書く形式として .mdx を採用したら、思ったよりも快適だった。
通常、僕は .md を使用している。2020年過ぎにObsidianが流行った時期があるのだが1当然、これは古参マウントである、その時にMarkdownを知って書きやすさに惹かれた。数日もすればただのテキストなのに頭のなかのsyntaxが自動でパースして構造化するようになり、便利なものだと驚嘆した。
さて、最初にJekyllでこのサイトを作ったときには .md で記事を管理していた。これはJekyllが .md ファイルの上の YAML の Front matter でメタデータを書き、その下にコンテンツを書いていくという管理方法だったからだ。このときはまだ自分がビルドやSSGについてよくわかっておらず、 .md 以外の選択肢があることすら意識していなかった。
途中でAstroに切り替えた時も、まだ .md で書いていた。Astroの公式サイトの解説を見ながら移行したのだが、このときに .mdx を知った。が、僕は .md を使い続けた。これは主にJekyll時代に書いた .md のファイルをそのまま持ってこられることが理由だ。記事のファイルをいちいち直していくのは骨が折れる作業になるだろう。ほか部分の移行は思ったよりすんなりとできたが、余計な作業は増やしたくなかった。
そして今に至る。
現在の話をしよう。僕は .mdx を好ましく思っている。
まず、視覚的に新しい表現をしたい場合にわざわざプラグインを書く必要がない。今まで何かしたい場合は mdast や hast をいじるプラグインを書いてきた。別にプラグインを書くのは難しいわけではないが、同じものを JSX のコンポーネントで書けるなら、頭を使う必要は全くなくなり楽に追加できる。
さらに、Props で記事ごとに挙動を変えられるのでプラグインより柔軟だ。
しかしこれだけの恩恵があっても、なお移行に踏み切れない。
一番大きな理由は .md のほうが将来性があると思っているということだ。 .md は様々な場所でサポートされている一方、 .mdx は Next.js か Astro でしか聞いたことがない。調べたら他にもいくつかの場所でサポートされているらしいが、 .md より広まっていないのは事実だろう。Astroから別のフレームワークに移行する場合のコストが .md のほうが低く済む。フレームワークに依存する部分が大きいのは何か嫌だし。 .mdx はコンポーネントを import してくる以上、僕がどうにか変なものを書いて解決するのも難しい気がする。
そもそも .mdx を使うような、つまり標準のMarkdown以外を使うような投稿をどれくらいするのだろうか(いや、しない)という問題もあるし、今のところは .md のまま書き続けるつもりだ。
Footnotes
-
当然、これは古参マウントである ↩
