先日、jugemブログからワードプレスへの移行の依頼を受けまして、実施しました。
概要だけお伝えすると、今回対応したのは6000ページ以上ある、かなり歴史のある個人ブログになります。

jugemブログにはワードプレス移行に対応したエクスポーターがあるので簡単かと思っていたのですが、想像以上に大変な作業となりました。
既存のjugemエクスポーターには、一部の記事が文字化けしてしまい、不完全な形での移行となってしまうバグがあったことが誤算の原因です。

大きな収益が出ているブログではないのですが、長い歴史が刻まれたブログです。
ご本人にとってはもちろん、サイトの更新を楽しみにしている方々にとっても、ブログは大切な存在です。

過去記事を100%の形で保存するために、様々な施策を実施して、なんとか移行を完了させました。
なかなか稀なケースかと思いますが、今回起きた事象と、解決した方法を記録しておきます。

スポンサーリンク

jugemブログのエクスポーターの文字化けバグ

jugemブログには、MovableType形式でのエクスポート機能が備わっています。
.txtで記事を出力することができ、著者、タイトル、日付など、一気に100記事分程度出力することができます。

作成した記事をダウンロードすることは出来ますか。 | JUGEM よくある質問集 FAQ

ただし、こちらのエクスポート結果では、環境依存文字を出力できないという欠点があります。

環境依存文字とは、

などの表示環境に依存する文字のことで、これらはエクスポートすると全て?になってしまいます。
jugemに問い合わせてみましたが、改修する予定はないとのことです。

念の為補足しておくと、バグがあったからと言って、jugemブログ側に責任はありません。(バグではなく仕様の可能性もあります。
有料ブログサービスとして利益を出している企業としては、ワードプレスへの移行はできれば避けたいはずです。
本来エクスポーターの開発はサポート範囲ではないですし、わざわざ用意してもらっているだけでもありがたいところです。

さて、環境依存文字の文字化けですが、発生箇所が数箇所なら手作業で修正できます。
しかし、6000記事超えのサイトとなると、手作業での修繕は大変な作業になります。

なお、文字化けに加えて、稀にエクスポートできない記事もあり、こちらは原因が全くわかっていません。
さらに、サイトURLの一覧も取得することができず、旧URL→新URLでの照合作業も難航しました。

ワードプレスのインポーターのバグ

ワードプレスにはMovableType形式でのインポーター(Movable Type and TypePad Importer)が備わっています。
こちらのインポーター、実はテキストファイル1行あたりの容量が8192バイトに制限されており、制限を超えるとエラーになる仕様となっています。

問題の発見からインポーター改修の方法まで、こちらのサイトに大変お世話になりました。

ブログ記事インポートプラグインMovable Type and TypePad Importerの微調整 | ブログをWordPressに引っ越し(移行作業)してみました!

今回のケースでは、1行の文字数が

  • 2894文字以内ならOK
  • 2895文字以上だとエラー

となるような事象が発生していたため、インポーターのバグを疑い、問題の特定ができました。

エクスポーターを自作して文字化け問題を回避

今回は、エクスポーターを自作することで、文字化けの問題を回避しました。
サイト内の全ページをスクレイピングし、保存した記事データをインポート用のテキストファイルに出力するツールです。(厳密にはエクスポーターではないのですが、役割としては同じものになります。)

こちらがエクスポーターのソースコードになります。
https://github.com/bluegoat21/jugem-exporter/blob/main/jugem-export.js

起動するためにnode.jsやChromeDriverの準備が必要になります。
環境設定の手順については、そのうちブログでまとめる予定です。

URLの全点チェックを実施

jugemブログでは、パーマリンクが

https://ドメイン名/?eid=xxx
(xxxは数字)

というルールで生成されています。

非公開記事や削除した記事があると、数字は繰り上がりになります。

今回は最新の記事URLがhttps://ドメイン名/?eid=62XXといった内容でしたので、
0から6500まで全てのURLにアクセスし、正しく表示されたページのみデータを取得しました。
URLは、エクセルの関数を使って生成したものを、先ほどのプログラムに貼り付けて使用します。

エクスポーターの実行とファイル出力

エクスポーターを実行して、インポート用のファイルを出力します。
ファイルの中には、必須の構成要素として以下のようなデータが格納されています。

AUTHOR:著者名
TITLE:記事のタイトル
DATE:DD/MM/YYYY hh:mm:ss
PRIMARY CATEGORY:
STATUS:Publish
ALLOW COMMENTS:0
ALLOW PINGS:0
CONVERT BREAKS:0
-----
BODY:
ここに概要が入る

-----
EXTENDED BODY:

ここに本文が入る
-----
--------

こちらの構成が、記事数分連続して格納されています。

インポーターの実行

出力されたファイルを、インポーターで読み込みます。
なお、インポーターは事前に前述したバグを修正しておきます。
サーバーのファイルマネージャーから簡単にできます。

タイトルの一致確認と注意点

こちらのツールを使って、ワードプレスにアップされた記事のURL一覧を出力します。

旧サイトのタイトル、新サイトのタイトルが完全一致していることを確認します。

なお、jugemとWordPressでは、

・シングルクォーテーション
・ダブルクォーテーション

の文字の扱いが違うようで、タイトルの完全一致を確認する際に若干の手間になりました。

開始 終了 区別なし
ダブルクォーテーション "
シングルクォーテーション '

この記事は、大変だった当時メモを手がかりに半年後あたりに執筆しているのですが、具体的にどう手間になったのか今となってはわからず・・・。
何かしらの落とし穴があったようですので、ご注意ください。

過去URLと新しいURLの紐付け一覧を作成して、301リダイレクト

jugemブログとワードプレスでは、パーマリンクの構造が違うため、旧サイトから新サイトへ301リダイレクトを設定します。

http://ドメイン名.com/?eid=5

https://ドメイン名.com/?p=5

p=の部分は自動で割り振られるため、こちらでコントロールすることができません。
新旧サイトで対応表を作成して、Redirectionなどのプラグインを使って、CSVで一括対応します。

他にも、サーチコンソールのサイト移転設定や、アクセス解析の設置、多少のデザイン変更などの対応を実施しましたが、jugemからワードプレスへのサイト移転でつまづいた点は以上となります。

おわりに

今回の文字化け対応は、業者によっては無視する業者もあると思います。
この記事のように正確に移行しようとすると、膨大な作業時間がかかりますし、その分請求金額も余計にかかります。
コストをかけるだけの価値がある作業か?というのが争点になると思います。

今回はサイトからの売り上げ云々の話ではなく、「思い出をどこまで残すか?」といったことが大事なポイントです。
ブログを書いて23年、想い込めて6000ページを積み重ねたサイトは、値段がつけられない唯一の財産です。

特に上乗せで請求したわけではないのですが、売り上げとは関係のない個人ブログの引越し作業であったとしても、慎重に取り組まなければならないなと気持ちを引き締めなおしました。

おすすめの記事