まずは、明けましておめでとう御座います。早いもので、もう2004年ですか。で、最後の更新日が2003年の4月だから...、おいっ、更新滞り過ぎだぞ、俺!!
何やってんだかなあ。いや、別にさぼってた訳じゃないけど、なんか更新するのに手間が掛かるもんだから面倒になってね。で、その間何をやっていたかと言うと、これまた別に何もやっていなかったと言う体たらくです。しかし、これじゃ駄目だろうと思い立って、やっとこさ自動更新ツールを完成させ、今に至りました。
やはり更新させるのに手間がかかるのが滞る最大の原因でありまして、これをクリアした今年はなんぼかマシだと思いますので、一つ宜しくお願い致します。
とりあえず、徐々に完成させて行こうと思いますし、過去の文書も逐次復活させるつもりです。でも、あんまり力んでやると息が続かないので、のんびりチビチビとやっていこうと考えています。「完全復活の道は遠し」ですか...
前にも少し書いたが、今はWebの更新を全て機械任せにしていて、それを勝手に「Zippo」と名付けてある。ツールといっても何の事は無い、ただのAppleScriptである。
サイトを始めてから更新に手間が掛かるという問題は常に付きまとっていた。これはWindowsを使っていた時然りである。特別なオーサリングソフトを使ってないから、その管理・確認・アップ等はすべて手作用。特にマックに移行してからはアップロードさせるのが非常に面倒になった。使い勝手の良いフリーのFTPソフトがなかなか無いためである。更にはRSSを書き始めてから、その面倒さは頂点に達する。これが更新を滞る最大の原因であると言っても過言ではない。これを簡素化する為にZippoを作ったというわけ。
具体的には、シンプルな構造で記述したXML文書をXSLTでXHTMLに変換して、前回から更新された分をRSSに放り込み、変換されたXHTMLと更新されたRSSをアップロードする、以上までの過程をAppleScriptで行っている。僕のやる事と言ったら、文書を書いてZippo発動用のボタンをポチッと押すだけ。いや〜、楽だわ、楽。何で早く手を付けなかったのだろう? やっぱり食わず嫌いってはいけないね、何事もやってみるべきだ。
まあ、これでいままでの煩わしいさから解放されたし、そうなれば当然筆も進むって事になるんでしょう(←本当か!!)。
Zippoの仕組みは至極簡単である。単純にxmlファイルをXSLTで変換し、そのファイルを任意の場所のセーブするだけ。無論、使用される全てのファイルはXMLである。
元文書は所謂"フラットでリニア"な構造にしてある。独自な要素なども取り入れているが、単体でも解読ができるようにベースはISO-HTMLにしてあるのでHTMLとはそれほど違和感は無い。それを構造化されたXHTMLに変換しているのだが、その際にはPersonnel(jintrick)さんの構造化モジュールを利用させてもらっている。現在は、jintrickさんのアルゴリズムを参考にして改造した独自のモジュールを使用。
さて、変換に使うXSLTプロセッサに何を使うかだが、幸いにもAppleScriptにはdo shell script
というのがあって、スクリプト上からターミナルコマンドが使用できるのでプロセッサの選択にはそれほど困らない。で、色々と試した結果、メインにはSaxonを使う事にした。最大の利点は出力指定に"XHTML"を指定でき、インデントもまあまあ納得できるという点である(惜しいかな、ruby要素をin-lineできれば完璧だった)。しかしながら、他の捨てがたい機能を持っているのである。libxsltはDTD検証をすっ飛ばす事が出来て(他のは出来ない...。詳しくはありみかさんの「 Xalan-Java の DTD 取得行程にイライラ」を参照の事)スピードが他に較べて段違いに速いし、XSLT Toolsは独自関数にAppleScriptが使えるし...という事で何だかんだ言ってそれらをごちゃ混ぜ使う事にしました。XHTML出力の際にはSaxon、XHTMLファイルをプロセッサに取り込む時にはlibxslt、独自関数を使うときにはXSLT Toolsと、その場その場で切り分ければいいやという事で(Xalanの魅力も色々とあんだけど、「帯に短し、襷に長し」と言う感じ...)。
Zippoの自動更新プロセスは以下のようにしている。
summarize
を使って要約し、セーブ。curl
コマンドを使ってアップロードする。
以上のプロセスをAppleScriptに記述して、それを普段使用しているテキストエディタ「mi」のツールとして登録して、ワンプッシュで更新完了なのである。
本当はアップロードの際にAppleScriptのURL Access Scriptingを使おうと思っていたけど、なんかPantherではバグで使えないみたい。しょうがないからcurlを使ったけど、UNIXなんか詳しくないからDaniel A. Shockley - Code-bitsを参考しただけ。でも正常に動いているから「良し」としてます。
兎も角、今まで以上に楽になった事は確かだ。全くもってAppleScript様様である。次の課題は今は手動でしているサイトマップ構造を記したxmlファイルを自動で更新できるようにする事かな。
今年もまたインフルエンザが猛威を振るっているようですが、小生全く関わり合いがありません。自慢する訳ではありませんが、ここ5年ほど風邪もひかないし、病気で寝込んだ事もありません。
一見健康そうな小生、やはり少しくらい調子が悪いときもあります。小生、鼻炎持ちですので時々グズります。鼻が赤くなるほどティッシュを使う時が稀にあります。また、愛煙家でもありますので喉の調子を崩し、咳が止まらなくなる事が年1度くらいあります。
....ハッ、これ、もしかして風邪? いわゆる鼻風邪や喉風邪? 鼻炎や煙草の牲にしているだけで本当は風邪なんじゃないのか?
小生にとって風邪とは体が平熱以上を伴いダルくなる症状だと認識しているのですが、本当の所どうなんでしょうか。いずれにしろ、寝込まないだけ「有り難い」と思わねば。
皆さんも健康管理には気をつけてくださいね。特にインフルエンザ、あれはナメてはいけません。下手をすると"死"に至ります。うがいや手洗い、面倒でもやりましょう。
元・健康の為なら死ねる男より
僕のところにもたくさん届く位だからかなり蔓延していると思われます。更には、より悪質になったMydoom.bなるワームも出回っているようです。見知らぬメールからの添付ファイルは絶対に開かないようにして下さい。それとアンチウィルスソフトは入れときましょう。特にWindowsを使っている方は必須です。
って言ってる割に自分は入れてなかったりしていますが(但しMacのみ、Windowsマシンにはちゃんと入れてあります)。以前はシマンテック社のノートンを入れていたんですが、Pantherには未だ対応せず。いつになったら対応するんだ、シマンテック!!