2009.02.05

MovableType から WordPress への移行

昔使っていたMovableTyape 時代のblog を、パーマリンクを引き継いだまま WordPress に移行したときの記録。大変だった。

以前の状態

以前のホームページでは、ずっとMovable Type を使っていた。シンプルで、素人がいじっても うまく動いてくれたし、動作もそこそこ軽快で、何の不自由もなく使っていたんだけれど、 スパムに負けた。

スパム対策の充実をうたった、新しいバージョンに乗り換えたら、ファイルが複雑になっていて、 動作が重くて、自分が使うには荷が重すぎた。

庭いじりするのに小さなシャベルを使っていて、それで何の不便も感じていなかったのに、 ある日「バージョンアップしました」なんて、新しいの届いたら、シャベルがユンボになっていたかんじ。

バージョン4.X 以降のMovableTyape は、データベースの構造を変えてしまうから、後悔しようにも、 もう後戻りができなかった。

仕方がないのでWordPress を別の場所にインストールして、今のところ調子がいい。

移行前の構成

  • xrea のサーバーを有料レンタルしている
  • /public_html/ 以下に、「/MT 」、「/blog 」、「/wp 」というディレクトリを作って、 それぞれMovableTyape の本体、MovableTyape のデータ部分、WordPress の本体とデータを入れていた
  • データベースは MySQL 。 xrea のサーバースペースを借りると、5つまでデータベースを作れる。 これまではMovableTyape 用途とWordPress 用途と、2つ作っていた

/MT にはMovableTyape の4.1 が、/wp にはWordPress の2.7 が、それぞれ入っていた。

やりたかったこと

MovableTyape 時代の文章は、それでもコメント欄を閉鎖せざるを得なかったり、過去ログの参照がおかしかったり、 うまく動いていなかった。すべての文章を「静的生成」にすることで、動作はわずかに軽くなったけれど、 「はてなブックマーク」との連携がうまくいかなかったりして、問題が多かった。

WordPress は今のところ快適で、何よりも、スパム対策が充実しているのがありがたい。

昔書いた文章を、URL を変更しないまま、管理ツールを WordPress に移行できたらいいなと思った。

手順

  1. MovableTyape を最新のものにバージョンアップする
  2. MovableTyape のエクスポートプログラムを編集して、旧サイトの内容を、URL ごと書き出す
  3. /blog のディレクトリをリネームして、同じ場所に WordPress をインストールする
  4. WordPress のインポートプログラムを編集して、元サイトのデータをURL ごと引き継ぐ
  5. WordPress の体裁を整える

書き出してしまえば簡単だけれど、問題山積みだった。

MovableTyape のバージョンアップ

小粋空間: Movable Type 4.1x から 4.2 へのアップグレードのやりかたに、そのまま従った。

最初はうまく動かなかった。

ダウンロードしたファイルをローカルに解凍 -> FFFTP でアップロード -> インストール まではうまくいくのだけれど、 「ダッシュボード」にログインしても、そこから何もできない。原因が分からなくて、結局一度、ディレクトリごと削除して、 全く同じ手順を繰り返したら、何事もなかったように動作した。

新しいMovableTyape は、ファイル数が1500 近くあって、アップロードの手順は一切変えていないから、 あるいは最初は、アップロードの途中で、ファイルが壊れたのかもしれない。

エクスポートプログラムの編集

WordPress への移行顛末記のやりかたを、ほとんどそのまま踏襲した。

MovableTyape のバージョンアップは、この方が使っているバージョンに合わせたかったから。

URL を引き継いだ状態でのWordPress 移行は、たとえばkishi-r.com だとか、wiki@browncat.org のまとめのほうが検索上位にきて、どちらのサイトでも /lib/MT/ImportExport.pm の541 行目を編集するやりかたが記載されているのだけれど、うまくいかない。

MovableTyape 4.2 だと、どうもファイルが変更されているみたいで、指定された541 行の前後には、 書き換えるべき内容が見つからない。

MovableTyape 4.23 で書き換えるべきなのは、493行目以降だった。

似たような記述が510行前後、520行前後にそれぞれ出てくるけれど、 こっちはコメントの書式を指定している行だから、 こちらを書き換えても、URL はエクスポートされない。

ImportExport.pm を書き換えたあと「エクスポート」を行って、「PERMALINK: http://medt00lz.s59.xrea.com/blog/archives/2004/11/post_1.html」 のような文章が入っていれば、URL を含んだ書き出しは、たぶん成功している。

WordPress を入れる

WordPress のインストールは簡単。

  1. データベースを作る。Xrea の59番サーバーなら、ここ から ログインして、データベース -> 「作成」 で新しいのが作れる
  2. /blog のディレクトリと、/MT のディレクトリを、たとえば「/blog_ 」にリネームする。これで見かけ上、旧サイトはURL もろとも消滅したことになる
  3. /blog のディレクトリに、新たにWordPress 2.7 をアップロードして、WordPress 日本語サイトのインストール手順に従う。すぐに終わる

このあと「管理画面の設定」-> 「パーマリンク設定」で、URL構造を「その他」にチェック、 空欄に「 /archives/%year%/%monthnum%/%postname%.html 」と記述する。

WordPress への移行顛末記の説明には「/archives 」が入っていないんだけれど、このあたりは 元サイトのURL をどう管理していたのか、人によって違うからなのだと思う。うちはこうしないと、URL が移行できなかった。

xrea でこの操作を行おうとすると、「.htaccess を書き込み可能にしてください」 という表示がされて、 操作が途中から進まなくなる。無理矢理終了してblog にアクセスすると、インデックスページは参照できるけれど、 あとはすべてのページが 404 になって、全くアクセスできなくなる。

.htaccess は、WordPress の中には存在しないので、自分で作らないといけない。

<ifModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</ifModule>

こういう .htaccess ファイルを作って、/blog と/blog/wp-admin にそれぞれアップロードした上で、属性を「666 」に してやると、操作が完了して、アクセス不可能の問題を回避できる。.htaccess は、 たぶんどちらか一方に置けば十分なんだけれど、 片方の状態で動作確認してないから分からない。

WordPress のインポートプログラムを書き換える

Weblogy のサイトで公開されている「mt.php.zip 」を ダウンロード、解凍して、このファイルを WordPressの /wp-admin/import/ にある同名ファイル「mt.php 」と差し替えれば、 作業は終了する。

バージョンが違うからなのか、インポートするたびにエラーメッセージが出るけれど、一応問題なく作業できた。

ここまででようやく、インポートの準備が完了する。

インポート作業

MovableTyape からダウンロードしてきたファイルは、テキストだけなのに7MB あった。

インポートは、WordPress のダッシュボード画面上からもできるんだけれど、Xrea だと「アップロードに失敗しました」 というエラーが出て、たいてい失敗する。PHP の動作が少し特殊なのが原因らしくて、回避可能みたいなんだけれど、 試していない。

このやりかた以外に、MovableTypeからエクスポートしたファイルを「mt-export.txt」という 名前で、 /wp-content に FFFTP を使ってアップロードする方法もあって、これだと問題なくデータがアップできるんだけれど、 ファイルサイズが大きすぎると、インポートが途中で止まって、やっぱりエラーが頻発する。

仕方がないので元のテキストファイルをいくつかに区切って、そのつど「mt-export.txt」にリネームして、 少しづつファイルをインポートした。

MovableTyape が書き出したファイルの書式はUTF-8 。たいていのテキストエディタは、 何も指定しないとShift-Jis で保存を行うので、保存形式をUTF-8 に指定するのを忘れて、 そのままアップロードすると、WordPress が文字化けして、びっくりすることになる。

いろんなファイルサイズを試したけれど、xrea だと、一度に2MB までだったら大丈夫みたい。

この段階で、WordPress 純正の体裁で、旧blog のテキストが、URLそのままで再現できる。

見た目の調整

以下の素材をお借りした。

  • Commented entry list プラグイン: 小粋空間のテンプレートを使うのに必要になる
  • Markdown プラグイン:Markdown 記法で文章を書くのに必須。慣れると戻れなくなる
  • 小粋空間 の3カラムテンプレート
  • wp-hatena プラグイン:「はてなブックマーク」ボタンを設置するのに便利

できることできないこと

WordPress になって、サイトの動作はたしかに軽快になって、「はてなブックマーク」との連携なんかが ずいぶん快適になった。

これは本当にありがたかったのだけれど、違うシステム間でURL を引き継いで、旧blog ではやっぱり、 新しい記事が書けなくなった。

MovableTyape のURL をそのまま引き継ぐ代償として、WordPress のパーマリンクは、移行後に 書いた新しい記事については、URL が日本語表記になってしまう。実際には、日本語版のWikipedia みたいな、 文字化けしたような、長ったらしいURL になる。

旧記事と新記事とで、パーマリンクを使い分けられればいいのだろうけれど、今のところはまだ、 そのやりかたが分からない。

今のところはここまで。

追記: コメント欄にて「投稿スラッグ」という機能を教えていただいた。これを使うと、今までみたいな短いURL で、 新しい記事を書いても大丈夫そう。ありがとうございました。

2008.04.16

「初心者」親和的なインターフェース

WordPress のこと

WordPress は、サイト名とページ名を『≫』で区切る。

エントリー書いて、「はてなブックマーク」みたいなサービスに記事が載っかると、 この区切り記号が文字化けして、なんだか見づらくなる。

ブクマするたびに自分で書き直したり、ブクマしてくださった方が直してくれたりするんだけれど、 すごく面倒くさい。何とかしたかったんだけれど、そもそもそれをどうやって調べればいいのか、 まずそれが分からない。

「はてなブックマークでなんだか題名が文字化けする」なんて、 検索エンジンでそのまんま検索しても、引っかからない。

結局どうすればいいのか分からなくて、Twitter 上でそのまんま質問したら、 「ヘッダを編集すればいいですよ」なんて、何人かの方から教えていただいた。

元々が他人様のテンプレートを使っているページだから、その教えはそのまんま使えたわけでは なかったけれど、とにかく「タイトルを変更する」という言葉で検索をかければ、 問題が解決しそうなことはよく分かって、実際そのとおりになった。

MovableType は楽だった

昔のMovableType は、こんなときすごく楽だった。

プログラムは改良を重ねてて、なんだかごちゃごちゃしてたけれど、「これをやりたい」 なんて思ったことは、ほとんどの場合「インデックス」ページのどこかに記述されていて、 書き換えれば何とかなった。

なんか漠然とやりたいことあったら、とりあえずそれを検索すると、「○○を書き換えましょう」 なんて記事が見つかるから、今度はその記事に書かれてる内容で、インデックスページを検索する。

HTML なんて今も昔も読めないんだけれど、検索すると、とにかく記事と同じように記述されてる場所が 見つかるから、言われたままにインデックスページを書き換えると、やりたいことが実現できた。

リンクを張ること。ブクマボタンをつけたり、カウンターをつけたりすること。 ブログパーツを貼り付けること。前のblog はいろんなものをくっつけていたけれど、 MovableType は「検索」によく応えてくれて、素人でもどうにかなった。

モジュール化は初心者に厳しい

MovableType のバージョンが上がった。何とか使おうとしたけれど、あきらめた。

バージョンが上がったMovableType は、プログラムが一新されていて、 徹底的にモジュール化がなされていた。

どこ見ていいんだか途方に暮れるぐらいにごちゃごちゃしていて、 その代わりそこを探せば何でも書いてあった「インデックスページ」は、 モジュールが数行並んでるだけのシンプルなものになった。

その代わり、シンプルなページは検索を拒んで、 今までやってたことを再現するのにいったいどこ見ていいんだか、全く分からなくなった。

インデックスを見る。モジュールしか書いてない。案外親切で、使われてるモジュールには 全てリンクが張られてる。リンク先に飛ぶ。またモジュールが並んでて、リンクで飛ぶ。

新しいMovableType は、深いところでは5 階層ぐらい潜らないと、書き換えるべき場所に たどり着けない。題名書き換えるとか、エントリーの内容整理するとか、 メーカーが想定している、簡単なことをやるだけなら、たしかに敷居は下がったのだけれど。

モジュール化というやりかたは、たぶん「分かってる人」、あるいは「教科書片手に何かする人」 にとっては、見通しがいい、シンプルな構造に見えるのかもしれないけれど、 分からない人間、検索エンジンと二人三脚で、理解しないでコピーする初心者にとってはすごく厳しい。

お城みたいに構造化されたモジュールを前に途方にくれて、URL 放り出して、blog ツール変えた。

初心者だって進化する

昔の初心者は、本屋さんでマニュアル買って、目的の場所を何とか探して、 びくびくしながらファイルを書き換える。そんな人たちにはだから、 見通しがいい構造が欠かせなくて、各モジュールを小さくすれば、たぶんそれだけ敷居が下がって、 プログラムに対する親しみやすさを持ってもらえる。

今の初心者はたぶん、ググって試して自爆して、真っ白になった画面を前に、 今度は「真っ白になっちゃいました」とか、またググる。

強力な検索エンジンの力を得た素人は、勉強しないでいきなり解答にたどりつく。 みんな恐れを知らない。ネットの先には親切な人しかいないと信じてる。それが どんなに危険な場所でも、バックアップ取らないで、平気で書き換えて自爆する。

初心者はいつの時代にも初心者だけれど、時代が変わって、初心者もまた、 昔ながらの初心者ではなくなっている。「初心者にあわせた」インターフェースもまた、 時代とともに変化しないとおかしい。

検索親和的なインターフェースがほしい

自分が使ってるパソコンは、ずいぶん前から「整理」をあきらめて、文章書いたり、 書類書いたり、書いた片端から同じフォルダに放り込んで、後は忘れてしまう。

ファイルの数は1000を超えてて、ファイルの名前も適当だから、 もう人間の目で探すのは不可能だけれど、デスクトップ検索ソフトで探せばすぐだし、 ハードディスクの全文検索機能を使っても、検索対象にするフォルダが一つしかないから、すぐ見つかる。

何か初心者向けのインターフェース作るときには、初心者に「人間」単独を想定しちゃいけないんだと思う。

人は道具を使う。10年前の、本しかなかった頃の初心者と、何かあったらまず検索する、現代の初心者とでは、 「人間」部分は一緒でも、「人間-機械系」としての振る舞いは、昔と全然違う。

「初心者」に向けて、人間親和的な進歩を思考するならば、blog ツールはこれから先、 総GUI 化したりするのだろうけれど、それをやると、もしかしたら初心者は、そんなツールを 見捨てるような気がする。複雑なことはできないだろうし、使いかたを検索できないし、 何か新しい発見したところで、それを画像でキャプチャしないと、体験を共有することすら出来ないから。

乗り換えた先のWordPress は、それでもMovableType に比べればずいぶん複雑になったけれど、 探索すべき階層が1 層で済んでるから、検索できるし、検索した内容を、 それらしい場所にコピーすれば、何とかやりたかったことが実現できる。

「検索」親和的なインターフェース目指すなら、階層構造止めにして、すべて1枚のファイルに 収めてしまえばいいんだと思う。それやると、複雑なプログラムなんかだと 何千行にもなってしまって、人間が必要な場所を探すのは不可能になってしまうけれど、 どんな問題に突き当たっても、「検索」ひとつで何だってできるようになる。

それをやると今度は、素人が適当にファイル編集しては、すべてが台無しになるケースが 多発する。だからファイルには自動バックアップをつけておいて、数世代分、 クリックひとつで時間をさかのぼれるようにしておけばもっとありがたい。

検索エンジンの力得て、勉強もしない、理解もしない、そのくせ恐れることを 全然知らない現代の「初心者」は、初めて銃を持った子供みたいに振る舞う。 子供は何でも撃ってみるし、場合によっては自分の足だって狙うだろうけれど、 中身は子供だから、それを禁じられたら、きっと不満を持って怒り出す。

初心者に必要なのはきっと、「自分の足だって簡単に撃て」て、なおかつ 引き金引いてから思い直せば、いつでも後戻りできる、そんなやりかたなんだと思う。