FC2ブログからWordPressへの引越しでやったこと(備忘録)

ブログ移転一発目でいきなりこんなこと書くのもどうかと思ったんですが、とりあえず忘れないうちに書いておこうかなと。

やったことの流れとしては
1.FC2ブログ側でのバックアップデータ出力
2.データの加工とか
3.WordPress側でのデータインポート
4.後処理

 

※以下ひたすらテキストベースで説明しますが、多少役に立つ情報もあるかもしれないので、FC2ブログからWordPressへ引越しをする方は見てみてください(作業的には、頑張れば1日で最後まで完了できるくらいだと思います)。

 

まず、「1.FC2ブログ側でのバックアップデータ出力」

これは管理画面の左側の「ツール」-「データのバックアップ」で出力できます。

本文はテキストデータで全件まとめて出力できるので、それでOK。

画像データはちょっとややこしくて、そのままだと1件1件保存とかしてかなきゃならないんですが、普通1年とかブログをやっていると最低でも数百件くらいは画像データがあるのでは無いかと…。

僕も3,000件くらい画像データがあったんで「マジ…?」と思いましたが、Vectorで「イメージ・ダウン」というフリーウェアを発見して、コレでまとめて(といっても、100件単位ですが)ダウンロードしました。

使い方の詳細はココでは記しませんが、「イメージ・ダウン」のURL欄に、上記FC2の画像バックアップ出力の画面のURLを入力すれば100件づつまとめて画像がダウンロードできるので、この方法を強くおすすめします。

 

次に「2.データの加工とか」

基本的にはそのままで行けますが、

(1)画像ファイルのURL

(2)改行コードの関係

(3) パーマリンクとブログ内リンクURLの関係

の3点は、インポートツールを手直ししたり、バックアップで出力したテキストファイルを開いて修正したりしました。

 

まず(1)画像のURL

もともとFC2ブログ上では、画像URLは「http://blog-imgs-41-origin.fc2.com/r/g/r/rgrg/◯◯.jpg」とかそういうアドレスになっていたと思いますが、引越し後は当然画像のURLが変わるので、バックアップで出力したテキストを開いて、引越し後に画像を置くディレクトリを書き換えます。テキストエディタの置換でやれば一発です(画像が置かれているディレクトリも、いくつかに分かれていることもあるので、何度か検索してもれなく書き換える様にしましょう)。

 

次に(2)改行コードの関係

WordPress側へのデータのインポートはWordPressのメニューの「インポート」で「Movable Type and TypePad」というのを選択します。



そうすると、プラグインとして「movabletype-importer.php」というのがインストールされるんですが、このツールをそのまま使っても、インポートした記事に改行コードが無くなっちゃって、改行が無い「間が詰まった文」でインポートされちゃうことに。

で、それを防ぐためにpluginsディレクトリにある「movabletype-importer.php」を開いて、455行目456行目を修正します。

具体的には

”455行目:if( !empty($line) )

456行目:$line .= “¥n”;”

とあるところを、

”455行目://if( !empty($line) )

456行目:$line .= “<br/>”;”

という風に、455行目をエスケープして、456行目の  “¥n”を”<br/>”になおします。

これで、改行を<br/>で記述したテキストでインポートしてくれるようになります(ココらへんはどうしたいか好みにもよると思うので、455/456行をどちらかだけ直したりして、試しに数件分の記事データをインポートしてみると良いかも)。

コレに加えて、「brBRbr」というWordPress用のプラグインを入れると、恐らくFC2のときと同じようなイメージ・レイアウトでインポートできると思います(このプラグインを入れないと、連続する複数の改行を無視されてしまって、行間を空けていた記事も詰まって表示されてしまう)。

 

最後に(3)パーマリンクとURLの関係

FC2のときに、自分のブログ内の別の記事に対して内部リンクを張っていた人は、引越し後にココらへんの修正が必要になります。

でもそれはとっても面倒くさい、ということで、ちょっと考えてみました。

僕のFC2ブログでの記事数は1,000件以下だったので、FC2のエントリと、新ドメインでのエントリを以下の様に対応させることにしました。

FC2でのURL http://goodsurfers.blog42.fc2.com/blog-entry-310.html

移行後のURL http://www.haikaiold.com/blog-entry-4310.html

移行後のパーマリンクのURLフォーマットを「blog-entry-☓☓☓.html」とするには、WordPressの「設定」内の「パーマリンク設定」で「カスタム構造」を選択して、”/blog-entry-%post_id%.html”という様に指定すればOKです。

なんで移行後のエントリIDを4,001番から始めたかと言いますと、WopdPress側のパーマリンクのIDがブログのエントリ以外でも採番されてしまうようで、1からスタートできなかったからなんです(詳しいことはよくわかりませんが、インポートをするとそれだけで先ず2つくらいIDが何かに使われてしまったり、エントリを削除しても、削除したぶんだけIDが使われてしまうようです…。あと、単純に記事を一つかいても、エントリIDは2つ消費されるみたいです)。

で、それを検証しているうちにいつの間にかエントリIDが2,000番台の中ぐらいまでいってしまったので、思い切って4,001からエントリIDを使うことにしました(実際にはエントリのIDを修正とかはできないので、記事をインポートする前の段階で、最後に採番されたエントリを3,998にしておいて、その状態で記事をインポートすると、インポートした記事が4,001番から採番されます。1,001番から採番させたい人は、998番まで何かの記事を作成しておいて、その状態でインポートすればOKです。エントリIDを998番まで進める方法は、例えば200件の記事をインポートして削除すれば404個数字が進むので、こういった作業を何回か繰り返してから、「テスト」とかのエントリを幾つかいれると、998番までエントリIDをすすめることができます)。

(インポート直前に、エントリIDを3,998まで進めたところの画像です)



 

これをふまえて、FC2側で出力したテキスト内の「ブログ内リンクのURL」をテキストエディタで書き換えておくと、インポート後もブログ内リンクが切れない状態でインポート出来ます(旧FC2のURLは「blog-entry-1.html」「blog-entry-10.html」「blog-entry-100.html」となっているので、新しいURLに置換するときに「blog-entry-4001.html」「blog-entry-4010.html」「blog-entry-4100.html」という風に「0」足りなくならないように考慮しながら、何回かに分けて置換する必要がありますのでお忘れなく)。



 

※あと、FC2側で削除してしまった記事(未公開ではなく)は、インポートデータに無いので、この状態のままデータインポートをすると、せっかくFC2のエントリIDと移行後のエントリIDを揃えていても、この部分で番号がずれてしまいます。

それを回避するためには、(ちょっとに手間がかかりますが)FC2側の記事を順番に調べていって、移行用のテキストデータに、削除して抜けてしまっているエントリID用のダミーのデータを追加する必要がありますのでお忘れなく。

 

3.WordPress側でのデータインポート

画像ファイルはFTPソフトでまとめてアップロードします。

記事本文のテキストデータは、上記「2」項の修正をしたものを使います。

ポイントは、「移行後のパーマリンクを1,001番から始めたかったら、インポートする直前の最後の記事のエントリIDを998番(スタートしたい番号の3つ前)にしておく」ことです。

これだけ守れば(多分)大丈夫。

不幸にしてインポート失敗などをしてしまった場合には、またIDを1,000番進めて再トライしてみましょう…。

あと、XreaとかCoreserverとかだと、セーフモードのせいでインポートが失敗します。これはインポートに使うmovabletype-importerプラグインが、セーフモードで使用できない関数を使っているからで、このままでは絶対にインポートできません。

解決策は、.htaccessに「AddHandler application/x-httpd-phpcgi .php」だけを記述してデータインポートを実行すれば大丈夫なはずです。

その場合にも、パーマリンクの設定に必要な記述は残して置かなければいけないので、例えば、今回の様にパーマリンクにカスタム設定を使う場合

# BEGIN WordPress

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index¥.php$ – [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

# END WordPress

# BEGIN WordPress Remedy for PHP SafeMode

AddHandler application/x-httpd-phpcgi .php

# END WordPress Remedy for PHP SafeMode

という記述内容の.htaccessを置いた状態でデータインポートをすればOKなはずです。

 

4.後処理

WordPress側は上記で大体OKなはずです。

 

旧FC2側の処置ですが、FC2は301リダイレクトが出来ないので…。

僕は悩みましたが、とりあえず、古いブログの記事は非表示にしちゃいました。

→ヘッダに<link rel=”canonical” href=”http://www.☓☓☓☓☓.com/”>を記述して、Google様に移転先のページをお知らせすることにしました。

例えば”http://www.haikaiold.com/”への移転を表すcanonicalのヘッダへの記載内容は

<link rel=”canonical” href=”http://www.haikaiold.com/” />

です。

”canonical”というのは「正当な」とかそういう意味で、コレをヘッダに書き込むことで、「このページはhrefで示したページのコピーですよ」ということを検索エンジンに伝えることが出来ます。

こうすることで「コピーサイト=スパム・ペナルティの対象」となることを回避できるようです。

移転元のFC2と移転先のWordPressで、各記事のページURL、パーマリンクを対応させてあるので、FC2ブログのエントリNOを出力させる<%pno>タグを使って、移転先のWordPressのURLを自動的に作成することができます。

こんな感じです。

<link rel=”canonical” href=”http://www.haikaiold.com/blog-entry-4<%pno>.html” />

上記をテンプレートのヘッダ内に記述すると、実際にFC2ブログのヘッダでは、

<link rel=”canonical” href=”http://www.haikaiold.com/blog-entry-4310.html” />

と出力されます(FC2側でblog-entry-310.htmlにアクセスした場合)。

ただし問題はエントリ1〜99のURLで、ココは上のタグで出力させると0が足りなくなっちゃう…(例えば、FC2のblog-entry-10.htmlはWordPressでは正しくはblog-entry-4010.htmlなんですが、blog-entry-410.htmlとなってしまって上手く対応させられないんです…)。

この問題の解決方法は、近いうちに何か考えたいと思います。

 

あと、訪問者の方への「移転のお知らせ」としてプラグインの「フリーエリア」を一つ追加して、こんな感じにJavascriptでそのページの移行後の新しいURLを表示させるようにしてみました。



 

Javascriptのソースはこんなです。超テキトーですが、動いてますので…(FC2側でのURLの文字数で表示させる内容を判定しているので、もしも流用する場合にはそこを手直ししてください。僕の場合は、旧URLが”http://goodsurfers.blog42.fc2.com/”で34文字だったので、例えば文字数が34文字ならトップページを表示しているので、個別のページのリンクは作らない、とか)。

<span style=”font-size:x-large;”>このページの移転先は以下のリンク先です。</span><br><br>

<span style=”font-size:large;”>
<p>
<script type=”text/javascript”>
<!–

var N;
N = document.URL;

var textlen;
textlen=N.length;//alert(N.length);

var numlen;
if(textlen==53){numlen=”;}else if(textlen==52){numlen=’0′;}else if(textlen==51){numlen=’00’;}

N=N.slice(45);
if((textlen!==34)&&(textlen!==54)&&(textlen!==55)){

document.write(‘このページの移転先URL<br>:<a href=”http://www.haikaiold.com/blog-entry-4’ + numlen + N + ‘”> http://www.haikaiold.com/blog-entry-4’ + numlen + N + ‘</a>’);

}

//–>
</script></p>
</span>

<br>

<span style=”font-size:large;”><p>

移転先のサイトトップページ<br>:<a href=”http://www.haikaiold.com/”>http://www.haikaiold.com/</a>
</p></span>

<br>
<span style=”font-size:large;”>
今後とも「徘徊老人」を宜しくお願いします!
</span>

これで、古いページにアクセスしてきた方には、そのページのURLを表示させることが出来ます。

 

とりあえずはこんな感じですかね。

 

※2012年12月1日追記

「完璧にやり遂げた」と思っていたら、1点落とし穴がありました…。

移行用のテキストデータの中に「EXCERPT:」という項目がありまして、これは「カテゴリ」などのページで、タイトルとあわせて「本文冒頭の抜粋」を表示させるときに使用されるデータ項目です。



 

今回紹介した方法で移行を実施すると、この「EXCERPT:」の項目にも改行コード(<br/>)が一つ入ります。

ところが、この「EXCERPT:」の項目に改行コード(<br/>)が入っている状態だと、WordPressの「カテゴリ」や「アーカイブ」でエントリを数件まとめてリスト表示させたときに、本文冒頭の抜粋が表示されない、という事象が発生します(WordPress的には、この項目はブランクでないと正しく処理できないみたいです。それでもタイトルとか、そういった項目はキチンと表示されますけど)。

移行後にこの項目をどうやってブランクに戻したら良いのか対処方法がわからなかったので、僕は結局、WordPress用のデータベースを開いて、postデータの中のexcerptの項目を全部削除する、という作業をして正常な状態に戻しました。

コレを回避するために、移行前の段階で何らかの対策をしておいた方が良いはずです(どうしたら良いかよくわかりませんが…。移行用のテキストデータから「EXCERPT:」の行自体を削除しちゃえば良いのかな…?)。

ま、最悪、移行後のWordPressのデータベースの中のから、excerptの項目のデータを全部削除すれば大丈夫なんですけど…。

Posted in FC2からWordPressへの引越し | 4 Comments

引っ越してきました。

というわけで、FC2ブログの「徘徊老人」をこちらに引越しました。

これからはこっちで色々とウロウロしていきたいと思いますので宜しくお願いします。

※古い記事もこちらに全部移し替える予定にしてます。こちらもぼちぼちやって行きたいと思います。

Posted in FC2からWordPressへの引越し | Leave a comment

【計画】Nexus7で地デジやBSやCSを見る with DLNA対応のHDD/ブルーレイディスクレコーダー

前回、急に「HDD/ブルーレイディスクレコーダーを買って、Nexus7で地デジやBSやCSを見てみる」計画を思いついたんですが、現実的なプランとして検討してみたいと思います。



【やりたいこと】

(1)Nexus7でワンセグだけでなく地デジ/BS/CSも視聴したい。
(2)できれば、iPadやiPod touch/Apple TVでも地デジ/BS/CSを観られるようにしてみたい。

(3)HDD/ブルーレイディスクレコーダーを買い足すんだったら、別の部屋のテレビでもコレで録画したものを観られるようにしたい。



【仕組みとか規格とか】

先ず大前提として、Android用のワンセグチューナというのはありますが、Android用のBS/CSチューナーというのは無いみたいです(2012年11月段階)。

何でかというと、BSやCSっつうのは、正確に衛星の方向に向けたパラボラアンテナで衛星からの電波を受信(これが正確な表現かどうか知りませんが)しているわけで、そんなモンを受信できるポータブルな機械というのが無いからです。


なので、Nexus7でBSやCSを観たかったら、
(1)電波は家庭などに設置されたパラボラアンテナから受信。
(2)BS/CSチューナーを搭載した機器(HDDレコーダーなど)でその電波を受信して、それをDLNAなどでNexus7などの再生する側の機器に転送する。
というステップが必要になります。


僕自身、DLNAとかココらへんの話にあまり詳しくないので、調べたことをちょっと備忘録的に記録しておきたいと思います。


「DLNA」というのは、HDDレコーダなどに録画した番組をネットワークを介して別の機器で視聴するための取り決め・ガイドラインで、家庭内のLANやWiFiを介した映像データの送受信はコレで出来ます。

例えば、ウチのPCのNASはDLNA対応なんですが、そこに入っている映像ファイルは、Nexus7の動画再生アプリ(ココで使っているのはTwonky Beamというアプリ)上から、こんな風に探すことができます。

HDDがサーバとして先ず見えてくるので、選択すると
Twonky Beamでサーバ

その中にある動画ファイルが見えます。
Twonky Beamで動画一覧

Twonky Beamで180SOUTH2


自分で録画したビデオとかそういったものはこの「DLNA」でiPadやNexus7に送って再生させることが出来るんですが、デジタル放送を録画したものを別の機器で視聴したい場合にはもう一つ考慮しなければならないことがあります。

それが「DTCP-IP」というものです。

「DTCP-IP」というのは「DLNA」とセットで使われるコピーガードの方式で、地デジやBSなどのデジタル放送を録画すると、この「DTCP-IP」というものでコピーガードがくっつけられ、勝手に孫コピーなどをできなくしたり、「ルーターを指定数以上またいでデータを流せない=インターネット上にデータを流せない(TTL)」というような制約をつけたりしています。


つまり、Nexus7やiPadで地デジ/BS/CSを視聴するためには、「DLNAに対応したHDDレコーダなどの録画装置(映像データの送り元・サーバ)」と「DTCP-IPに対応した動画再生機器/アプリ(映像データを再生する機器・クライアント)」が必要になるわけです。


ウチにはDLNA対応のHDDレコーダーが無いので、このためにまずDLNA対応のHDDレコーダーなどを購入する必要があります。

ま、そろそろ何か買いたいかな、と思っていたのでちょうど良いかなと。

Panasonic DIGAのDMR-BRT220という今年の春のモデルが、3万円を切るお手頃価格でHDD500GB+ブルーレイレコーダー両方が使えて、現段階での一番の有力候補です。


理想で言えば、コレ1台買って(3万円弱の出費で)、家にある2台のテレビ(内1台はApple TV付き)とNexus7とiPad全部で地デジ/BS/CSが全部見られるようになっちゃったら最高、ということで…。



【想定する構成/やってみる実行プラン】


(1)DLNA対応のレコーダー:Panasonic DIGA DMR-BRT220

こいつを1台目のテレビに接続して、地デジ/BS/CS放送を受信・録画させつつDLNAで家庭内LANに配信するサーバーにします。


(2)Nexus7

Twonky BeamというアプリがDTCP-IP対応なので、コレをインストールすれば行けるはずです。

ちょっと調べた限りでは、DIGAの録画モードがDRだと上手く配信できないとかそういう話もあるようなので、録画モードは色々と試して見る必要がアリそうです。

設定として、Twonky Beam側は「設定」で「ネットワーク帯域/メディア品質:高」にしておいた方が良いらしいです。
Twonky Beamの設定

それから、Nexus7本体の設定としても、「開発者向けオプション」で「GPUレンダリングを使用」にしておいたほうが良いらしいです。
Nexus7のGPUレンダリングを使用

※ちなみにAndroid4.2から「開発者向けオプション」がデフォルトでは表示されなくなっているんですが、「設定」内の「ビルド番号」を何回か(5回くらい?)タップすると、「デベロッパー」になれまして、そうすると「開発者向けオプション」が設定出来るようになります。
Nexus7 ビルド番号をタップしてデベロッパーに

…随分話が逸れましたが、Nexus7はコレで行けるかな、と。


(3)iPad/iPod touch

正直言って、コレは今のところどうしたら良いかわかりません…。

DTCP-IP対応のアプリが無いんです…。

前述のTwonky BeamというアプリはiOS版も有るんですが、iOS版だとDTCP-IPに対応してないんですよね…。

ココらへんは、アプリのアップデートで将来的に対応ができるようになるものなのか、難しいのか、ともかく何か新しい手段やアプリが登場するのをウォッチしていきたいかな、と。


(4)2台目のテレビ+Apple TV

これも今のところ解が無いんですよね…。

Apple TVがDTCP-IPに対応してくれればそのまま再生できるはずなんですが、今のところは対応していないようです。

JailBreakとかそういう方向で対応できるならやってみても良いんですが、そもそもDTCP-IP自体が日本国内の家電メーカの規格なんで(日本のコンテンツ産業の著作権保護規格なんで当たり前なんですが)、海外の方がこんなモノに対応する「何か」をやってくれるハズも無いですし…。

素直にDTCP-IP対応の機器をもう1台買ってそれでつなぐのが簡単なんでしょうが、それはそれで悔しいしな…。

コレは、最悪DIGAのお部屋ジャンプリンクに対応している一番古い機種あたりを中古で探してみても良いかも知れませんけどね。


ま、この(3)と(4)は、実際に機械を導入してから色々とチャレンジしてみたいと思います。


この続きは、HDD/ブルーレイディスクレコーダーを購入してトライしてみ次第、結果をご報告したいと思います。

Posted in Mac,iOS,Android,Kindle関連やWiFi,無線LANなど | 7 Comments