ブログを移行中です
Murga で公開していた記事を、このサイトに移行してみた。
↑ Murga 開設の2016年から2020年まで使用していたトップ画像。
はてなブログの記事は MovableType 形式の単一テキストファイルでエクスポートできる。執筆時は Markdown 形式で書いていて、このサイトのブログシステムは Markdown を変換して記事ページを生成している。なので、Markdown で書いたモノを HTML (MT) 形式で取得し、このブログのためにまた Markdown に変換するという、謎の変換処理が必要になっている。
まずはエクスポートした単一ファイルの状態で、
- 記事の区切り文字を調整し、
- 記事冒頭のメタデータ部分を Front Matter 形式に置換し、
- アフィ系のコードは除去し、
- 見出しレベルを
h1
からではなくh2
から始めたように置換し、
といったことをやっておく。
次に、単一ファイルを記事ごとの HTML ファイルに分割保存する。ちょっとした Node.js スクリプトを書いた。
そしたらファイルごとに rehype-remark を使って HTML から Markdown に変換する。最後に Markdown として書き出す時の remark-stringify は、本稿執筆時点の最新版 v9.0.0 だと Pedantic モードで扱ってくれないので、あえて一つ古いバージョンである v8.1.1 を使って、Pedantic モードで書き出してやる。自分は強調をアスタリスクではなくアンダースコアで書きたいので、Pedantic モードが必須である。
コレで Markdown 形式に戻せたのだが、色々と好みじゃないところが多いので、正規表現による置換を駆使してバグ取りしていく。リストの改行やネストの仕方だったり、テーブルやコードブロックの整形などだ。
コードブロックは、バッククォート3つの直後にプログラミング言語名を書いてシンタックスハイライトを効かせていたが、rehype-remark で変換した時に class
属性値で表現されていた言語名情報が欠落してしまった。ココは別途、HTML の時点で言語名情報を外出ししておき、Markdown 変換後に正規表現で置換できるようにしておく必要がありそうだ。Murga は文章が中心で、コードブロックが少なかったのでまだ手作業でなんとかなった。
正規表現による一括置換と全記事の目視確認で、あらかたの不備は修正したが、YouTube 動画や Instagram 投稿へのリンクが破損・欠落しているところがあったりするかも。
あと、画像をまだ移植できていなくて、MT 形式でエクスポートした時のまま、はてなフォトライフにアップロードしてある画像ファイルがそのまま表示されている。ココは今後、このリポジトリ内に画像ファイルを移して、はてなフォトライフへの依存をなくすつもり。
アフィ系のコードは全部除去したので、記事の中で書籍等の商品を紹介しているところには、広告コードを再掲載しようと思っている。その際は拙作の Affi Code Generator を使う予定。
しばらくはブログの移行作業で Blog 配下のページでバグがあるかも。何か問題を見つけたらお知らせください。メールよりは GitHub Issues をよく見ています。