ココログからBloggerへの移行と記事のEpub化

●はてなブログとBloggerを比較

筆者は本ブログの他に、「Daily Teatime」という、身の回りの話についての日記ブログを書いている。
もともとココログを使っていたのだが、2019年3月に大きな仕様変更があり、一気に使いにくくなってしまった。
最大の問題はブログデータのエクスポートができなくなってしまったこと。
筆者はブログの書き込みをエクスポートし、家族関係の記事を抜き書きして電子本にまとめているので、これは致命的である。かねて不満もあったため、これを機に他社ブログへ移転することにした。
「はてなブログ」「Blogger」の二つに入会して試した結果、Bloggerに決定。現在はそちらに記事を書いている。

なお本ブログはWordPressで書いている。なのでもちろん、もう一つドメインを取って同じサーバーで運用するという方法もあった。
ただ追加でドメインを取ると料金がかかるし、セッティングにも手間がかかる。
親しい友人ぐらいしか見ない日記ブログなのだから、デザインに凝る必要もなく、無料ブログで十分だろうと判断した。

BloggerはGoogleが運営しているブログサービスである。大きな特徴は、無料なのに広告がないということ。
申請すればGoogle AdSenseを貼ることができるし、アフィリエイトも可能だが、嫌ならWordPressなみに無広告のブログを作ることができる。
容量は他のGoogleのサービスとひとまとめになり、全体で15Gまで無料で使うことができる。

もう一つ候補とした「はてなブログ」はAmebaやライブドアと並んで最大手のブログサービスの一つで、会員同士のつながりが強く集客力が高いと言われている。こちらは広告がついてくる(月600円の有料会員になれば消せる)。
入会はどちらも無料。どちらもCSSが使え、デザインに凝る気があればカスタマイズ可能。はてなはGoogleとも連携していて、どちらもブログに使う画像はクラウドのGoogle Photoから引っ張ってこれる。

はてなを使って気になったのが、編集画面に「やり直し」ボタンがなかったこと、写真とテキストの間隔が微妙に筆者の好みでなかったこと、また書き込んだテキストに勝手にリンクをつけられてしまうこと。
試してみたところ、このリンクはブログのエクスポートデータをEpub化したときにも残ってしまうことがわかった。
ただこのリンクはCSSで消せるようなので致命的とまでは言えない。

Bloggerにも問題はあった。
まず、画像取り込み機能が標準で装備されていないこと。
ブログから別のブログサービスにエクスポートデータを使って記事を移行すると、通常はそれだけで画像も表示されるようになる。しかしこの時点では記事からのリンクは引っ越し前のブログの画像収納フォルダにつながっている。
このため前のブログを完全に削除してしまうと、画像が表示されなくなってしまう。
はてなブログでは、いったん引っ越しした後、リンク先から画像を自動で取り込む仕組みがある。試してみたところ、時間はかかるが問題なく動作することがわかった。
この機能は他のブログサービスから引っ越しする場合には大きなメリットだ。

Bloggerには同じ機能がない。
Bloggerでも他のブログサービスからエクスポートデータで記事を移せば、とりあえず画像も表示される(はずだ)が、前のブログのアカウントを消したければ全画像をGooglePhoto用のフォルダに移し、リンクの記述を書き換えなくてはならない。
以前は自動でリンクを書き換えるアプリが公開されていたようなのだが、確認すると「404 not found」になっていた。
筆者の場合、前のブログの写真は数千枚はあるはずなので、手作業で書き換えするなど、考えただけで嫌気がさしてしまう。実はこれについては今も宿題のままになっている。

それ以上に問題なのは、Bloggerのバックアップ用ファイルが一般的なMovableType(MT)形式でないことだ。
ココログもはてなも(ココログはもはやエクスポートそのものができなくなっているが)バックアップはMT形式のテキストファイルなので、ココログからはてなへの引っ越しであれば、そのままエクスポートデータを使って記事を移行させられるのだが、Bloggerではそれができない。

MT形式のデータをBloggerにインポートできる形に変換するサービスは以前はGoogleが公式に提供していたようだが、なぜか数年前に無くなってしまい、現在はsyasudaさんという方が「syasudaのツール」というサイトで無料で提供されている。
実際にはこのサイトでファイルを転換する前に、MT形式のエクスポートデータの日付表記を変更しておく必要がある。
これはココログの(他のブログサービスでも同様だが)日付は24時間表記の日本標準時であるのに対し、Bloggerはグリニッジ標準時を使い、午前・午後の区別をつけているため。
これをしておかないと、時刻や日付がずれてしまうだけでなく、変換そのものもうまくいかないという。
日付表記変更はGoogleのサービスにはない。現在、クリボウさんという方が個人で、「Blogger ブログ移行用、MovableType 形式のエクスポートデータの日付を変換するツール」という記事でサービスを提供されている。

他のブログサービスからBloggerに記事を移転する際には、こうしたサービスを利用してデータを変換することが必要になる。
しかし残念なことに、こうした個人の努力で提供されているサービスを使っても、必ずしも全てのMT形式のデータが素直にBlogger用データに転換できるわけではない。
筆者もエクスポート機能が停止される前にココログからエクスポートしていたデータを使い、クリボウさんのサイトで日付表記を変更した上で、syasudaさんのサイトで変換を試してみたが、うまくできなかった。ファイルを選択して「変換」をクリックしても、変換後のファイルは表示されず、そこにあった「ダウンロード」の文字をクリックすると、
「This XML file does not appear to have any style information associated with it. The document tree is shown below.」
と表示される。
この表示の意味を調べたところ、「ブラウザ上でこのXML出力に対する表示スタイルが存在しない」というエラーとのことだったが、原因はわからなかった。

ネット上のブログのEpub化サービスも、多くはMT形式のファイルしか使えないので、Bloggerのエクスポートデータはそのままでは電子本にできないことになる。
もし元のブログから記事を移転できず、新たに書いた記事から電子本も作れないとなると、筆者にとっては致命的な弱点だ。
しかし無料ブログサービスで広告がつかないという魅力は捨てがたい。
そこでBloggerのエクスポートデータとMT形式データを相互に変換する方法を探してみた。

●「Python」と「google-blog-converters」をインストール

いくつかの記事で、google-blog-converters というアプリで、BloggerのエクスポートデータをMT形式へ、またMT形式データをBlogger形式のデータに変換できることが紹介されていた。
このアプリはgoogle-blog-convertersのサイトでダウンロードできる。
もともとはGoogleが作ったアプリのようで、無料である。
最新版は2010年の「r89」で、以後は改訂が止まっている。
説明書(READ ME)は英文のみ。
ファイルは拡張子「.tar.gz」という圧縮ファイルになっている。見かけない拡張子だが、筆者の環境では普通にダブルクリックするだけで解凍できた。
解凍できない場合は、解凍用のフリーソフトがいくつか提供されているようなので、それらを利用することになる。

このアプリは単体でインストールするだけなら簡単なのだが、実際に動作させるにはPython(パイソン)という汎用のプログラミング言語が必要で、コマンドプロンプトで命令文を書いて指示しなくてはならない。
なおPythonの最新版は「3..」だが、「3..」は前のバージョンである「2..」と互換性がなく、google-blog-convertersは「2..」で書かれているため、「2..」のバージョンをインストールしなくてはならない。

このPythonをインストールして動作させる作業が手間だった。
まずPythonのサイトからダウンロードするのだが、WINDOWS用の他にMAC用などいくつかのバージョンが並んでいて、どれをダウンロードしていいのかよくわからない。
筆者の場合は一般的なWINDOWS10でプロセッサはIntelのCore i7、システムはx64ベースの64ビットオペレーティングシステムなので、「たぶんこれだろう」とあたりをつけて、「Python2.7.16 Windows x86-64 MSI installer」をダウンロードした。

このファイルはインストーラーで、ダブルクリックするとインストール作業が開始される。
途中、何度かインストールが止まって、英語で「どうする?」と質問される。
筆者の場合、userは「all user」、derectory は「C:\Python27\」、customizeはせず、すべてデフォルト設定のままインストールを終えた。

だがこの状態でコマンドプロンプトを起動して「python」と入力すると、「Pathが設定されているか確認してください」と警告文が出てきて、正常に動かない。
そこで、「Pythonをインストールしたディレクトリへ環境変数PATHを手動で設定する方法について解説します」というサイトを参考に、PATHを手動で設定することにした。

このサイトによれば、
「Pythonのインストール時に Add Python to environment variables にチェックをしていた場合には自動的にPATHが設定されているので手動の設定は不要」
ということなのだが、筆者の場合、再インストールして確認してみても、そんな項目は出てこなかった。
おそらく新しいバージョンの場合は何もしなくとも自動的にPATHが設定されるようになっているのではないか。だとすれば手動によるPATH設定は不要で、後述するように再起動するだけで動作した可能性が高い。
ただ筆者の場合、そうとは気がつかず上記のサイトを参考に(非常に丁寧にやり方を説明してくれている)PATHを設定している。

だが設定はしてみたものの、相変わらずコマンドプロンプトで拒絶されてしまう。
少し調べて、「インストール済みのpythonコマンドが認識されない」 というサイトで、
「Pythonをインストールしたら、いったん再起動しなくてはならない」ことを知り、再起動した。
その上でもう一度コマンドプロンプトを起動して、「python」と入力すると、今度は正常に設定されたことがわかった。
ずいぶん単純なことで引っかかっていたものである。

●BloggerのエクスポートデータをMT形式に変換

Pythonとgoogle-blog-convertersがインストールできたところで、BloggerのエクスポートデータをMT形式に変換する作業に入る。
まずは下準備として、Bloggerのエクスポートデータを取り出す。
具体的には、

Bloggerの管理画面から「設定」をクリック
→「その他」をクリック
→上部にある「インポートとバックアップ」の「コンテンツをバックアップ」をクリック
→「パソコンに保存」をクリック

これで「blog-日付.xml」のファイルが生成される。
ただこのファイルはそのままではgoogle-blog-convertersで扱えない。
google-blog-convertersのbat(バッチファイル 命令文を組み合わせたもの)では、「blogger.xmlをmt.xmlに変換する」という形で動作することになっているので、変換元のファイル名は「blogger.xml」でなければうまく動かないのだ。
そこで、

「blog-日付.xml」のファイル名を「blogger.xml」に変更
→ファイルをgoogle-blog-convertersを展開した先のフォルダの中にある、binフォルダにコピペ

しておく。
このときついでに、コマンドプロンプトで使うbinフォルダまでのフルパス名をクリップボードに取得しておくとよい。
エクスプローラーで目的のbinフォルダをクリックし、一番上の欄の左にあるフォルダアイコンをクリックし、選択状態になったフルパス名をコピーする。

続いて管理者権限でコマンドプロンプトを起動する。手順としては、

スタートボタン上でマウスを右クリックするか、キーボードで「Windowsキー + X」を押す
→表示された一覧の中の「Windows PowerShell(管理者)(A)」をクリック
→「このアプリがデバイスに変更を加えることを許可しますか」と訊かれるので「はい」をクリック

これで管理者権限でコマンドプロンプトが起動される。
あとはgoogle-blog-convertersの変換用のバッチファイルを起動させるだけだ。

まずはコマンドプロンプト上で先ほどのbinフォルダに移動しなくてはならない。このために「移動(cd)」コマンドを使う。
具体的には、
「cd (半角スペース)」を入力し、それに続けて取得しておいた上のフルパス名をマウスを右クリックして貼り付け、Enterキーを押す。

続いてバッチファイルとその動作を指定する。
具体的には、
.\blogger2movabletype.bat blogger.xml>mt.xml と入力し、Enterキーを押す。

これでbinフォルダ内にmt.xmlが生成される。

なお「Bloggerからの引っ越し」という記事にはこの命令文の部分が、
python blogger2movabletype.bat blogger.xml > mt.xml
とあったのだが、筆者の場合はそれだと「Syntax Error: Invalid syntax」と表示されて正常に動作しなかった。
これは「構文が違っている」という意味で、調べたところ、「bloggerの記事を移設しました」という記事に、
blogger2movabletype.bat blogger.xml>mt.xml
でうまくいった、と書かれていた。
そこでその通り入力すると、今度は「コマンド blogger2movabletype.bat は見つかりませんでした」と出て受け付けてくれない。
だがそれと同時に「このコマンドを信頼する場合は、”.\blogger2movabletype.bat” と入力してください」と表示されたので、その通りに入力したら、やっとうまくいった。

なぜケースによって命令文の書き方が変わるのかは不明だ。google-blog-convertersのバージョンによって変わってくるのかもしれず、Pythonのバージョンによって変わるのかもしれない。

●mt.xmlからEpubを作成

だいぶ苦労したが、以上でBloggerからMT形式のエクスポートデータを作ることができた。
次はこのファイルからEpubが正常に作れるかを確認しなくてはならない。

まず、それまでココログからEpubを作るのに使っていた「パブー」の「ブクログ」でこのmt.xmlをアップロードしてEpubを作ろうとしたのだが、どうやってもうまくいかなかった。
一応は読み込むそぶりはするのだが、本を開くと中は白紙のままなのだ。
入力項目にある「ブログ名」を変えてみたり、ファイル名を変えたり、拡張子をtxtに変えてみたりと、いろいろやってみたが無駄骨に終わった。
ただエディタでmt.xmlファイルの中を見てみたかぎり、データとして問題はなさそうだ。
実際、このデータを「はてなブログ」にインポートすると、問題なくBloggerと同じ記事が復元できた。

そこで試しに、今度ははてなブログに画像まで全て移した上で、そこからエクスポートしたデータ「はてなID.hatenablog.com.export.txt」のファイルをパブーにアップロードしてみた。
こちらはテキストは正常にEpub化されたが、画像はすべて抜け落ちてしまった。
どうもパブーの場合、ブログをEpub化するアプリの動作が安定していないようだ。
(なおその後、パブーから会員向けに「2019年6月30日をもってサービスを停止する」旨の連絡があった)

そこで今度は、はてなブログなどと連携している「MyBooks.jp」で試してみた。
こちらは本来、ブログ等を有料で紙の本にしてくれるサービスだが、その過程でEpubの見本を作ってくれる。
この見本については無料でダウンロードできるのだ。
やってみると、こちらは問題なくEpub化できることがわかった。
その手順は以下の通り。

まずMyBooks.jpに会員登録する。
次に「新しく本を作る」というページで、
「ブログや日記を本にする」の「詳しくみる」をクリック
→「対応していないサービスをご利用の場合」の下の、「記事データ(MT形式)をアップロード」をクリック
→本のタイトル、著者名、本のサイズ、ブログの文字・画像などのスタイルを取り入れるかどうか等を決め、読み込む記事の日付の範囲を指定、ページデザイン、表紙デザインを選択。
最後に「ファイルを選択」をクリックし、上で作成したmt.xmlを選択し、「本を仕上げる」をクリック。
するとほどなくEpubの見本が完成し、ダウンロード可能になる。

ダウンロードしたファイルをEpub編集ソフトのSIGILで読み込んでみたところ、ところどころ直したい問題はあるが、基本的にはいけそうだと感じた。
体裁は編集ソフトでいじることができるので、たいていはなんとかなる。

●MT形式のデータをBloggerにインポートできるデータに変換

次に以前にエクスポートしていたココログのデータを、google-blog-convertersを使ってBloggerに移転したみた。
ココログは現時点ではエクスポート機能そのものがなくなっているが、以前はあって、エクスポートデータはpost.txtという名前で生成されていた。ココログのエクスポート機能はできが悪く、切り出し期間の指定ができなかったため、一番最初の記事から一番最後の記事までまとめてエクスポートするしかなかった。当然長い時間がかかり、エクスポートデータも膨大な長さになってしまっていた。今回はそのpost.txtを1年分ずつに切り分けて使用した。
以降の作業には「google-blog-converters-appengine解析記録」という記事を参考にさせていただいた。

まず前述の「Blogger ブログ移行用、MovableType 形式のエクスポートデータの日付を変換するツール」を使わさせていただき、日付表記を変更する。
上のクリボウさんの日付変更ツールは大変使いやすく、1年分のブログデータの変換も一瞬で終わった。

次に日付表記を変更したファイルを、google-blog-convertersの作業用フォルダである\binフォルダにコピペし、ファイル名をmt.txtに変更しておく。

続いてBloggerのエクスポートデータをMT形式に変換したときと同様に、スタートボタンの上で右クリックし、(A)を選んで管理者権限でコマンドプロンプトを起動、
cd 半角スペース \binフォルダのフルパス名
を入力。
続いて、
.\movabletype2blogger.bat mt.txt>blogger.xml
と入力した。
必要な作業はこれだけのはずなので、「これでもうできるだろう」と思っていたのだが、甘かった。
「invalid(無効)」の表示が表れ、サイズ0のblogger.xmlしか生成されない。

「元のファイルがxmlでないとだめなのか?」と思い、「TXTをXMLコンバーター」というサイトでテキストをxmlに変換し、コマンドを
.\movabletype2blogger.bat mt.xml>blogger.xml
に変更して、改めて入力してみた。
今度は1KBのファイルが生成されたが、やはり中身の記事はない。

改めてコマンドプロンプトの表示内容をチェックすると、
File “C:\Python27\lib\encodings\utf_8.py”, line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0x83 in position 0: invalid start byte
とある。
最後の一文は訳すと
「’utf8’コーデックは位置0のバイト0x83をデコードできません:開始バイトが無効です」
という意味になる。
となると、エンコード関係のエラーかもしれない。
そこで堤修一さんという方の「Python スクリプト実行時に UnicodeDecodeError が出る場合の対処方法」という記事を参考にさせていただき、mt.txtのエンコードを変更してみた。

mt.txtをエディタ(筆者の場合は「秀丸」を使用している)で開き、エンコードを確認する。
Shift-JISになっていたので、これをUnicode UTF8に変更、「内容を維持したまま適用」とし、保存。
改めてコマンドプロンプトで、
.\movabletype2blogger.bat mt.txt>blogger.xml
と入力。
今度は中身の入ったblogger.xmlファイルができた。
変換にはほんの一瞬しかかからなかった。

●できたファイルを使って記事をBloggerにインポート

エディタでblogger.xmlをチェックすると、どうやらまともなファイルのようだ。
であれば、あとはblogger所定のやり方でインポートすればよい。
管理画面の「設定/その他/インポート」で上でできたblogger.xmlを選択、Enterを押すと、数分間の取り込み作業後、無事に1年分の記事が表示された。
写真もちゃんと入っている。

ただし上で述べたように、この写真はもとのココログのフォルダからリンクで引いてきたものだ。
blogger用のフォルダにあるわけではないので、ココログを退会したり、「ブログを削除」でまとめて消してしまったりすると、bloggerの記事から写真が消えてしまう。
かといってココログの記事をそのままにしておくと、後から作ったbloggerの記事のほうが、Googleの検索ロボットに「コピー記事」と判断され、検索から外されてしまう。

しかたなくココログの管理画面から、記事を一つひとつ手動で削除していった。
このやり方であれば記事は消えても画像は残るので、記事の重複を無くしつつ、写真表示を残すことができる。
しかし、大変面倒だった。
なぜ写真のリンクをGoogle Photo内に付け替えるアプリが提供中止になってしまったのか。
理由はわからないが、もう少しましなやり方がないか、調べてみようと思っている。

それにしても、この使いにくいgoogle-blog-convertersがMT形式のファイルをBloggerで使うためのGoogleの公式サポートの全てだとしたら、呆れるほどのやる気のなさだ。
こうした状況をみると、あのGoogleが提供するサービスであるにも関わらず、Bloggerが日本でマイナーなブログサービスに留まっている理由がよくわかる。
Googleには、
・MT形式のファイルによるインポートを可能にし、
・他のブログサービスから記事をインポートした後、自動で写真をリンク先からコピーして取得するようにし、
・エクスポートデータでもMT形式を選択できるようにする
ことを強く要望したい。
現状をみるかぎり、そんな気は全くなさそうだが……

●情報が少ないBlogger

Bloggerはブログ本体のカスタマイズについても、WordPressほどではないにしても、けっこう面倒が多い。
デフォルトだと画面上のナビバーに自分のメールアドレスが表示されてしまうので、それだけを消そうとしたがうまくいかなかった。プロフィールの編集画面で「メールアドレスの表示」からチェックを外しても消えない。プロフィールを非表示にすればメールアドレスも消えるが、プロフィールは残したかったので、結局ナビバーごと消すことになった。おかげで検索窓がなくなってしまった。

ナビバーを消すには、
管理画面の中の「レイアウト」で「Navbar」の「編集」をクリック
→選択画面の中の「オフ」にチェック
する。
これは比較的最近に実装された機能のようだ。

記事のテキストやタイトル、日付等のフォントの指定や大きさの変更、全体のカラーなどは管理画面から変更可能だが、中には管理画面からは変えられないものもある。
たとえば画面下に表示されている「登録: 投稿 (Atom)」という表示を消したり、投稿タイトルの文字色を変えたりしたのだが、これらは管理画面からではいじれなかった。

「登録: 投稿 (Atom)」を消すには、
管理画面の中の「テーマ」から、「ブログで使用中」のテンプレート(筆者の場合は「シンプル」)を選択し、その下の「HTMLの編集」をクリック
→中の記述<b:include name=’feedLinks’/>
をコメント行
<!–<b:include name=’feedLinks’/>–>
に変更すればよい。
これについては「Bloggerで『登録: コメントの投稿 (Atom)』を消す方法」、「『登録: 投稿 (Atom)』って何ですか?。」といった記事を参考にさせていただいた。

投稿タイトルの文字色変更は最初CSSでやってみたのだがうまく反映されず、こちらもテンプレートのHTMLを編集して書き変えて対応することになった。
これについては「Bloggerブログ タイトルテキスト色のみ変更方法 HTML版」を参考させていただき、
やはりブログで使用していた「シンプル」テーマの下の「HTMLの編集」をクリック、その後に「テーマの書式の設定」タブを選択して、Chromeの「Ctrl+F(検索)」と「Ctrl+G(次候補)」を使って、投稿タイトルを意味する「post-title」を検索し、そこに色指定
style=”color:#004908;”
を加えた。
深緑色である。

最初は1343行 <h3 class=’post-title entry-title’ itemprop=’name’> の下の1345行 <a expr:href=’data:post.link’> と1347行 <a expr:href=’data:post.url’> に色指定を入れてみたが反映されず、次に、
1453行 <a expr:href=’data:post.link ? data:post.link : data:post.url’><data:post.title/>
の<aの次に色指定を加えてみたところ、文字列が
<a expr:href=’data:post.link ? data:post.link : data:post.url’ style=’color:#004908;’><data:post.title/>
と変化し、無事に投稿タイトルのカラーのみを深緑色に変えることができた。

こういったとき、どうすればできるのかネットで方法を探すわけだが、Bloggerは日本ではマイナーなサービスなので、探しても情報が少ない。
このように問題はいろいろあるが、先人の力を借りて「MT形式のデータもインポートできる」「Bloggerの記事もEpub化できる」ことがわかったので、晴れてブログを移管することにした。
筆者がみなさんの記事を参考にさせていただいたように、この記事もどなたかの参考になれば幸いである。

  ≪