Transfer to Hatena blog

Tumblrからはてなブログに移行してみました。 細々とTumblrに不満があったので、とりあえず1ヶ月お試しにはてなブログをという感じです。 もし、はてなブログにも我慢できなくなったらGitHub+S3構成にしようかなと思います。

で、今回はブログ移行の話です。 単純にエクスポート・インポートでいければ良かったのですが、人力と気合とお金で行うことになりました。

  1. Tumblrの記事をエクスポート
  2. はてなブログに記事を移行
  3. 移行元のURLから301 Redirectで移行先のURLにリダイレクト

1. Tumblrの記事をエクスポート

まずは、Tumblrから記事をエクスポートしなければいけないのですが、Tumblr自体にはエクスポートする機能はありません。 そこでTumblr APIを使って記事をエクスポートする仕組みが必要になってきます。

今回はエクスポートする仕組みを探して見つけたsky-tumblr-exportというツールを使っています。

npm install -g sky-tumblr-export

npm経由でインストール後に

sky-tumblr-export -u blog.kinzal.net -d /tmp/tumblr --titles

-uにURLを-dにディレクトリを指定して実行します。

├── posts
│   └── 2015
│       └── 03
│           ├── document-generator-with-angularjs-application.md
│           └── whether-frp-is-type-or-is-it-pipeline.md
└── sky
    └── config.json

そうすると上記のようにposts/年/月/タイトル.mdという形でエクスポートされるので、このmdファイルをベースにはてなブログに移行用のデータを作っていきます。

2. はてなブログに記事を移行

エクスポートしたデータをそのまま、はてなブログにインポート! といければ良かったのですが、はてなブログではMovable Type形式でしかインポートに対応していません。

また、BloggerからTumblrに移行したときの記事がhtmlでmdファイルにベタ書きされていたり、コードブロックがバッククォートではなくスペース4つでエクスポートされていたりで、はてなでサポートされているマークダウン形式と微妙に噛み合っていなかったりします。 そこで、人力で気合を入れて、記事一件毎に整形をして、記事を投稿していきます。

主な移行対象は下記になります。

  • 記事タイトル
  • 記事本文
  • 投稿日時
  • カスタムURL
  • タグ

今回の移行作業にかかった時間の大部分はここで、だいたい70ちょっとの記事数でアニメ2クール分ぐらいの時間がかかりました。 自動化しても良かったのですが、変換規則を抜き出して、はてなブログAtomPub API使って投稿することを考えると、時間的にとんとんになるだろうと見込んで人力でやりました。(どうせ1回しか使わないですし)

ツラかった。

3. 移行元のURLから301 Redirectで移行先のURLにリダイレクト

ここまで来たら後は公開するだけ。と言いたいところですが、実はTumblrとはてなブログではURLの形式が違います。

Tumblr

http://独自ドメイン/posts/カスタムURL

はてなブログ

http://独自ドメイン/entry/カスタムURL

このまま公開してしまうと、既存記事へのリンクが全て全滅してしまう上に、コピペした記事としてSEOがまずいことになってしまうため、postsにアクセスした場合に301 Redirectでentryにリダイレクトする必要があります。

Tumblrにもはてなブログにもそういった機能はないので、どうしたものやらと思っていたら

CloudFlareにその機能がありました。

ただし、はてなブログの独自ドメイン機能ではCNAMEのレコードチェックがあるため、はてなブログではCloudFlareを使用することができません。 そこで、少し面倒臭いですが、

  1. はてなブログ用に新規ドメインを取得
  2. はてなブログで新規ドメインを独自ドメインに設定
  3. Tumblrで使用していた旧ドメインにPageRuleを追加
    • http://blog.kinzal.net/posts/* -> http://www.rpms.me/entry/$1
    • http://blog.kinzal.net -> http://www.rpms.me
  4. はてなブログを非公開から公開に変更
  5. 旧ドメインでCloudFlareを有効化

という手順を踏んで、無停止で移行できるようにしました。 新規ドメインで良さそうなのが残っていたので助かりました。

おわりに

という訳で、無事移行完了しました。

デザイン的にも前と同じシングルカラムレイアウトで、ほぼ似たようなデザインになっています。 あとはもう少し運用してみてBounce RateとTime on Pageがどう変わるかみて、いろいろと変えて行こうかなと思います。

個人的にはてなブログに書き換えて良かったなと思うのは、コードブロックで言語指定できるところが良いですね。 PHPのコードブロックが<?phpを入れないと有効にならないのはあれですが、Tumblrでは一切指定できなかったのでエンジニア的には結構嬉しいです。