勝手にしやがれ - 2004年1月 -

目次

謹賀新年

2004-01-06

まずは、明けましておめでとう御座います。早いもので、もう2004年ですか。で、最後の更新日が2003年の4月だから...、おいっ、更新滞り過ぎだぞ、俺!!

何やってんだかなあ。いや、別にさぼってた訳じゃないけど、なんか更新するのに手間が掛かるもんだから面倒になってね。で、その間何をやっていたかと言うと、これまた別に何もやっていなかったと言う体たらくです。しかし、これじゃ駄目だろうと思い立って、やっとこさ自動更新ツールを完成させ、今に至りました。

やはり更新させるのに手間がかかるのが滞る最大の原因でありまして、これをクリアした今年はなんぼかマシだと思いますので、一つ宜しくお願い致します。

とりあえず、徐々に完成させて行こうと思いますし、過去の文書も逐次復活させるつもりです。でも、あんまり力んでやると息が続かないので、のんびりチビチビとやっていこうと考えています。「完全復活の道は遠し」ですか...

自動更新ツール Zippo(1)

2004-01-11

前にも少し書いたが、今はWebの更新を全て機械任せにしていて、それを勝手に「Zippo」と名付けてある。ツールといっても何の事は無い、ただのAppleScriptである。

サイトを始めてから更新に手間が掛かるという問題は常に付きまとっていた。これはWindowsを使っていた時然りである。特別なオーサリングソフトを使ってないから、その管理・確認・アップ等はすべて手作用。特にマックに移行してからはアップロードさせるのが非常に面倒になった。使い勝手の良いフリーのFTPソフトがなかなか無いためである。更にはRSSを書き始めてから、その面倒さは頂点に達する。これが更新を滞る最大の原因であると言っても過言ではない。これを簡素化する為にZippoを作ったというわけ。

具体的には、シンプルな構造で記述したXML文書をXSLTでXHTMLに変換して、前回から更新された分をRSSに放り込み、変換されたXHTMLと更新されたRSSをアップロードする、以上までの過程をAppleScriptで行っている。僕のやる事と言ったら、文書を書いてZippo発動用のボタンをポチッと押すだけ。いや〜、楽だわ、楽。何で早く手を付けなかったのだろう? やっぱり食わず嫌いってはいけないね、何事もやってみるべきだ。

まあ、これでいままでの煩わしいさから解放されたし、そうなれば当然筆も進むって事になるんでしょう(←本当か!!)。

自動更新ツール Zippo(2)

2004-01-16

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(3)

2004-01-17

Zippoの自動更新プロセスは以下のようにしている。

  1. まず、元文書をXHTML化する。その際にサイトマップの構造を記した別ファイルを読み込み、それと照らし合わせリンク参照の処理をしてからローカルの仮想WWWサーバのフォルダにセーブする(元文書は元文書同士で完結しており、WWW上の構造には何ら関知しない。ローカル側とWWW側での関係は断つ事は、いくらローカル側での構造を変えようともWWW側には何ら影響が無い事であり、制作する際に非常に便利なのである)。ここでは出力の際のインデントを重視して、Saxonを使用する。
  2. 次にRSSファイルと変換されたXHTMLファイルを取り込み、XHTMLファイルから更新された分のセクションだけ取り出し、それをバックアップ用のRSSファイルとしてセーブする。ここではXHTMLのDTD検証を飛ばしたいため、libxsltを使用する(Unicodeを使っており、HTML固有の文字参照は使わない事でエラーを回避している)ネットワークを通さないDTD検証の方法が分かった為、エラー回避の必要性は無くなった。参考:DTD取得回避できた
  3. セーブされたバックアップ用RSSをXSLT Toolsを使って再変換。rss:item/rss:description要素の内容を要約するための関数、即ちAppleScriptのsummarizeを使って要約し、セーブ。精度が悪い為、現在は止めてます。
  4. そして、セーブされたファイル群をcurlコマンドを使ってアップロードする。

以上のプロセスをAppleScriptに記述して、それを普段使用しているテキストエディタ「mi」のツールとして登録して、ワンプッシュで更新完了なのである。

本当はアップロードの際にAppleScriptのURL Access Scriptingを使おうと思っていたけど、なんかPantherではバグで使えないみたい。しょうがないからcurlを使ったけど、UNIXなんか詳しくないからDaniel A. Shockley - Code-bitsを参考しただけ。でも正常に動いているから「良し」としてます。

兎も角、今まで以上に楽になった事は確かだ。全くもってAppleScript様様である。次の課題は今は手動でしているサイトマップ構造を記したxmlファイルを自動で更新できるようにする事かな。

インフルエンザが流行っているようですが...

2004-01-22

今年もまたインフルエンザが猛威を振るっているようですが、小生全く関わり合いがありません。自慢する訳ではありませんが、ここ5年ほど風邪もひかないし、病気で寝込んだ事もありません。

一見健康そうな小生、やはり少しくらい調子が悪いときもあります。小生、鼻炎持ちですので時々グズります。鼻が赤くなるほどティッシュを使う時が稀にあります。また、愛煙家でもありますので喉の調子を崩し、咳が止まらなくなる事が年1度くらいあります。

....ハッ、これ、もしかして風邪? いわゆる鼻風邪や喉風邪? 鼻炎や煙草の牲にしているだけで本当は風邪なんじゃないのか?

小生にとって風邪とは体が平熱以上を伴いダルくなる症状だと認識しているのですが、本当の所どうなんでしょうか。いずれにしろ、寝込まないだけ「有り難い」と思わねば。

皆さんも健康管理には気をつけてくださいね。特にインフルエンザ、あれはナメてはいけません。下手をすると"死"に至ります。うがいや手洗い、面倒でもやりましょう。

元・健康の為なら死ねる男より

Mydoom蔓延

2004-01-29

僕のところにもたくさん届く位だからかなり蔓延していると思われます。更には、より悪質になったMydoom.bなるワームも出回っているようです。見知らぬメールからの添付ファイルは絶対に開かないようにして下さい。それとアンチウィルスソフトは入れときましょう。特にWindowsを使っている方は必須です。

って言ってる割に自分は入れてなかったりしていますが(但しMacのみ、Windowsマシンにはちゃんと入れてあります)。以前はシマンテック社のノートンを入れていたんですが、Pantherには未だ対応せず。いつになったら対応するんだ、シマンテック!!