やってしまった…サイトの改造に手を出してしまいました orz
いえね、半年か一年ごとに出るのですわ、この病気が。これが発病してしまいますと、数週間から数ヶ月くらい、コンテンツは何一つ更新されず、見た目もそんなに変わらないのに、私生活では寝不足の目を真っ赤にしながらネットにかじりついているという、最悪の病です。
たまにはガラリとサイトの見た目が変わることも、数年に一度はあるのですがねー。(まあ一応、今回は変える予定ですので、楽しみに(?)しといてくださいね(ハート))
今回は特に重症でして、このサイト(Xoops)全体の文字コードを、EUC-JPから、UTF8に変更してしまいたいのです。
文字コードというのはコンピュータにとっての言語みたいなもんと思ってください。私たちにとっては同じ日本語の「本」という文字を表示するという結果は同じでも、それを「これは『本』という字だぞ」ということをパソコンにわかるように伝える方式に、EUCとかUTFとかShiftJISとか、いろいろあるくらいに考えてください(違うかもしれんがまあそういうイメージ)。
EUCで動いているサイトにUTFで文字を打ち込みますと、パソコンにとってはフランス人にスワヒリ語で話しかけるようなものでして、さっぱり意味がわからないので、やはり勝手にさっぱり意味のわからない記号ばかりの文字列(いわゆる文字化け)を表示します。
サイトの文字コードを変更しても、表示される結果は同じなんですが、パソコンの中では「公用語をドイツ語からモンゴル語に変更する」というくらいの変化があります。それをありとあらゆるテキスト(日本語)の部分で全部やるということです。
まあ、そうは言ってもFTPで見れるHTMLや個々のプログラム(モジュール)とかはそんなに大変な作業でもないんですけどね。一括変換ツールもあるし。問題はデータベースに格納されている部分でして、つかそれこそがこのサイトのコンテンツそのものなわけですが、いったんデータベースから読み出して、文字コードを変換して、またデータベースに戻してやんないといけない。全データを一括して読み出し、また一括して戻せば楽なんですが、どうもデータが大きすぎるせいでそれができないみたい。細切れに落としていくしかない。
だいたい、 実はよくわかっていない 私レベルの人間にとって、「データベースを直接いじる」なんて、恐くてできませんよ。7年もかけて蓄積してきたものが、一瞬で消えてしまいかねない。バックアップも一応はとったけど、やはりデータが大きすぎて一括保存できない。分割で保存はしたけど「ボクちんにはよくわかんない細切れのデータがいっぱいあるぉ」って状態ですし。万が一の時、完全に復旧できる自信がないなあ。
というような理由で、この2年以上、やりたいなあと思いながらも、手をつけることなくすごしてきたわけですね。今のサイトデザインがわりと気に入っているということもあります。ブログとかやってない皆さんは、「表示される結果が変わらないのなら、なんでそんなに苦労する必要があるの?」と思われるでしょうね。でもそれには理由があります。
まず、だいたい今のブログなどのツールはUTF8が圧倒的な主流なんですよ。EUCというのは古いんです。私の理解するところでは、UTFは「多言語共生」の国際標準規格で、同じサイト内に日本語、韓国語、アラビア語など混在しても、UTF一つで大丈夫なので便利なのです。EUCだと、EUC-JPとかEUC-KRみたいに、言語ごとにいちいち別パッケージが必要になり、混在もできません。Shift-JISだと、別パッケージも何も、日本語のためだけの島国規格です。
で、皆さんが今から無料サービスなどでブログをはじめられるとすれば、ほぼ間違いなくそこはUTF8で構築、運用されています。EUCをサポートしているところはほぼ皆無になりつつあると思います。Shift-JISのブログサービスは見たことすらありません。また、無料サービスではなく、自分で構築するとしても、MovableTypeやWordPress さらには OpenPNE などの主要なツールの最新バージョンはUTF8しかありません。
つまりEUC版は「開発終了」というわけです。つか、国際展開するこういうツールが必然的にUTF8を採用するので、これを利用しているサービスもそれにあわせて統一されていくという流れですね。
そんな中でもこのサイトを構築している xoops は元々がEUC版が標準でして、私がxoopsをはじめた頃は、すでにEUCのブログなどは珍しかったにもかかわらず、xoopsにはEUC版しかなかったのです。よって必然的にこのサイトもEUCでスタートしました。
そのXoopsもついにUTF8版の発表にふみきり、おそらく現在、新規に xoops でサイトを立ち上げる人は、UTF8を選ぶ人が多いのではないかと推察しています。それでもxoopsはまだEUC一本でやってきた過去の遺産(ユーザーやモジュール)があまりに大きいので、MovableTypeやWordpress みたいに、いきなりEUCを捨ててしまうことはできないとは思います。が、やがてはその方向にいくことは確実でしょう。
そうなると、いずれはEUCのままではバージョンアップができなくなってしまいます。いつまでも古いバージョンを使い続ける「バージョンアップ難民」の道か、ここを捨てて、一から新しいサイトを構築するかの二つの道しかなくなってしまう。そうなる前に、サイトUTF化についての情報も多い今のうちにやってしまえればと思っていたわけです。
特にブログでその影響が深刻で、このブログは WordPress を xoops のモジュール(部品)として組み込むための「XPressEUC」というのを使っているわけですが、これは開発が終了しており、もとになっている WordPress もかなり古いバージョンのまま、アップすることができないでいます。つまりブログだけ先行して、すでに「バージョンアップ難民」と化している状態なわけです。
また、EUCとUTFのブログ同士でトラックバックを送受信しますと、相性のいい(というか、おそらくは作りがしっかりしている)ところ(たとえばココログ)なら問題ないのですが、4割くらいの確率でトラバの送信か受信、もしくはその両方ができない。全くできないならまだいいのですが、最悪の場合は相手様のブログに文字化けしたトラバを残してしまう(たとえばFC2ブログ)ことになり、大変に恐縮してしまいます。これも何とかしたいなあと思っていました。
で、昨日の晩、ふとひらめいたわけです。「そうだ、今のサイトのあるサーバーでやるから恐いのだ。別のサーバーを借りて、そこに一から『UTF8版の旗旗』を立ち上げ、今のサーバーのデータを小まめに変換してちょっとずつ移植していく。やがて別サーバ上にUTF8版が完成したら、それを丸ごと今のサーバーに移転してやればいいではないか」と。
なんかすごくうまくいく、仕事帰ってから寝るまでの作業で数日もあれば終わるんじゃないかという気がした。で、さっそく古巣のロリポップを借りてやってみた。
甘かった……orz
いえね、すでにEUCで運用してて、かなりのコンテンツがたまっているサイトの場合、ネットで検索してみると、そのUTF化は「かなり難しい」という人と、「どこが?簡単じゃん」という人とがいて、私はそれを読んで、まあ、それなりに手間が大変なのであって、手順をふんでやれば、そんなに難しいということもあるまいと楽観的に思っていました。
甘かった……orz
UTF8のxoopsサイトは簡単に立ち上げることができました。んで、使っているテーマ(xoopsサイトのデザインセット)も簡単にUTF8化して適用できた。ためしに「反戦動画集」で使っている X_movie CUSTOM というモジュールの言語ファイルをUTF8化してからインストールしてみた。これも簡単にできた。文字化けせず正常に表示されています。すべて順調。
いよいよ旗旗「反戦動画集」の本体(データベース)の移植です。データをバックパックモジュールを使ってダウンロード、できたSQLファイルを開いて秀丸エディタでUTF8コードに変換。ロリポップのデータベースにリストアしました。高鳴る胸を押さえつつ、サイトを表示させてみると……。ちゃんとカテゴリーやタイムスタンプも階層通りに移植できています。動画もサムネイルも問題なく表示されていました。が!がががががが!!
ギャアァァァァ━━━━━━(|||゚Д゚)━━━━━━!!!!!!
日本語がすべて文字化けしているぅぅぅ!
そりゃもう悲しいくらいぐちゃぐちゃに文字化けしていました。なぜだあ!!すべてUTFにちゃんと変換されているのに。どうしてまともに表示してくれないのだあ!!!
で、例年ならここから長時間の試行錯誤がはじまる……ところなんですが、この時点で時計をみるとなんと朝の5時!えっ?さっき夜の11時だったはずなのに!いつのまにこんなに時間がたっているんだ!!もうそろそろ起きて仕事に出かける時間ではないかあ!あわてて30分くらい無理にでも寝て、そのまま仕事にいきましたとさ。
それが今日の朝のこと。そして仕事を終えて帰宅し、今にいたると。
ァハハ・・(´▽`)oO(ワラットクカ)
おかしいなあ、おかしいなあ、こういうことなら、こんなに集中力あるのになあ。やっぱり私もヲタク体質?
とか、エエ歳こいて、徹夜でゲームやってる高校生みたいなことも言っておれんので、今回は自制します。
ロリポップに移植しつつという安全路線は守りますが、毎日ぶっ通しで目も真っ赤というのは今回はなしに。つか、3年前や5年前と違ってもう徹夜は辛いや。それにあの頃は集会とかにもほとんど出てなかったしなー。今は(公私ともに)そんなことしている場合ではないと、さすがに自覚しています。
そういうわけで、ロリポップ半年借りました。「数日」とか無茶言わずに、そしてその無茶をやりとげてしまうという社会人失格(廃人)なことはしません。そんなことしてたら申し訳ないというか、後ろめたい方々の顔が次々と浮かんできます(はい、もちろんあなた様のことです。どうもすみません)。この半年の間にボチボチとやります。で、「ゲームは一日一時間!」ってことっす。
ところで、よねざわいずみさんの合資会社ダブルエスエフ.とかでこういう作業は頼めるのだろうか?1万とか2万の世界なら、もう一週間くらい飯抜きで節約してでも頼みたい心境。けど手間とか考えたら、そんな値段じゃできんよなー。5万とか10万とか、場合によっちゃそれ以上の世界なんだろうな。まあ、自分でコツコツ試行錯誤していくよ。
私の場合「youtuveは一週間に2回まで」ですね。
もう開くと昔のバンドのライブとか懐かしくてあっという間に一時間くらいたってしまう。数年間探していた本が5分で買えた時、youtuveでお宝映像のライブを観たとき、こう言うときほど科学の進歩に感動することは少ないな。