Blog

Takahiko Wada (Twitter, GitHub)
Software engineer / Tokyo.

はてなブログをGatsbyに移行してみた

May 06, 2020

今まで使っていたはてなブログを Gatsby に移行しました。

移行する過程で、はてなブログのエクスポートファイルを Gatsby 用の markdown に変換スクリプトも作ったので紹介したいと思います。

スクリプトはこちら → hatena-gatsby-converter on GitHub

はてなブログのエクスポート形式と Gatsby の markdown 形式

https://help.hatenablog.com/entry/export からエクスポートできます。

エクスポートされたファイルの形式は MT(MovableType)形式というようです。

はてなブログのエクスポートファイル

AUTHOR: wasan
TITLE: お正月に向けて、かるた読み上げアプリを作ってみた
BASENAME: 2019/12/31/072355
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 0
DATE: 12/31/2019 07:23:55
CATEGORY: 作ってみたモノ
-----
BODY:
<h1>かるたの読み手をアプリにやってもらうようにしました。</h1>

<p>今回もReact Native + Expoです。<br/>
Speech <a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>便利〜!</p>

<h2>きっかけ</h2>
...

はじめにタイトルや日付などのヘッダ情報があり、その後に本文が HTML 形式で格納されています。

それを Gatsby 用の markdown に変換していきます。

Gatsby の markdown はこんな形式です。

Gatsby の markdown ファイル

---
title: "お正月に向けて、かるた読み上げアプリを作ってみた"
date: "2019-12-31T07:23:55+09:00"
tags: ["作ってみたモノ"]
---
# かるたの読み手をアプリにやってもらうようにしました。

今回もReact Native + Expoです。
Speech [API](http://d.hatena.ne.jp/keyword/API)便利〜!

MT 形式と似ていますが、本文の部分が HTML ⇔   markdown というのが大きな違いになります。

  • ヘッダ情報は正規表現で抜き取り
  • HTML 部分は HTML→markdown への変換ライブラリを利用

で変換することにしました。

スクリプト

そして出来たスクリプトがこちら。
hatena-gatsby-converter on GitHub

HTML→markdown の変換は turndownというライブラリを利用しました。

var markdown = turndownService.turndown('<h1>Hello world!</h1>')

のような感じで一発で変換できます。

画像もそのまま表示されました。
元画像へのリンクはそのままですが、はてなブログを生かしておけば引き続き表示できそうです。

fc2 ブログもインポート

あと MT 形式はブログでは割と一般的らしく、過去に使っていた fc2 ブログも MT 形式でした。

若干の方言があり少し改修が必要でしたが、fc2 ブログの記事も Gatsby 用に変換できました。

2004 年から記事があり、もはや黒歴史でしかないのですが、、、
せっかくなので Gatsby にまとめていこうと思い、全てインポートしました。

まとめ

ブログサービスは無数にあってどれを使うか悩ましいけど

  • 無料(Netlify 利用)
  • 広告なし

はよいですね。

多少エンジニア的な知識は必要ですが、勉強にもなるし。

Gatsby 自体はまだまだカスタマイズの余地がありますが、可能性が無限大で面白そう。

細々と書いていきたいと思います。


Archives
2020 2019 2018 2017 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004