新着メールを受信した際の通知領域アイコンが、左右に振られ続けているマホ毛……もとい、アホ毛にしか見えない。しかも「ベッキー」繋がり。そんな妄想をしてしまうぐらい今「ぱにぽにだっしゅ!」の DVD 欲しいんだよ。でも金がないんだよ。そもそもボーナス出るのは12月からだから夏に向けてお金を溜めなければならないのだよ。去年は行けなかったから、今年こそは。休みもとれそうだし。
現在、会社ではメーラとして Becky! 2 しか使用してはならないとのお達しが出ている。……Mozilla Thunderbird は駄目。まったくもってゲンナリする。あれも駄目これも駄目と制限ばかりされていると息苦しいったらありゃしない。せめてソフトウェアぐらい自由にさせてほしい。因みに個人的には Becky! 2 デフォルトのツールバーアイコンは非常に悪趣味だと思う。配色もデザインも。
アイコンというものは少しでもデザインが狂えば、そのソフトウェアの印象をも決定付けてしまう。特にアプリケーションの起動を実行ファイルダブルクリックで賄う Windows と Mac OS は。そういう意味で、Mac OS の各種アプリケーションアイコンは綺麗を通り越して華麗とさえ言える。それに比べて Windows は……。まだ XP はアイコンビットマップにアルファチャンネルを持たせることができるだけ、ジャギーのないスムースなデザインを可能にしている。ところが 2000 以前の Windows はどうだ。私はあのギザギザを見るたびに不快感を覚える。
駄目だ。昨日から今日にかけてニュー速板と VIP 板をハシゴしながら「オタク女+ニャー速+Blog連合祭り」を追っかけていたため非常に眠い。どうなることやら。
無論、土日ぐらいしか時間がとれない。やるとしても結構量が多かったりする。以下リスト。
normal.css
(UA 間デフォルトスタイル差異調整)に記述を増やす直接 CSS とは関係ないが、まだやりたいことは山ほどある。
makerss.pl
を改造して mkfeed
にし、RSS 1.0(blog_rss_1.rdf
)、Atom 1.0(blog_atom_1.atom
)を同時に吐かせるようにする(XML::Feed を使う?)睡眠時間も……欲しい。
いわゆる Mozilla Firefox 2.0 のデベロッパ向けアルファリリースである Bon Echo Alpha 3 を常用 UA にした。Alpha 1 の頃にそれをやろうやろうとしていたのだが、結局忙しいやら何やらで今までズルズルと延びてきた。
普段の移行手順どおり、各 Extension の install.rdf
にある maxVersion 要素ないし属性値を 2.0.* に書き換えてやり、プロファイルの extensions.rdf
/ extensions.ini
/ extensions.cache
を削除して、念のため bookmarks.html
/ prefs.js
/ mimeTypes.rdf
/ mousegestures.rdf
/ cookies.txt
/ signons.txt
/ hostperm.1
以外のファイルを削除。Bon Echo Alpha 3 を起動してみてエラーがでないことを確認し、移行が完了した。
今のところ、以下の Extension は正常に動作している。
まあレンダリングエンジンそのものにはほとんど変更が加えられていないのだから、当然といえば当然か。
但し、bbs2chreader 0.2.11 だけは一部正常に動作しない機能がある。スレッド一覧タイトル検索がそれだ。検索語句入力フォームに語句を入れ、Enter を押すと次のような例外が発生する。
Error: uncaught exception: [Exception... "Invalid InterfaceID" nsresult: "0x80570018 (NS_ERROR_XPC_BAD_IID)" location: "JS frame :: chrome://bbs2chreader/content/board-page.js :: searchTitle :: line 369" data: no]
ちなみにコードの該当行は以下の強調部。
// フォーム履歴に検索文字列を追加 var formHistory = Components.classes["@mozilla.org/satchel/form-history;1"] .getService(Components.interfaces.nsIFormHistory);
未対応バージョンへ無理矢理入れた上での話なので、バグトラックに登録するかどうか検討中。
現在 Nightly を試してもみたが、レンダリングにかなり難があるため常用しないことに決定。やはり Cairo の導入によるものか。例えば、当サイトのドロップキャップ文字は全く表示されない。スクロール時にメニューがブレる。今後に期待。
因みに、風邪はだいぶよくなった。あとは痰が正常になるのを待つだけ。……やはり風邪には睡眠、食事、薬が肝心。あとはどれだけ初期症状が早めにわかるか。
勘弁してくれ。今も頭痛と咳に悩まされつつ、ベッドに潜り込んで惰眠を貪りつつこれを書いている。目が覚めてしまったため。原因は空腹。
どうしてか、風邪をひくと無性に腹が減る。食べずにはいられなくなる。さすがに消化能力に血液を使うのを避けるため、それなりに消化のよいものを食べる。そして腹がいっぱいになったら眠くなるから寝る。
……ああ、もう眠くなってきた。おやすみ。
結論から述べよう。
炭酸水に水に溶けるインスタントコーヒーをぶち込んでガムシロップを入れただけ。
それが「NESCAFE Sparkling Cafe」である。まったく拍子抜けもいいところだ。一体どんなB級飲料なのかとワクワクしていた私の予想は、見事に的中してしまった。……外れることを願っていたのに。
香料を、通常のコーヒーとはかなり変えてあるということだけは付け加えておこう。知っている方も多いとは思うが、このご時世、ブラックコーヒーにも香料をぶち込む時代である。そして、そういうコーヒーは大概不味い。それは、コーヒー豆本来の味を引き出そうという努力ではなく、香料でごまかそうという悪意から生じる、決定的な破綻である。だが、そこに脱脂粉乳と砂糖を入れればあら不思議。立派な「缶コーヒー」という独自のジャンルができあがる。完膚なきまでに元の味を叩き壊されたそれ(というより抽出時点で既に壊されているだろうが)は、別の代物になる。それをかなり極限まで追い求めた製品が「ジョージア MAX コーヒー」であるといえよう。
ただし、「コーヒー」は元々独特の香りを持った飲料である。よって、その香りを完全に消去してしまうと、もはや「コーヒー」とはいえなくなる。確かに「缶コーヒー」にはB級飲料として分類してもよいほどの味わいを出しているものもある(前述)が、しかしインパクトとしては弱くならざるを得ない。肝心の「香り」を強烈なものにすることができないからだ。コーヒーの香りは強いものであるとは言いがたい。容易に他の香料によって打ち消すことができる。そこに、「素晴らしい」B級飲料になれない根拠がある。
そこで、別の面からB級飲料たることを追い求めた作品が「Sparkling Cafe」であると言いなおしてもよいだろう。「MAX コーヒー」もまた然り。だが、人間は舌が感じる味覚の他に、嗅覚でも食品の良し悪しを決定する(無論、他の全ての感覚も用いられる)。「風味」という言葉はそれを体現したものだろう。よい香りのものはおいしそうに見えるし、逆にすさまじい悪臭を放つものはまずそうに見える(例外あり)。
下手に「香り」で勝負に出られない「コーヒー」は、そういう意味で他のB級飲料に対して不利である。「Sparkling Cafe」は出来損ないではないものの、明らかに追求の途中で挫折したという類の代物であり、飲む者にあまりインパクトを与えない失敗作である。
余談ではあるが、原材料にある「シリコーン」は、「シリコン」とは別物の、高分子有機化合物である。用途は消泡。勿論、名前の由来となったシリコンも含まれている。「石入れてどーすんの?」と感じたのは、私だけではあるまい。
具体的には、「秀丸」エディタぐらいしかインストールすることができない。かなり旧いものだが Cygwin があったので GNU Emacs があるのではないかと期待したが、あっさりと裏切られた。
「秀丸」を本格的に使うようになったのはこれが初めて。学生時代、共用の Windows マシンに入っていたものを使ったことはあるものの、それ以後は「TeraPad」を常用するようになった。しかし学科の演習室にあったコンピュータには Vine Linux だけが入っており、使うエディタはもっぱら GNU Emacs。「キーバインドが独特だが、それがいいんだよ」というネット上の意見を理解することができなかった時代は、結構長く続いた。
だがある時、GNU Emacs で最低限カーソルの移動ぐらいはできるようにしようと、キーバインドを覚えることにした。試しに GNU Emacs についてくるリファレンスを読んでみる。C-f の f が Forward という語から来ていると知ったのはこの時だ。あとは語呂あわせで難なく頭にキーが入り、指先が慣れるまでひたすらカーソルキーを使わずプログラミングなどをやった。一ヶ月ほどで、まだつっかえる部分はあるもののそれなりにスムーズにカーソルを動かせるようになった。気付けば半年が経過しており、その頃にはほぼ何も考えずにカーソルを動かせるようになった。以来、Windows 環境では xyzzy を用い、Linux 環境では GNU Emacs(今は 21.3.1 - Vine Linux 3.2)を用いている。
で、「秀丸」の話になるわけだ。
ぶっちゃけた話、私は「秀丸」に全く魅力を感じない。以下は、「秀丸」の公式サイトで紹介されている機能である。
だから? という感じのものばかりだ。この全てが GNU Emacs や xyzzy には存在している([]で囲ったものがその例)。かつ、それ以上の機能を有している。
百歩譲って、機能が貧弱なのは何とか許す。送金しなければならないのも、職場単位で購入しているため私の支出はないから、一億歩譲って許す。
だが、私にはどうしても許せないことがある。
キーバインドの設定が貧弱すぎることだ。
具体的には、例えば「秀丸」は C-x C-s を設定することができない。
もう Emacs を使っている人間にしてみれば噴飯ものである。つまるところ、タブ切替に C-x C-b を割り当てることができないという話にも発展する。C-x C-f も駄目だ。
さて、既にお気づきの方もいるだろうが、私は敢えてこれらの問題を一気に解決することができる(C-x C-b は微妙)案を提示していない。
XKeymacs を使えばいい、というのがそれだ。
しかし、それは許されない。なぜなら、会社でインストール可能なソフトの入ったディレクトリに存在しないからだ。Web 上から取ってくることもできない。インターネットへの接続には串を介さなければならない上、パスが設定されており、私のようなヒラの、しかも外注常駐人にはどうにもできない。
踏んだり蹴ったりだ。……うう。ついインクリメンタル検索かまそうとして C-s を押し、ファイルが上書き保存された時なんかもう。
これで ¥4000 も取るのか、という気になってくる。もし私が自身で送金していたら、当たり前だがこう叫ぶだろう。
返せ! 金返せ!
表紙に爆笑したのは言うまでもないだろう。あざとすぎて仕方ないそのしつこさに、敢えて敬意すら表したくなる。
それは置いといて。目次があったので眺めてみると、何やらなつかしいタイトルがふたつ。そう。「スーパーマリオ64」と「ゼルダの伝説 時のオカリナ」である。
あの限定された、あまりにも狭く、しかし思いつき次第でどこまでも広大に思えるその空間は、思春期真っ盛りの私の心を捉えて離さなかった。「マリオ64」ではピーチ城のてっぺんによじ登っては三段ジャンプで空を駆け巡り、橋を潜り抜け、そうしていつも堀の水が引いた後に現れるステージへの入り口にヒップドロップで入るのが習慣化していた。ダブル帽子もよくやったものだ。潜水艦のあるステージでは、必ずメタルになってから透明帽子を被る。するとメタルでもあり透明でもあるという素晴らしいひとときを、透明の比較的長い制限時間で楽しめる。そうしなければとりにくいスターもあった。
「ゼルダの伝説 時のオカリナ」もやり込んだ作品のひとつだった。いわゆるロックオンシステムの先駆けともいわれる「Z注目」は、縦横無尽に動き回るボスキャラとの戦いを楽にしてくれた。
今にして思えば、ナビィをただの丸っこい、擬人化されていない妖精として描写したこともある意味特筆すべきことだろう。甲高い「ヘイ!」という声もまた、性別という要素を有耶無耶にしてしまう効果を発揮している。……まあ、多分に女性的であるといえなくもないのだが。
よく考えるとリンクの周囲には女の子の影が多かった。まずサリアありき、次にゼルダ、マロン、ルトと続く。その面にはスタッフの思惑というか、ある種の信念のようなものすら感じられる。何しろエロゲーや恋愛ゲーで培われた典型的ヒロイン要素を兼ね備えている者ばかりだ。幼少期には、全員にロリ属性が。サリアは幼馴染、ゼルダは無論お姫様で真面目な委員長の要素、マロンは家庭的、ルトは今で言うところのツンデレそのもの。狙っていたとしか思えないし、事実そうしたのだろう。大人になってからも色々とやらかしてくれる。何しろコキリ族は成長しない故にサリアは子供のまま、ゼルダはシークとして男装する始末(さらに貧に(ry)。マロンは完全に「おかーさん」な感じであり、ルトはスタイル抜群になっている。
話が逸れた。元の流れに戻す。
「時オカ」ではオカリナをコントローラを用いて自由に演奏することができた。シャープやフラットまで出せたと思う。必要時はCボタンとAボタンで事足りるのだが、そこに3Dスティックを加えれば音階調節も自由自在。凄まじいまでの造り込みようである。私は休日の昼間、暇なときはよくコントローラをぐりぐりといじり、カカリコ村のテーマを演奏していた。無論、村の中で、BGM とハモるように。
「ムジュラの仮面」も買ったが、あれも不気味で非常によい出来だった。最終的にはバグ技(街のゲーム屋に入った瞬間鬼神の仮面を被ると、通常フィールドでも鬼神になれてしまう)を使い、ミルクを飲み、フィールドを散策する日々になった。
当時は PlayStation / PlayStation 2 を持っていなかったこともあり、64しかやっていなかった。だが64にはかなり(個人的には)当たりのゲームが多かった。「マリオカート64」、忘れてはならない「ブラストドーザー」、「スターフォックス64」、「Battle Field」でも使えるテクニックを身につけた「ゴールデンアイ 007」、そして「大乱闘スマッシュブラザーズ」。どれも今だにやり込みと対戦に耐え得る作品たちである。「スマブラ」ではネスとファルコンをよく使ったもんだ。相手によって使い分けていたような気がする。
今はもう、コンシューマゲームは全くといってよいほどやっていない。コンピュータに入っているゲームもほとんどないといってよい。その暇もないし、金もない。両方があれば、やるかもしれない。
小学生の頃は、時間があったなぁ……。と思い出に耽っている暇も、実際のところないのだが。
Mozilla Firefox は form 要素の子孫要素としてある input 要素を右クリック、「この検索にキーワードを設定」を選択すると、自動的にスマートキーワードとしてブックマークを登録するダイアログを開く。しかしこれを利用して、Amazon.co.jp のトップページメニュー下にあるサーチを登録しても、日本語が上手く認識されないで文字化けを起こす。今日はそれを回避する方法を見つけた。
結論から先に述べる。Amazon.co.jp 検索を Mozilla Firefox のスマートキーワードで利用するには、次のハイパーリンクをブックマークとして登録すればいい。
http://www.amazon.co.jp/exec/obidos/external-search/?__mk_ja_JP=%A5%AB%A5%BF%A5%AB%A5%CA&mode=blended&field-keywords=%s
失敗する場合は、前述の URI 文字列を手動でブックマークに登録してもらえればいい。その時、必ず「カタカナ」という文字列があると確認すること。%A5%AB%A5%BF%A5%AB%A5%CA
という部分はカタカナ
という文字列をエスケープしたもの。この部分がミソである。
前述の URI 文字列は、Mozilla Firefox 日本語版のサーチバーに予め搭載されている Amazon.co.jp サーチ((Mozilla Firefox インストールディレクトリ)/searchplugins/amazon-jp.src
)を参考にしている。URI 文字列やオプション(mode
と field-keywords
)はそのまま使っている。問題は、それだけでも日本語が化けるということだった。
UTF-8 に絡んだややこしい問題なのではないかと考え、about:config
で関連項目を洗い出してみたが、初期値のままだった。とすると、Amazon.co.jp CGI 側の日本語の取り扱いに関するオプションが抜けている可能性がある。
そこで私は、Amazon.co.jp の form 要素を調べてみた。すると、次の input 要素が目に留まった。
<input type="hidden" name="__mk_ja_JP" value="カタカナ" />
これだ。Dirty だが確実な方法として、「カタカナ」という文字列をわざと UA にエスケープさせ、どうエスケープされたかを判別することで field-keywords
にあるキーワード文字列の文字コードを推測していたのだ。ちなみにこの方法、えむもじらの「Firefox のスマートキーワード」という記事に寄せられたコメントで指摘があるように、英辞郎 on the Webでも用いられている。調べてみれば、他にも似たようなテクニックを使っている CGI がありそうだ。
そこで __mk_ja_JP=カタカナ
を加えてみると、見事にビンゴ。日本語文字列が正常に unescape され、正常に検索を行えるようになった。
まったく Amazon.co.jp は世話を焼かせてくれる。私の1時間を返せー。
実は、まだ他にも色々と仕込まれている。ソースコード閲覧とスタイル OFF(SEO と思われる)という、あまり一般人はやらないであろうことを逆手に取っていると思われるネタがあるのだ。今日はそれを紹介してみる。
「涼宮ハルヒの憂鬱 オフィシャルサイト」について既に知られているネタふたつは、悠々日記でも参照してもらえればいい。
早速解説に入る。
既知の、JavaScript を用いた偽物ではない。本物らしきカウンタが、トップページに設置されているのである。以下は、該当部分の HTML 断片である。ファイルの末尾付近、body 終了タグの直前に存在する。
<IMG SRC="/FS-APL/FS-Counter/counter.cgi?Code=top_counter">
実際にそのアドレスを表示させてみると、1px 四方の GIF イメージを得ることができる。いわゆる「隠しカウンタ」なのだ。……counter.cgi
が本当にページのリクエスト回数を計測するかどうかは定かでない。ただ、こういうギミックが用意されているということは知っていても損はないだろう。
次のような文面だ。
涼宮ハルヒの憂鬱オフィシャルサイト(SOS団公式サイト) 2006年4月より絶賛放送中!、角川スニーカー文庫にて絶賛発売中、訪問してくれた人ありがとっ!
涼宮ハルヒの憂鬱 オフィシャルサイト
このメッセージ、Mozilla Firefox、Opera、Konqueror、IE などでトップページを見ても見当たらない。それもそのはず、実は CSS を用いて視覚的には存在しないように見せかけているのである。もし Mozilla Firefox、Opera、Konqueror (Safari) で閲覧しているならば、スタイルシートを適用しないでみればすぐにわかる。
これは、いわゆる SEO だ。実際に、Google で検索をかけてみると、このメッセージがサイトの要約として Google が提供するテキストの中に入っていることを確認できる。
以下は該当部分の HTML 断片である。こちらも先程のカウンタと同じく、ファイルの末尾付近に存在する。
<span class="unnamed1"> <h1>涼宮ハルヒの憂鬱オフィシャルサイト(SOS団公式サイト) 2006年4月より絶賛放送中!、角川スニーカー文庫にて絶賛発売中、訪問してくれた人ありがとっ!</h1> </span>
また、class 属性値である unnamed1 に対応する CSS も同一ファイルに記述されている。以下は該当部分の CSS 断片である。
.unnamed1 { visibility: hidden; clip: rect(0px 0px 0px 0px); font-style: normal; font-weight: normal; overflow: auto; position: absolute; z-index: 0; height: 0px; width: 0px; left: 0px; top: 0px}
少し整形してみる。すると以下の CSS 断片を得ることができる。
.unnamed1 { visibility : hidden; clip : rect(0px 0px 0px 0px); font-style : normal; font-weight : normal; overflow : auto; position : absolute; z-index : 0; height : 0px; width : 0px; left : 0px; top : 0px }
実にあざとい方法だ。display : none
では SEO であると判別されてしまい、意図しない状況に陥ることを警戒したものと思われる。可視性(visibility
)、切取り(clip
)、オーバーフロー(overflow
)、絶対位置決め(position : absolute
/ top
/ left
)、スタックレベルの指定(z-index
)、内容の幅・高さ(width
/ height
)。
但し、この一行はただのコピペ、ないし別人によって記述された可能性が高いと私は考えている。クラス unnamed1 に対するもの以外のスタイル指定は、全て最後の宣言のあとにセミコロンがついているからである。よく見ると、クラス unnamed1 の定義だけは明らかに整形されておらず、かつ最後の宣言(top : 0px
)のあとにセミコロンがない。
top
属性の行にセミコロン(;
)が存在していないという事実は重要である。CSS Level2 勧告によると、宣言ブロックにおいては、同じ選択子に対する複数の宣言をセミコロンで区切りグループ化することが許されている。つまり、セミコロンは「区切り文字」と呼べるものなのである。区切りであるから、末尾につける必要もない。だからこそ最後にセミコロンは書かなくてもよいのである。詳細は「4.1.1 トークン化」並びに「附属書 D」を参照のこと。
で、例えばこの CSS 断片だけ長門さんが書いたんだというように妄想することができるわけだ。実に考えすぎである。
本来なら「なぜ EUC-JP なのか」について考察する予定だったのだが、改めてソースコードを読んでみれば出るわ出るわ。さすがに今回紹介したふたつはネタではないのかもしれないが、事実を用いて遊ぶことができたので私は楽しかった。それでいいのだと思う。
また遅くなったな……。仕事、遅刻しなければいいが。
今日は会社の方々と飲み会。なのはいいが、私は平日の、しかも強制的な飲み会は好きになれない。次の日起きられなくなる可能性が極めて高いからだ。それに、自分からすすんで行きたいと思うような会でないと乗り気にもなれない。今日は完全強制参加だったために、疲れが溜まる一方だった。
自分の意思で、自分の気の済むような呑み会をやりたい。そう感じた。
明日も仕事。明後日も仕事。で、何とか土日に休みが待っている。……よし。12時間睡眠だ。まだ恵まれてる。恵まれてる……? いいや。それは洗脳された認識だ。「プログラマってのはこうなんだよ」と、ありとあらゆるところで吹聴されている情報を勝手に自己認識しているだけだ。残業代よりも、定時に帰ることができる環境の方がよほどいい。できるだけ定時に帰ることができるようにクオリティ制御を行えればいいが、そうすると更に仕事を増やされるだけのような気もする。バランスが難しい。
勉強する暇もないな……。業務とは関係ないことを。
乗換えが多く集中して読むことが難しいものの、本がないと暇で暇でしょうがない。今読んでいるのは「郵便的不安たち#」(東浩紀 朝日文庫)。そろそろ左手だけでページを捲る技を完成させたいが、指紋が薄いせいかいまいちうまくいかないのがもどかしい。
通勤経路のひとつに山手線がある。今日も当然乗ったが、退勤時間帯だけあってかなり混んでいた。それでもぎちぎちに詰め込まれることはなく、しかし乗り換え駅までの所要時間が短すぎるため読書には適さない。
そうしていつも暇をもてあますので、何気なしに広告やらモニタやらを見ている。……電車に小型のモニタがつく時代になったのかとつくづく思い知らされる。しかも結構ピクセル数多めだし。
で、それらの情報が既知のものだったりすると、今度は周囲の人間に目が行く。まあよくこれだけの人間がいるものだと思わされる。どこもかしこも人だらけ。東京は過密だ。何も言わずに後ろから圧力をかけ、自分が押し通ろうと、ないし無理矢理乗り込もうとするヤツも多い。私は自分のスペースが圧迫されるのが嫌で、いつも「足踏み」をして圧力に抵抗する。弓道をやったことがある人間ならわかるだろうが、自身のどこの筋肉にどういう力をかければ効率よく身体を固定できるかが何となく掴めていれば、それだけで有利になる。声すら掛けずに押し入ろうとする人間なぞ知ったことか。そもそも入ってくるな。次の電車が三分後じゃないか。田舎のローカル線なら仕方ないが、三分ぐらい待てよと思う。私だったら待つ。圧迫されるのが嫌だから。自身がどれだけ恵まれた交通網に囲まれて生きているか、少しは実感した方がいい。そもそも駅すら存在しなかった町に住んでいた私にとって、今住んでいるアパートから駅まで徒歩で行けるということ自体が驚きなのだ。高専時代も歩きで行くには少し遠かった。自転車は必需品だった。
話を戻す。山手線に乗っていた時の話だ。
最近、「涼宮ハルヒの憂鬱」に代表されるシリーズがアニメ化された。私も原作小説を初めからずっと購入してきた手前、アニメ化は素直に嬉しいし、何よりアニメそのものが楽しめるものに仕上がっている。「何も知らない人間はわけわからんのではないか」という意見もあるようだが、あの意図的なズラしと演出は純粋に笑いをとることに特化したものだ。当然、そのこと自体を「ネタ」として視聴者に消費させる綺麗なループも構築することに成功している。各話のシナリオは大分削られている部分が多いため、情報量としては少なめ。ただ、そのクオリティ制御は特筆すべきものである。……またそれはいずれ考察するとしよう。取り上げるのは、小説シリーズ三作目、「涼宮ハルヒの退屈」のことだ。
いや、山手線で隣になったやつが読んでたもので。
しかも服装がネタになってしまうような凄まじさ。
私も服に関してはあまり関心がなく、そういう意味では同類なのかもしれない。ただ、ただそんな私にも言いたいことはあるんだ。
腰にシャツを結びつけるの止めようよ。
……どこのバブル時代組ですか? と問いたくなる。サラリーマンと OL と渋谷から乗ってきたであろうギャルたちに囲まれながら、そこだけ別空間。エクセレント。
我が身も少しはマシにせんとあかんなー、と感じた春の夜だった。
そりゃあやるべきことが山積みだからだ。今日は私も残業と相成った。
とはいえ21:00には帰宅することができた。それから風呂に入りつつ味噌汁を二食分作り、冷凍しておいたごはんをあたためながらポットの電源を入れて洗濯機を回す。同時進行しないと寝る時間も取れやしない。
今日の夕食は、帰宅途中でコロッケを買い食いしたためごはんとえのきの味噌汁、キャベツの千切りキュウリつきミニトマト添え。キャベツが少し古くなってしまったため、味はよくなかった。トマトは甘かったけれども。
やはり通勤時間がボトルネックになっている。40分以上の道程はロスが大きい。プロファイラにかけるまでもなく明白だ。だが短縮するには金が必要になる。東京は家賃が高すぎる。
早く土曜日にならないかなぁ、と既に溜息混じりの今日この頃。でも働かないと喰っていけないから、行くしかないんだけどね。(日本で用いられる意味での)ニート? 何それ。ウチの両親はそんな息子なぞ勘当して二人でラヴラヴ生活をエンジョイするだけだ。
当分嫁さんはいらないけど、一日が三十時間ぐらいになってほしいとは思うなー。
押井守監督の最新作、「立喰師列伝」。これ、丁度先月タカノ綾氏の個展へ行った際、同じ建物(渋谷パルコ)の上階にある「シネクイント」で上映していたらしく、階段が行列でえらいことになっていた。まあ東京で公開しているのはそこだけだから、仕方ないといえばそうなる。
劇場作品としては、「イノセンス」以来の新作。もしかしたらイノセンスを観た人が同じようなものかと訪れた可能性がある。……それはないかなぁ。どちらかといえば表現手法に注目したのかもしれない。「ズームイン 朝」でデモンストレーションやったらしいし。
まだ押井監督の作品は全部観ていない。とはいえ、全てをどうにかするとなるとえらいことになる。TV シリーズを除外すれば何とかなるものの、それでもまだ劇場版の「機動警察パトレイバー THE MOVIE」と「機動警察パトレイバー THE MOVIE2」、それに「攻殻機動隊」、「アヴァロン」、「イノセンス」しか観ていない。「うる星やつら」も「天使のたまご」も、「ご先祖様万々歳」その他諸々が残っているというのに。詳しい作品リストは「ユリイカ 2004年4月号 特集 押井守 映像のイノセンス」に収録されている。
そして映画を観てもいないのに「立喰師、かく語りき。」(押井守 徳間書店)を購入。中身は対談メイン。対談メンバーも豪華。鈴木敏夫、笠井潔、冲方丁と、それぞれタイマン。語られる内容も興味深いものばかり。いずれ考察する機会もあるだろう。
いつも tvk で「ひまわりっ!」→「ひぐらしのなく頃に」→「女子高生 Girl's High」、てれ玉で「うたわれるもの」、tvk で「夢使い」の順に視聴している。当然ながら寝るのは 03:00。録画した方が利口なのかもしれないが、観てる時間を他にとれないのが現実。
「ひぐらし」はどうしても観逃せない。友人に薦められて読んでみたのが運のつき。以来、解シリーズに入ってからも全て読み続けている。……が、さすがに「皆殺し篇」の超展開には爆笑してしまった。ああいうのもアリかよ、と。
今日はあまり気力がない。夕食しか食べなかったのがいけないのか。
その他諸々の出てくる漫画が「夢幻紳士【逢魔篇】」(高橋葉介 早川書房)。その他今日は「監督不行届」(安野モヨコ 祥伝社)と「リリアとトレイズ IV」(時雨沢恵一 メディアワークス)も購入。
「夢幻紳士」の歴史云々はおいといて。純粋に初見なのだが面白い。ディティール云々を語るのも面倒なのでやめ。感覚的に表現するならば、とても「ねっとり」した雰囲気を持った作品。画そのものから滲み出る濃さのようなものがある。物語は短く人物も少ないためパッパと読み終えることができるものの、私の大好きな「読み返したくなる」衝動に駆られることだけは間違いない。既に三回読み返している。
「監督不行届」は笑える作品と言ってしまえばそれまでだが、自分にもあてはまることがあったり、それはないだろうと苦笑するようなこともあったりで、多角的に楽しませてくれる。「ひと晩中イデオンの DVD を観てた?」という部分は、つい友人に借りた「ガンダムZ」全50話や、「かみちゅ!」DVD7巻分(30分1話×2話×コメンタリも聴くから2回×7巻 = 16時間)を徹夜エンドレスで観た学生時代を思い出す。勿論ガンダムZは観終わることなどできず、何日かにわけたし、かみちゅ!にしろ翌日学校でずっと死んでたのは言うまでもないだろう。……今そんなことしたら確実に死ねる。遅刻して会社クビになる。
「リリアとトレイズ」はまだ読んでない。
最近段々小食になってきた。今日も昼食はかけそば一杯と奴豆腐。晩飯はぜんまいの煮付けと焼き鳥。朝はご飯・味噌汁・漬物・卵・何か一品・お茶・牛乳。健康的なのか不健康なのかよくわからない。……腹減ってもノンオイルの和風ドレッシングを少しだけかけたサラダ食ってるし。仕事中は飴ばっかり舐めてる。脳味噌が栄養を欲しがっているらしい。糖分はとりすぎだろうか。
「監督」のように突き出た……というより友人曰く「ビール腹」をしている私。来年の人間ドックが怖いなぁ。
現場の自マシンについては Administrator 権限を掌握することができる上、キーボードを持ち込んでもよいことが確認できた。
早速明日持っていくことにしよう。
ただ、エディタを選択することが難しくなってきた。ソフトウェアを簡単にインストールさせてもらえなさそうだからだ。インターネット、特に WWW への接続は許可がいるらしい。ウイルス防止とはいえ、生産性を落とすことになると思うのだが……。Windows にはまず xkeymacs、Mozilla Firefox、xyzzy (ないし Meadow)を入れなければ始まらない。できれば VD と WinRoll、それに TClock Light も入れたいところ。nLaunch も入れられたら更によい。
OS は 2000。明日、再インストールを予定。何故なら前にそのマシンを使っていた人がデフラグツールを用いていなかったらしく、NTFS のくせに断片化が物凄いことになっていたからだ。グラフィックの殆どが赤色ってどういうことよ。断片化しすぎ。道理でディスクアクセスを要求する操作が異様にもっさりするわけだ。やたらシークしていることが音からもわかる。
まあキーボードの持ち込みが可能であることは救いだ。元々添えられていたキーボードはキーが引っ掛かる感じがある上、この上なくキータッチが悪い。HHK Lite 2 の方がよほどいい。
明日も出勤は早い。今日も早めに寝るとしよう。
ちなみに05:00起床で電車に間に合うか微妙なところ。……朝に弱い私をあざ笑ってるのか。畜生。
今日はそのためいつもより早めに寝ることにする。いつもは 01:00 なのだが、今日は二時間も早い 23:00。それで睡眠時間6時間なのだから、もうギリギリ。
長い通勤時間の間、今まで読めずに放置状態だった「パターン・レコグニション」でも読むとする。あと「S-F マガジン」。
今会社で言われて CVS について学習中。とはいうものの、ツールというものはじかに触らないと覚えられないものなので、現場に行ってから色々と弄ってみることにする。読むだけで理解できるような器用さは、生憎と持ち合わせていない。
そういえば、現場にはキーボードを持ち込んでもよいのだろうか。最近はセキュリティを厳しくするあまり、記憶デバイスの持ち込みを一切禁止する向きがある。今度の現場もその類。……キーボードはどうなのか知らない。
本社の方では Administrator 権限がなかったため 101 キーボードのデバイスドライバをインストールすることができず、泣く泣く JIS 配列のそれを使っていた。無論、Ctrl が左下にあるものだ。レジストリをいじることもできないので、CapsLock と交換することもできない。地獄の日々だった。それでもまだ xyzzy を使えただけマシだ。今度の現場はそうもいかないだろう。……カーソルキーまで手を動かしたくない。面倒。馬鹿馬鹿しい。
せめて、せめて毎日使うものだけは、自分の好きなようにしたい。ささやかだが重要な願いだ。せっかく HHK Pro を買って Lite 2 が余っている。使わずに腐らせておくのは勿体ない。だからと言って現場に Pro なぞ持っていくわけにはいかない。何せ、家のコンピュータを構成する部品の内で最も高額なのだから。
X Window 環境なら、xmodmap でどうにかできるのに。窓め。
つまりは goto 乱れ撃ち。コードの殆どが Windows バッチファイルの上に、環境変数の命名規則が無茶苦茶。バッチファイルを細分化してモジュール化を図っているようだが、その分割したファイルを実行ファイルと同一のディレクトリ(フォルダ、か)にぶち込んであるうえ、ファイル名と実際の動作が異なるものまで存在する。やっていることは仕様書を読む限りそれほど難解ではないのだが、コード量は膨大。
これは、今度メンテナンスすることになったプログラムの話だ。
更に付け加えるなら、バッチファイルの説明コメントがないものもある。それだけならまだかわいい。どうにもバッチファイルだけではやれないと考えたのだろう。Perl まで持ち出してきてテキスト処理をさせている。確かに Perl はラリー・ウォールの言うように glue 言語であることは認めるが……。
えっと。最初から Perl で組んだ方がよいのではないですか?
ということで、もしこれをカスタマイズなり何なりしろというお達しが出たならば、私は全て Perl で書き直す。コマンドラインを云々したくなれば、``
なり何なり使えばいい(「やめろ!」という制止の声が聞こえる……)。つまりやりたいことができればいいわけだ。そういう意味で、Perl は私の期待を裏切ったことがない。どんなに稚拙で冗長なものであったとしても、それがしっかり動き、使えることが重要なのだ。改良は後からすればいい。
カーナハン博士は、共著「プログラミング作法」で次のようなことを語っている。「悪いプログラムにコメントをつけるな。書き直せ」(うろ覚え)。私もこの教訓に従うことにしよう。
以下蛇足。
この前友人二人と秋葉原に出かけたとき、秋葉原 UDX の AKIBA_ICHI という飲食テナントエリア2階にある「TRATTORIA Alioli」という店でランチをいただいた。というか、私の奢りにさせられた。……一人には金借りてたし。もう一人は貧乏学生だし。
で、ランチメニュー(880円 + セットコース)のパスタを注文した。私は「蛸とブラックオリーブのラグー」。
本当は、ボンゴレビアンコがあればそれにしたかった。私はいつもそうだ。だが、この店には「ボンゴレロッソ」しかなかった。……要するにトマトソースの代物だ。ビアンコは塩。
まあパスタの形状を考えればそれも仕方ないだろう。どうしても粘りのあるタイプのソースでなければ、その平べったい表面に絡んでくれないだろうから。塩ベースのソースでそれを実現するのは、素人目からしても難しそうだ。パスタの形状に疑問符を浮かべた方は、まあ「きしめん」状だと思ってくれればいい。
ソースはトマトベース。見た目・味ともに濃く、しかしくどくはなかった。ランチとしてはこんなものか、という具合。
ただ、具材の蛸が駄目だった。はっきり言えば「まずい」。オリーブは問題ない分、蛸の食感、香り、味の三大要素が全て駄目という事実に、正直驚いた。食感は古くなって固まった10円ガムのようで、魚介が古くなった独特の臭いがする上、味がない。マダコは秋から冬、イイダコは3月から5月が旬だそうだ。私は食べ分けることができないからどちらであるかはわからなかった。別の種類なのかもしれない。
もしかしたら、その当日の蛸が悪かっただけで、別の時には良いものが入っているのかもしれない、というフォローだけはしておく。
……ボンゴレビアンコ食いてぇなぁ。
やはり五月病はゴールデンウィークが助長しているのだろうか。
明日からまた会社。やることは VC++.NET を使えるようにすることだとか、開発補助ツールを実装することだとか、そんなところ。やること目白押しで休む間もない。あー、次の週末って何日だっけ?
とりあえず睡眠をとってから考えよう。昼夜逆転生活を送っていたからなぁ……。
気づくのが遅く、最後の方で Mozilla Japan 理事の瀧田佐登子氏に対するインタビューを視聴することしかできなかった。UHF 系とはいえ、テレビ局に取材されるまでの知名度が日本でも出てきたということなのだろうか。
インタビューの内容は以下の通り。尚、以下の内容は私による個人的な要約であり、Mozilla Japan の公式なものではないこと、途中からの内容であることを予め断っておく。
オープンソースというプロダクトを日本で広めるにあたり、明確に責任を負う母体となる組織が必要だった。その責務として以下のものが挙げられる。
日本には5年ほど前からもじら組というコミュニティが存在していたが、そこへ上記事項を実行しろとはいえなかった。
Mozilla Japan は、Mozilla Foundation の公式支部という形でなければならなかった。それは、Mozilla Foundation とのパイプ役になり、Mozilla Japan で受け付けた事項をゆくゆくは Mozilla Foundation に伝達する使命を果たすためだ。
日本では調査会社による差もあれど数2~3%しかない。
世界規模でみると15%ほどになっている。
日本ではお金を出して商品を買う発想が根強く、フリーのものをダウンロードしてインストールすることに慣れていない部分がある。
ヨーロッパ自体、元々オープンソースという(形態に対する文化的な)土台ができている部分がある(ためにシェアが高いのではないか)。
Mozilla Japan のサイトからダウンロードしてくれ。
無料。
それまでの利用者は技術者が多かったが、Mozilla Firefox をリリースしてから一般的なユーザが増えた。
かつては Web サイトを閲覧するだけの用途に使われていた UA が、ここ1、2年ショッピングやビジネスに利用されることが多くなってきた。そうした中でセキュリティへの意識が高まり、そこに Firefox 1.0 リリースが合致し、需要と供給が一致した結果、ユーザ数を伸ばしたのではないか。
使い勝手に関する差はあまりない。
Mozilla Firefox では様々な不要と思われる機能を落とし、最小限のものにしたという経緯がある。必要なものはユーザが付け加える形というシンプルさがウケたのではないか。
使いこなすほど味が出るという言葉もある。
製品を世に広めシェアを広げるだけではない。
ユーザに選択肢(チョイス)を与えることも目標のひとつ。
Web では様々な問題が発生している。デザイン崩壊や IE 専用サイトの存在などだ。それらの(非標準準拠)サービスを提供している人間に対し、ユーザに選択肢を与えるために標準準拠の重要性をアピールすることも、大きなミッションである。
筆者補足:IE しか使えない状況は、ユーザの UA 選択肢を狭めていることに他ならない。そこで標準に準拠することを推進し、あらゆる UA で同等の情報を得られるようにすれば、ユーザが自分の好きな UA を選択できるようになる――という論理である
ブラウザをベースに様々なことができるようになる。ブログツールやコミュニケーション、ビジネスなどだ。
忘れてはならないのは、技術者は標準化を頭に置かねばならないことだ。一般的なユーザはそんなことは考えていない。
Web 2.0 という言葉も見え隠れしている状況なので、今後どんどん(UA を取り巻く環境が)変わっていくと思っている。
個人的な所感を。
最も引っ掛かったことは、インタビュアが「Mozilla」という言葉を用いていることだ。Mozilla といっても、それが何を指しているのか明確でないように感じられたからだ。Mozilla Suite なのか、Mozilla Firefox なのかわからない。しかし Firefox なら Firefox と明確に言うのではないかと考え、Mozilla Suite のことかと推論したものの、Firefox の話が出た後で「ユーザにとって、IE と Mozilla はどう違うのか」と訊くあたり、明確に理解していないのではないかと思われる。Mozilla という漠然としたものしか頭にないのではないか、という印象だった。
しかしインタビューそのものは、私にとっては既知の事項が多かったにしろ、他の視聴者にしてみればかなり有益な事項が盛り込まれていたと思われる。ただ、その性質上瀧田氏が明確に答えられなかった面もあり、歯切れのよい内容だと言えないのが心残りだった。
誰か番組最初からの録画、もってないかなぁ。……でも、録画データの授受は法律上どうなんだっけ。調べてみるか。
今は一回のスクロール量が小さいが、個人的にそれがウザいと感じるようになったので、スクロール量を増大させようと画策中。
しかし、大きくすると境界条件判別が甘いらしくうまく動かない。ということでコードを書き直している。
このサイトはほとんど JavaScript による操作を取り入れていない。また、今後も今流行りの Ajax を導入する気はない。少なくとも、表面的には。
確かに、どこぞの GUI アプリケーションのような操作感を得られることが好ましい場合もある。その事例が昨今次々に登場している Ajax アプリケーション群だ。この前私も livedoor Reader を使ってみたが、かなり設計と実装に力をいれていることを窺い知ることができた一品だった。Google マップや goo 地図は、既に外出時の必需品と化している。まず Google マップで大まかに調べ、より細かい地図を出したくなったら goo 地図を用いる。……その理由は、goo 地図が使いにくいため。Google マップがなるべく上下左右のスクロールを発生させないように、また余分なインタフェイスを極力表示しないようにしているのに対し、goo 地図は余分なインタフェイスは多いわ(カスタマイズで消すこともできない)スクロールは発生するわでイライラしてくる。だが最大倍率だけは goo 地図の方が上なのだ。
話を戻す。何故当サイトが JavaScript によるインタフェイスを導入しないか。それは、必要ないからだ。
実に単純な理由だと思う。必要がないから、何もしない。ごく少数の例外はあるものの(例えば前述のバナースクロール)、それ以外は大抵 XHTML + CSS で済んでしまう。.htaccess が使えるので UA 判別 + SSI で IE 専用 CSS を適用するか否かを判別させている。それだけだ。Blog の過去ログにしても、ファイルを作りアンカーを敷けば済む。まあ、もし Blog の全文検索をやろうという気になったら、エンジンに Perl を、インタフェイスに Ajax を導入するのかもしれないが、今のところその予定もない。
バナーのスクロールという例外は、あまりにもバナー数が増えてしまったためにフッタ領域を占有する羽目になったからだ。やろうと思えば CSS を用いてスクロールではないが :hover
ないし :focus
による表示・非表示切替は実装できるし、試してみたことがある。それがしっくりこなかったので JavaScript を使うことに決めた。
……今思い出したのだが、現在の「Space」スタイル、メニュー部の実装を変更する予定だった。とはいえ IE は従来どおりで、問題となるのが Gecko などの :before
/ :after
擬似要素を実装している UA。それについては追って記すことにする。
きちんと休みがあるだけでも儲けものだと考えるようになってしまっている今日この頃。
未だに引越し当初から本を詰めたままの段ボールが転がっている状況をどうにか打開したいと考えているものの、よい本棚を売っている店が近くにないのが困りものである。そうしているうちにもどんどん本は増える一方。以下購入リスト。
このままでは段ボールにも入らなくなってしまう。しかし本棚は見つからない。かといってカラーボックスなんぞに入れようものなら本の重みで板がたわみ、終いには崩壊する(経験済)。それに、カラーボックスはモノによるものの、大概ひとつのボックス高が高すぎる上、奥行きがありすぎる。文庫本の山を収納できない。大判コミックやムック、SF マガジンその他諸々にはよいのかもしれないが……圧倒的に多い文庫本をどうしろと。
しかしまだ諦めるのは早い。世の中にはもっと大量の書籍に囲まれている人間だっている。こんなのは苦労の内に入らない。……かもしれない。
この前秋葉原に行った折、とうとう「かみちゅ! 8」を購入した。何しろ近所のレンタルショップには置いていないのだ。……「トップをねらえ2!」は置いても「かみちゅ!」は置かないんですかそうですか。まだ観ていない。
前回の続き。今日は JScript から Excel をどういじるかについて云々。
VBScript についてのサンプルコードはネット上にそれこそ無造作に転がっているものの、JScript でのサンプルはあまりないのに正直首を捻りたくなった。使いやすいっていえば使いやすい言語なのに。VBScript はどうにもスコープが見にくくて好きになれない。同様の理由で Pascal も。それを言ったらインデント量でスコープが決まる Python も然りか。
そもそも JScript が実装された経緯からしても、Microsoft としてはあまり目立って使いたくも、また使ってほしくもないのだろう。VBScript のサンプルが大量に存在するのは、Microsoft の関連サイト(MSDN など)でも同様のことだ。やはりメインで使ってほしいのは VBScript なのだろう。
だが私はあえて JScript を選んだ。……慣れていたというのもある。開発期間が2日という短さだったせいもある。昨日もずっと設計とコーディングをしていたのだが、VBScript なぞ使った日にはもう1日欲しかったに違いない。
話を戻す。JScript から Excel を利用する方法についてだ。
まず最初にするべきことは、ActiveXObject
オブジェクトのインスタンスを生成することだ。以下サンプル。
var excel = new ActiveXObject("Excel.Application");
ActiveXObject
オブジェクトそのものは、Web サイトを構築したことがあり、かつ JavaScript を使ったことがある人間ならもしかしたら見たことぐらいはあるのではなかろうか。私は DirectX フィルタを用いたアルファブレンディングのサンプルコードで見たことがある。
つまるところ、このインタフェイスを通じて ECMAScript という言語の枷から飛び出ることができるという按配だ。前述でインスタンスを格納した変数 excel
を介して、Excel の様々な機能を用いることができるようになる。
例えば、特定の Excel ファイルをオープンし、そのオープンしたファイルへの参照を取得したいとしよう。以下のコードがそれを実現してくれる。
var excel = new ActiveXObject("Excel.Application"); var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); // Windows ファイルシステムへのインタフェイス var filename = "test.xls"; // ターゲット Excel ファイル名 // GetAbsolutePathName メソッドにより filename までの絶対パスを取得する var workBook = excel.WorkBooks.Open(fileSystem.GetAbsolutePathName(filename), 0);
上記は、Excel ファイル(ワークブック)を開いているコードだ。こうすることで、ようやく Excel ファイルへの I/O が可能となる。
そして、次にもう一段階、大事なことをする必要がある。ワークシートの選択だ。ワークシートとは、まあ Excel に限らず表計算ソフトを使ったことがある方ならわかるだろう。升目の入ったあの表は、ひとつのウィンドウ内で、多くは画面下にあるタブインタフェイスで切り替えることができる。その、切替可能な表のことだ。
var activeSheet = workBook.ActiveSheet; // 現時点でアクティブになっているシート var namedSheet = workBook.Sheets("シート名"); // シート名で選択 var numberdSheet = workBook.Sheets(1); // シート番号で選択(先頭が1)
どうにもシート番号の先頭インデックスを1にしている辺り、BASIC の臭いがプンプンする。配列番号は0からだろ! というのは BASIC 系以外(他にもあるのだろうか?)の言語では常識。人間にあわせるか、機械にあわせるかの違いがこういう場面でひょっこり顔を出す。特に古い言語では機械に合わせていることが多い。特にC。
セルの中身云々についてはまた今度。
業務で JScript をいじった。言語セレクトは自前なので、敢えて選択したという形。Excel ファイルをネイティブにいじれる Windows 標準装備言語って、VBScript か JScript ぐらいしかないというのが本音。VBScript なぞいじりたいとは思わなかったし、ECMAScript ベースだから……。
で、色々調べるために MSDN を参照したんだが……
使いにくいことこの上ない。
……まずい。コメントする気も失せてきた。