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

目次

「やっぱり不思議マークアップは駄目だ」って話

2004-12-03

「携帯電話で近辺の映画館の上映時間が調べられれば便利だな」と思っているのだが、自分のような田舎には、そんな携帯用サイトが無い。無いなら作れば良いだけの話だが、自分で時間を調べて作るってのは非常に面倒いし、絶対に長続きしない事は目に見えている。何処かのサイトから情報を拾ってきて、そこから必要な情報のみを加工し携帯用サイトに仕上げるのがベストだが、如何せんそんな技術は自分には無い。せめて、情報を持っているサイトがwell-formedなXHTMLならば、XSLTを使って何とかするのだが、不思議マークアップが溢れている昨今、そんなサイトは皆無である。

最近になって、『HTML Tidy』なるソフトウェアを知った。文法違反のあるHTMLを正常なものに変換出来るソフトみたいだが、HTMLからXHTMLに変換可能であるらしいと言う事なので早速使ってみたが、なるほど、中々良さげです。空要素や省略されたタグの補完もしてくれるし、素の「&」も文字実体参照に変換するし、ちゃんとwell-formedになってくれます。「これを使えば行けるんでないの?」ってな具合で、色々をやってみた。(W3Cのサイトをよくよく見れば、『HTML Tidy』の項目がすっと以前からあったいうオチ。…よく見ろよ、自分…)

まず、情報を持っているサイト探し。独自サイトを持っている映画館もあるが、それらから情報を引き出そうとするとHTMLの書き方の違いから幾つかのXSLTを要しなければならず面倒いし、何より自作のページらしく書き方がコロコロ変わる(URIが変わるところまである)ので、実質上使えない。結局、統一されたフォーマットと必要な情報を持ち、結構な映画館をサポートしているYahoo!ムービー 映画情報のページから取得する事にした。

しかしながら、問題発生。Yahooは文字コードにECU-JPEUC-JPを採用しているので、HTML Tidyのサポート外。そこで、iconvを使って、ECU-JPEUC-JPからUTF-8に変換し、それをHTML Tidyに通してXHTML化すると言う方法で切り抜ける。しかし、まだまだ試練は続く。上映情報の記述に一貫性が無いので、抜き出すのが難しい。無論、構造化されている筈も無く、単なる文字列なのでXSLT1.0のみではちょっと無理っぽい(基本的に日付や時間をスペースで区切ってあるのだが、それが無かったり全角だったりして一貫性が無い) 。で、ここは正規表現が使えるXSLT2.0で処理する事にし、最終的に携帯用サイトをつくりだした。プロセス的には以下の感じ。

  1. curlで、Yahooからソースをダウンロード。
  2. iconvで、文字コードをECU-JPEUC-JPからUTF-8に変換。
  3. HTML Tidyで、HTMLからXHTML化。
  4. Saxonで、XHTMLから情報を加工し、独自XML化。XSLT2.0を使用。
  5. libxsltで、独自XMLから携帯用サイトを作成。携帯用なので、文字コードはShift_JISにする。
  6. curlで、携帯用サイトをアップロード。

以上のプロセスをAppleScriptで書いて、cronに仕込ませることで、自動でサイト更新される環境が出来たのである( ← やったよ、自分!!)

でね、その過程で身にしみて分かったのは…、「不思議マークアップや一貫性の無いサイトは役に立たん!!」って事。折角コンピュータを使って、楽に『情報の共有』が出来るようになっているんだから、その利点を存分に発揮にしろと言いたい。人間に分かってもコンピュータには理解不能じゃHTMLの有効性が半減するし、well-formedでないXHTMLなんて存在理由すら無い。

しかし、XSLT一辺倒ってのも不便だ。ここはいっちょ、気合いを入れて何かしらのプログラミング言語でも勉強するか。

車でiPod mini

2004-12-27

日常、公共の交通手段をほとんど使わず専ら車を移動手段としている自分の地方では、ウォークマンに代表されるポータブルオーディオ機を使う機会が無いが、近々、遠方に繰り出す用事が出来たので、その移動の際に使おうと思って、iPod miniの購入を検討してみた。しかし、その為だけのiPod miniでは勿体ないので、車でも使えるようにオプションも一緒に購入しようと考えた。

iPodを車で使用とするとなると方法は幾つかあるが、自分の環境ではFMトランスミッターを使ってラジオで使う方法が一番だろうと考えて、そのオプション選び。まず必要なのはFMトランスミッターだが、長時間の使用を考えると電源の確保も必要になる。FMトランスミッターや車のバッテリーから電源を取るアダプタは各社から販売されているが、自分の希望としてはなるべく面倒な手間が掛からない物が良いと考え、デンノー社のiTranserに決定。FMトランスミッターと電源アダプタが一体になっており、ドックコネクタを通して接続するだけで、iPodを充電しながら聞けると言う所が決め手。

で、実際使用してみると、これが大正解。一番心配された音質だが、ノイズも乗らないし、普通のラジオを聞くよりもクリア。無論、充電もしているのでiPodのバッテリーを気にする必要も無いし、エンジンを切ればiPodにもポーズが掛かり、放っておけば自動的に電源が切れる仕組みになっている。シガーソケットに差し込んでいると常に通電状態っていう点が気になるが(ON/OFFのスイッチが欲しかった)、いずれにしろ良い買い物したと満足している。

日常でポータブルオーディオ機を使うなんて考えてなかったけど、「車でiPod」ってのはかなり便利だ。いちいち車用のCDを焼く必要も無いし、車載する事も無い。それでいて、家にいるのと同じ位の音楽ライブラリーが車の中で聞く事が出来るし、マイベストを作るのも簡単だ。案外、地方在住の音楽好きにこそ、iPodは便利なのかも知れない。地方在住の音楽好きの諸君、iPodは買って損は無いよ!

ところで、iPodは音楽だけでなくオーディオブックとしても使える。オーディオブックってのは馴染みが無いかも知れないが、所謂『朗読』を聞く事が出来る。「ならば」と言う事で、大森智史氏の制作したフリーの音声化ソフト・Monzaiを利用したWebページやテキストファイルを音声化しiPod用のファイル形式に変換するスクリプト(8KB)を作ってみた。「…注意深く聞いてないと何言ってんのか分かんねぇし、危なくて車の中じゃ使えねぇ…」ってな具合の実用性の低い冗談みたいなスクリプトに仕上がったが、英語のヒヤリング位には使えるかなと思って公開しときます(別にMonzaiの悪口を言ってる訳ではないですよ。Monzai自体は面白いソフトです。分かっていると思うけど、念の為)