iWeb:n Korruptio

壊れたiWeb

iWeb 崩壊

2006年4月9日日曜日

4月6日木曜日、iWebが崩壊しました。4月5日の「会議」の日記を書き終わり、保存しようとする「文書iWebが保存できません」と宣います。「う」と思いながら、もう一回保存を押すと保存が完了した上で、「下記の画像が保存できませんでした」とのポップアップがでて、15枚ばかりの画像名がならんでいます。「をひをひ (-.-; 」とおもいながら、iWebを一旦閉じて、開くと今度は「下記の画像が開けません」とのポップアップがでて、再度15枚の画像名がずらー。大丈夫かなぁと思っていくつか過去のページを開くと...

なんじゃこりゃぁ

トップの画像のような状態。見事に画像が壊れていて、「ペケ」の文字がでまくっています。仕方がないので、この日は過去のページの入ったフォルダのバックアップをとっておいて、「フォルダに公開」をえらび、幸い壊れていなかった「会議」のページだけを更新して、終わりにしておきました。こうしておかないと、iWebは何故か毎回全てのデータをフォルダにはき出すので、全て書き換えられてしまいますから。

消えた画像 本日はとりあえず修復作業を開始。ポップアップを見ると「画像がない場合は再度挿入してください」とあります。 画像を投げ込む 仕方がないので、こんな状態になっている「雪の城」のページに元の写真をぽいっと放り込むと、こんな感じ。何故かファイルへのリンクとして保存をしてしまってくれます。これではどうにもなりません。「?」となっている画像を消して挿入しても結果は同じ。しからば、と「?」を取り除いてしまってから、一旦保存して、再度開いて挿入するとやっとこさ挿入できました。しかし、これを全ての画像に対してやるのかと思うと正直ぞっとします。さてどうしようか。

iWebの本体ファイルは、~/Library/Application Support/iWeb/Domain.sites というパッケージ。OSXでは一個のファイルに見えても、実体は通常のUnix ディレクトリだったりするので、これを右クリックして「パッケージを開く」とやるとやっぱり中身に大量の画像があります。で、よく調べてみると、「?」に成っている画像も全てちゃんと存在していて、開いてみるとちゃんとした画像です。と言うことはおかしいのは、iWebのはずです。

そこでこのフォルダの中を「怪しいファイルはないかいなぁ」と調べてみると、ありました。index.xml.gzといういかにも怪しいファイルが。デスクトップにコピーしてみてgunzipしたうえで、emacsで除いてみると、あらびっくり。Blogに書いている全ての情報がこの一つのファイルにXML形式で、しかも一行のデータとして書かれているじゃありませんか。そりゃ、開いたり保存したりする度に異常に時間がかかって、「公開」の時に全部のファイルを更新するはずです。相当良くない作り方をしているソフトのようです。文字は画像として表示しますしねぇ。

さて、問題のファイルの中をざっと探してみると、問題の画像ファイル名SANY0025.JPGが書かれているところがあります。この日記は、SANYO XACTY DMX C6 で撮影した写真を使っているのですが、このカメラが自動生成するファイル名です。(余談ですが、これMPEG-4ビデオも撮れるし、iChatUSBCamをいれると、iChatAVでもつかえる優れものです。なかなか重宝しています。) このタグを見ると、sf:corrupt=”true” と書かれています。つまりファイルがあるか無いかが問題ではなくて、「壊れた」とマークされているから「?」で表示していると言うことですね。emacsで一括変換してこの項目を全部削除し、もう一回gzipしてファイルを戻すと、見事に全画像が表示されました。

しかし、「画像が見つかりません」エラーはまだでています。そこで件のXMLファイルをもう一度見てみるとたしかに、問題のファイル名の記載があります。iWebでは先ほどのDomain.sitesファイルに全ての画像ファイルを放り込むようですので、同じファイル名の画像がくると仕方がないので、-1 -2 として処理をしています。で、某かのトラブルで保存に失敗したときに、「次の画像名」がindex.xmlに書かれてしまったんだろうなぁと言う感じです。かといって構造のよく分からないこのファイルをいじってこのエントリを消すのもうまくいくかどうか自信はありません。ということで、ターミナルを使って、求められている画像ファイルを、他の画像ファイルをコピーして作ってみました。再iWebを起動してみると、無事ノーエラーで立ち上がりました。ぱちぱちぱち。よかったよかった。

ということで、今日は数日分の日記をまとめ書きです。せっせっせ。

それにしてもiWebは何かと問題が多いですね。公開の時にはエライ時間はかかるし、ちょっと保存形式を考え直してもらった方がいいんじゃないでしょうか。


P.S. XMLEditorなどを使いながらもうちょっと色々調べてみたところ、結局「エントリを追加」した後で記事の日付を変えたりすると、「文書iWebが保存できません」となるようです。日付変更に弱いようですね。更にもう一回保存すると、一見普通に保存が終了した様に見えて、開くと壊れている状況になるようです。ちなみに「最後に保存した状態に戻す」をやると、100%の確立で、iWebが異常終了します。一度corruptに成ると、例え実体の画像ファイルが壊れていようがいまいが、XMLファイルを編集しない限りもとに戻らないようですし、これはバグのたぐいですな。どっちにしても遅くてたまらないですが。途中からツールを変えるのもつらいので、どうしようか思案中です。


P.S.2 iWebはページを作った順番に「次へ」をリンクするので、順番がひっくり返ったりすると、「次へ」が正しく繋がりません。いろいろやってみましたが、正しく並べ直すためには、各ページについた通し番号を手作業でつけ直した上で、XMLファイルの中身を日付順に並べ直してやらないといけないようです。とても「一行」で出来たファイルからXMLの一括りを抽出して並べ直す気力はありませんでしたので、この前後は順番がむちゃくちゃになっていると思いますが、ご愛敬と言うことにしておいてください。これも論理設計上のバグですね。全く困ったソフトウエアです。