うたわれ真最中

いやはや、シミュレーションパートが面白いのなんのって。そしてキママゥが非常にいやらしくなっているという罠。何、あの「混乱」大量生産兵器。おかげでエルルゥ姐さんフル稼働なうえに、きちんと混乱解消アイテム持ってないと当のエルルゥがやられた時にどうしようもなくなる。

しかし、以前はなかった「演習」メニューでレベルを少しずつ上げておけば、メイン戦闘がかなり楽になる。ナ・トゥンク戦の前に女性キャラを鍛えておくとか、そういう使い方ができて効率的。ただ、その前にオボロ、ドリィ、グラァ、ベナウィ、クロウをそこそこ強くしておかないと新シナリオパートで苦戦するかも。

まあ、「うたわれるもの」では個人的にオボロが最も育てやすく汎用性が高い駒だと思っているし、実際そうだから、他の4人をそこそこ補ってくれる。勿論初期から常にパーティーに加えてじっくり育ててやらないとこうはならない。そして、ボーナスポイントは全て攻撃力にまわす。防御・術防御は犠牲にしてかまわないレベル。何ていっても攻撃力を上げておけばほぼ相手を即死させられるぐらいに成長するし、足が速いので当然ながらヒット & アウェイタイプ。だったら一撃でより多くのダメージを与えられた方が能率的。

アルルゥにしても、非常に上げにくい(ポイントを喰う)が攻撃力を上げておいた方がよいと考える。防御は最強なのだから、あとは攻撃を補えば、移動速度があまり速くはないという欠点を補ってくれる形になる。

一番驚いたのは、カルラが初期状態ではまるで使い物にならないということ。その時点で既に最強と化しているオボロと比べると、マジでいらない子状態。だがそれも、じっくり育ててやり、連撃がフルになるとようやく使い物になってくる。移動速度が遅く、防御はそこそこで、ハクオロの次くらいに敵に狙われやすい属性なので、体力もあるからアルルゥと同じく防壁として用いるのがベスト。こちらも攻撃力アップ偏重主義で。

同じく初期は使い物にならないのがトウカ。アイテムを手に入れ、じっくり育ててようやくものになる。防御は普通、移動は良い方、そして何より狙われにくい属性。オボロの次にヒット & アウェイが得意。バランスがいいので、使い道に困らないといえる。ちなみに、ガチャタラがいない状態でのアルルゥとの共撃は見物。

最初は使うが、あとで全く出番がなくなるのがドリィとグラァ。これは PC 版でも同じだった。遠距離攻撃ができるとはいえ、他のキャラが成長するとほぼ1撃1殺が可能になってくるため、懐に飛び込んで――というパターンが多くなる。アイテム投擲ができるようになると確かに有用性は増すが、そもそもアイテムをあまり使わなくなってくると逆に有用性もへったくれもなくなってくる。

カミュに関しては省略。いや、だってああなるし。ぶっちゃけ育成の必要はない。まあ最強術法を見るために――というのなら別だが。

ウルトリィは実は狙われにくい(トウカほどではない)上に、移動力もあり、防御もアイテムで補ってやれば、意外と使えるキャラになる。がんばって育ててウルトリィレーザー(俗称)を出せるようになれば、多分もっと使い勝手がよくなる。まだそこまでいいってないけれども。

ベナウィは使いどころに困らない。攻撃力も上げ続けてやれば問題なし。ただ少しステータス変化に弱いので、エルルゥからあまり遠ざけない方がいい。

クロウはベナウィと基本的に同じだが、ステータス変化はほとんど起こさない。起こしたところを見たことがない。だが防御が意外と弱いので、アイテムかエルルゥ姐さんの世話になることが多い。狙われやすさも中ぐらい。

エルルゥは、多分一番パワーアップしたキャラ。何より薬術が有用性高い。意動力の低さをそれ系の装備でカバーしてやり、攻撃力と防御力を 2:1 ぐらいで上げ続けてやればかなりいい感じ。しかも今回は薬術で自分自身の回復もできるようになっているので、まさに本当の移動病院。他キャラのステータスを一時的にいじれるので、最近はいつもカルラに術防御アップを、ウルトリィに防御アップを、トウカに攻撃力アップを施している。毒系の薬術は、範囲があまり広くないので使いどころに困る。よほど切羽詰った場合でないと、多分使われないだろう。

ハクオロは序盤、全く使い物にならないが、アイテム入手とレベルアップでオボロに次ぐ攻撃力を早々に獲得することができるようになる。ハクオロは一番能力値のバランスがいいので、防御と術防御は二の次で攻撃力を上げ続けるとすごいことになる。一番狙われやすい属性なので防御アップも必要かもしれないが、ぶっちゃけた話エルルゥを範囲内においておくか、アイテムを持たせておけば問題なし。1撃1殺ができるので、すぐに敵を淘汰することができる。

……以上がこれまでプレイした状態での所感。ノベルパートは以前より演出が細かくなっている感じ。18禁から15禁になったので、露骨な表現はなくなっているものの、ここまでやるんだ、という驚きはある。まさかエルルゥとあーなるとは。おじさんびっくりだ。

2006-10-31

IE7 用バナーポップアップ実装

IE7 でぐちゃぐちゃになってたバナーポップアップを、一般 UA 用ポップアップを再実装したついでに対応。以前は出現し続いている2つは float、ポップアップで出現するその他は position + negative-margin [1]で位置制御していた。今回それを改め、全ての位置制御を negative-margin で行わせるようにした。IE6 では以前の float オンリー制御を用いている。

negative-margin による制御に移行した結果、「4つめ以降のバナーに対し、個々に位置指定を施す必要がなくなる」という利点を得ることができた。以前はいちいち ID をふりわけて bottom で制御していた。これでいくらバナーを追加しても問題ないようになった。

そして IE7 の話なのだが……。またまた IE7、やってくれた。Firefox / Opera では問題ないそれも、ポップアップアイコン(「▲」があるそれ)を表示させることができない IE7 独自の問題を抜きにして、崩れた。詳細不明の 5px 程度の補正値を噛ましてやらないと、どうにもならないのだ。つまり、CSS2 の仕様から算出した計算値と合わない部分がある。だから原因不明。私にどうしろと?

何だかなぁ。この前まで真っ白だった IE7 用 CSS ファイルが、どんどんパッチで黒ずんでいく。

脚註

  1. マイナス値 margin 指定のこと。position : relative とよく似た挙動を示す。が、決定的に異なるのは negative-margin 指定によって移動したボックスは、後続するボックスに影響を及ぼすことだ。

2006-10-30

今週末は……スゴイ

何がって、観るべきもの、やるべきもの、そして読むべきもの。以下リスト。

ああ。時間がない。……まあ、ゆっくりと観るさ。録画してあるものもあるし、サクサクいこう。

ちなみに以下既読。

もっと時間がほしいなぁ。

2006-10-28

Mozilla Firefox 2.0 Released - IE7 の % 計算精度が低すぎて落胆

Mozilla Firefox 2 最新版へアップグレード各所で既報だが、Mozilla Firefox 2.0 が正式にリリースされた。アルファ・ベータ段階で既に乗り換えてクラッシュレポートをたまーに送っていたため、移行云々の話は過去のもの。Tab Mix Plus も RC 段階ではあるものの 2.0 サポートが施され、これで本格的にブラウジングを楽しめる環境が整った。でも Trunk も追っかけるよ? 一応。

しかし今日も今日とて愚痴らせてもらうが、IE7 には本当に絶望した。あまりにも酷い。酷すぎる。今日の更新で CSS ファイルに加えた修正内容は Updatelog にあるからそれを参照してもらおう。特に採り上げるべきは、IE7 は % の計算精度がどうやら低い(四捨五入・繰上げ・繰下げのやりすぎだろうか?)らしく、描画領域の高さを変動させると % 単位で absolute ポジショニングした要素位置が激しくズレることだ。時間がないのでキャプチャは用意できなかったが、とにかく試してもらえればいい。簡単に実証できる。私がやっているのは以下のような指定だ。

#footer
{
  /* 前略 */
  height              : 10%; /* body 要素高さに対するパーセンテージ */
}

/* 正式には div#feed であり、#footer の子要素 */
#feed
{
  margin-top : 3px;
  position   : absolute;
  top        : -900%;
  right      : 3px;
  z-index    : 0; /* 1-0 */
}

当サイトを閲覧している方(スタイル「Space」)は、右上のフィードアイコンを見ていただければよいだろう。そして IE7 で実際にウィンドウ高さを変えてみてほしい。そうすれば、本来絶対位置指定であり、描画領域上端から 3px の位置からズレてはならないはずのそれが、確実にズレている。縮めれば縮めるほど間隔が狭くなるのがわかっていただけるだろう[1]

……これは酷い。CSS の力を使い、ある部分は柔軟に、そしてある部分は精密に構築されたスタイルは、このバグによって簡単に瓦解してしまうだろう。当サイトはそれほど被害をうけてはいないが、他のサイトはどうなのだろう。スペーサ GIF を用いるような時代はもうとっくに終わりを告げている。スタイルシートという概念が「当然の存在」としてそこにある。仕様も存在する。実装も存在する。なのにこの体たらくは何だ!

所詮 IE か、と思ってしまう。かつて IE6 のあまりの酷さに辛酸を舐めた身としては、同じことがまだ続いているのかと思うとやりきれない。IE6 リリースから何年たっていると思っているんだ。バグを潰すだけの時間を、どれだけ与えられたと思っているんだ。Mozilla の努力を見よ! プロジェクトとしての挫折も、コードの破棄という賢明かつ妥当で、しかし勇気の要る決断も乗り越えて、今ようやく Mozilla Firefox バージョン 2 をリリースするまでに至ったのを見よ! Opera がその限りある開発力の中で、コツコツと堅実にレンダリングエンジンを更新し、時には一新してきたのを見よ! マイナーとまで言われた Konqueror (KHTML) が Apple に見初められ、Safari のベースに使われた逆転劇を見よ! そのどれもが Microsoft の悪い意味での怠惰と傲慢を如実に浮き上がらせる。結局のところ、皆満足していなかったのだ。Internet Explorer に絶望していたのだ。これだけレンダリングエンジンが「表立って」跳梁跋扈する時代になったことに背を向け続け、その原因を作り出したにも関わらず、シェアトップという安寧の中で転寝をしていた馬鹿者の、恥曝しな姿がこの有様だ。

だが、確かに認めよう。IE7 はだいぶよくなった。IE6 と比べて、確かに山ほどあった問題は解決されつつある。

しかし、あまりにも品質が低すぎる。これがベータ版だというのなら、勿論問題はないだろう。開発中なのだから、何が起こっても仕方がない。改善を加えるまでだ。

ところが IE7 は正式版として世にリリースされた。何様のつもりだ。ソフトウェア開発をなめてんのか。血反吐を吐くほど努力しろとはいわない。そんな馬鹿げたデスマーチに意味はない。じっくりコトコトと煮詰めて煮詰めて、最終的にえいやとリリースすることが、何故できないのだ[2]

思い返せば、Mozilla は難産だった。ずっとメジャーバージョンをリリースすることすらできなかった。書き直して書き直して、また書き直して、ようやく Mozilla 1.0 はリリースされた。Firefox だって、まだ Phoenix と呼ばれていた時代から辿れば、かなりの年月をかけて熟成されてきたことがわかる。

IE はどうか? 本当にやれることはすべてやりつくしたのか? 安定していると胸を張って言えるのだろうか?

今日は思いをぶちまけてしまった。感情的であることは認めよう。だがその中には事実もあり、全てがどこぞの主人公の吐く戯言のように、意味と無意味の境界を漂い続けたりはしない。

私は今日、改めて決心した。もう IE には何も期待しない、と。

脚註

  1. 因みに Opera 9.2 では描画領域上部に原因不明の空白領域が出現してしまい、意図した配置にはなっていない。しかしその現象は別根である。ウィンドウ高さを変動させればわかるように、IE7 のようにはならない。つまり Firefox などと同じく、通常精度の % 値算出が行われている。
  2. 勿論物事には期限がつきものだ。それはしばしば無能な営業によって無茶苦茶にされる。IE チームもその煽りを喰らった可能性があることは否定できないし、恐らくそんなところなのかもしれない。だから私は、敢えてこの非難を感情的非難であると最終的に断じている。「いちユーザの絶望の叫び」をただ体現した文章。それが本稿の持つたったひとつの意味である。

2006-10-25

解放された SF ――SF 連続講演集――

表題にもあるように、今日で「解放された SF ――SF 連続講演集――」(ピーター・ニコルズ編 東京創元社)を読了。1981年1月30日初版。現在絶版。以前神保町に行った際購入したもののひとつ。

何がお目当てで買ったかといえば、その収録原稿のひとつ、たったひとつのそれが理由だ。

「人間とアンドロイドと機械」。フィリップ・K・ディック。――あまりにも有名で、数々のディック関連書で引用されながらも、こと日本においては本書「解放された SF」並びに「フィリップ・K・ディックのすべて」(ローレンス・スーチン編 飯田隆昭訳 ジャストシステム」にしか収録されておらず、全文訳を拝める機会なぞそうそうありはしない講演原稿。

あれ、と思われた方も多いだろう。「フィリップ・K・ディックのすべて」に収録されているではないか、と。確かに、「フィリップ・K・ディックのすべて」の方が刊行年も後(1996年)だし、入手も容易そうだ、と。

だがことはそれほど安易ではない。「フィリップ・K・ディックのすべて」を手に取り、その内容を鵜呑みにすることに、つい最近「待った」をかけた人物がいるからだ。「ヴァリス」訳者、大瀧啓裕その人である。

大瀧氏はディック関連翻訳書籍では新しい部類に入る「フィリップ・K・ディック 我が生涯の弁明」(フィリップ・K・ディック著 ロランス・スーティン編 大瀧啓裕訳 アスペクト)の「訳者あとがき」にて、次のような警句を述べている(強調部引用者)。

(前略)「重要な要約」である『宇宙創成論・宇宙論』は、本書とは重複しない釈義の抜粋とあわせ、スーティンがディックのエッセイや講演草稿などをまとめた『フィリップ・K・ディックの変化する現実――文芸哲学論集』(一九九五年)に収録されて、大いなる不備は少なくとも海外においては解消された。妙な書きかたをしたのは、同書が邦訳されながらも、原著の五分の一を閉める釈義編がふくまれていないからである。訳者は「あまりにも混沌としたものが横溢して」いるためだとしているが、翻訳されたものは誤訳・珍訳にくわえ、原文で二〇行を超えるパラグラフが抹消され、二五行にもおよぶパラグラフが三行に圧縮され、三行にわたる文章がひとことでかたづけられるなど、傍若無人の改竄がおこなわれており、理由はほかのところにあると見るべきだろう。

「訳者あとがき」P443

このように飯田氏の所業を大瀧氏は傍若無人と断じている。確かにこれが本当ならとんでもないことだ。私は原文を持っていないため確認できないが、少なくとも一つ明らかなのは、強調したように「釈義編が含まれていない」ことだ。ディックのことを知るうえでどうしてもはずすことができない「釈義」の断片を訳者特権であっさりと切り捨ててしまったことは、「翻訳者」としての責任を放棄した怠慢としかいいようがない。自分が翻訳できないと感じたのであれば、何故「共訳」体制をとろうとしなかったのか。予算の事情もあったのかもしれない。だが、少なくともディックの固執していた神学に詳しい人間を捕まえてきて、話を聴くことぐらいはできたはずだ。

しかし、もうこれは終わってしまった話である。いまさらどうこういっても仕方がない。それに、ぶうぶうと文句を言った大瀧氏にしても数々の翻訳者特権[1]を行使してたり、以前紹介したように山形浩生氏から名指しで翻訳の不備やら何やらを指摘されている。その山形氏にしても悪評が存在しており、これはもう堂々巡りとしかいいようのない事態にまで発展している。

つまりは信用などできないということである。

さて、今回採り上げた「解放された SF」所収版の「人間とアンドロイドと機械」だが、こちらは浅倉久志氏が翻訳を手がけている。翻訳時期が時期なので古臭さは否定できないが、いずれにせよこれでもう一つの選択肢が生まれた。

訳者の話が続いたので、本題に戻る。この原稿「人間とアンドロイドと機械」は実際には講演されなかった。ディックが体調不良を理由に講演を辞退したからである。それは1975年のことだった。

ディックについて少しは知っている方ならピンとくるだろうが、この講演原稿はその執筆時期が時期だけに、1974年2月および3月に発生したといわれる出来事に強く影響された、非常にアグレッシブな一品に仕上がっている。その中には後に別の言葉で言い換えが行われる「概念」に関する一連の記述も多分に含まれている。それらは何か。

時間がないので、続く。

脚註

  1. 例えば「フィリップ・K・ディック わが生涯の弁明」という邦題はかなり原著のタイトルと異なっている。原著のタイトルは "IN PURSUIT OF VALIS」であり、直訳すれば「VALIS を求めて」である。確かに「釈義」はディックがその人生の一部を投資した成果であるし、澱んだ世界に対する存在意義を弁明しているととれなくもない。ロランス・スーティンが「VALIS を求めて」と題したのは、これ以上なくそのタイトルが単純明快だったからだろう。つまりそれは外向きに見える内向きの思考を体現している。対して大瀧氏の邦題は、内向きに見える外向きの思考を体現している。つまり「弁明」しているからだ。「外」を意識しなければ、「弁明」をする必要性はない。また、最近購入した「ラヴクラフトの世界」(スコット・デイヴィッド・アニオロフスキ編 青心社)も大瀧氏の訳だが、収録策の順序を入れ替えてしまったりしている。傍若無人ではないし、内容を変えてもいないので飯田氏よりはるかにマトモではあるが、それでも「手を加えている」という事実は残る。それだけは指摘しておきたい。

2006-10-24

当サイトの IE7 対応は未だ不完全

昨日は「対応完了」とは書いたものの、「完全な」対応とは言いがたく、未だ数々の部分に不具合を抱え込んでしまっている。しかも、IE7 のレンダリングそのものに問題があるらしき部分がほとんどなのだ。

例えば当サイトを IE7 で閲覧していただければわかるだろうが、「Space」スタイルの中央やや左にあるグラデーションラインが、スクロールで消失してしまう。実は似たような現象(今回のものとは別)が IE6 でも発生したことがあるため、その時に用いたバッドノウハウを使ってみることにした。

結論からいえば、そのバッドノウハウは失敗した。どれもがうまく作用せず、何の進展もないまま現在に至ってしまっている。

では、そのバッドノウハウとは何か。それは以下のような指定たちのことだ。

  1. background-color と同色の border-color を指定した border を指定
  2. 上下左右いずれかの padding / margin1px とる

残念ながら position は既に使用していたため、「position : relative を指定する」というノウハウは使えなかった。また、width / height も既に使用していたため、「width : 0 ないし height : 0 を指定する」というノウハウも使えなかった。

どれもがレンダリングエンジンに無意味な描画を行わせることで、支離滅裂になったレンダリングを強制的に意図したものへ持っていかせるという力技である。とはいえ文法違反でも何でもない。コード的にはクリーンだ。ただ、IE 用であり、IE のバグを使っているものもあるというだけである。

今回用いることができなかった「width : 0 ないし height : 0 を指定する」ノウハウについては少々説明が必要だろう。このバッドノウハウは、IE6 の Standard / Quirks モード双方で有効な手法であり、非常に有名なボックスサイズに関するバグ、「ボックスサイズが内容物に合わせた大きさへ強制的に調整される」問題を使う。IE6 では、width : 0 ないし height : 0 でも内容ボックスは潰されず、その外側にあるボックスが許す限り最大の幅や高さを得る[1]

……今日は時間がないのでこれまで。まだまだ先は長いなぁ。実は今日紹介した部分以外にも変なところは沢山あるのだが。それはまた次の機会にでも。

脚註

  1. IE7 では未確認だが、まあ修正されてしかるべきバグだろう。

2006-10-23

IE7 に対応完了 - @import メディアタイプ指定で読込無視問題とその解決策

特に何もしなくていいかな、とばかり思っていた IE7 対応。しかし落とし穴が存在し、対応を余儀なくされた。どうやら IE7、@import にメディアタイプ指定を行うと、指定を行った @import を無視してしまうようだ。つまり下記コードのような場合、normal.css は読み込まれない。

@charset "euc-jp";
@import url(normal.css) screen, projection, tv;
/* IE7 は上行 @import を無視する */

まったくもって……。これが MS クオリティか。@import 専用に用いている、いわば C 言語でいうヘッダファイルと同じような扱いで用いている style.css にある @import は全て無視され、スタイルが殆ど適用されないような状態になっていた。

私のスタイル指定に対するポリシーのひとつが、「問題ない UA と問題ある UA とでスタイル指定を分離する」ことだ。つまり、以前なら「"Mozilla Firefox などの一般 UA" と "IE6" のスタイル指定を分離する」ようにスタイル指定を行っていた。勿論、"一般 UA" には Opera / Konqueror が視野に入っている。

更にもう一つポリシーがある。「問題ある UA に対してのスタイル指定は、問題ない UA に対してのスタイル指定にパッチを当てる形で行う」ことだ。特に CSS でその威力を発揮する方法である。

問題ある UA に対してはスタイル指定を分離する

まず「問題ある UA に対してはスタイル指定を分離する」ことについて説明する。当サイトのディレクトリツリーは、大体以下のような状態になっていた。

http://eof.my-sv.net/
  +- index.html
  :
  +- blog
  |    +- index.html
  |    :
  :
  +- style
       +- ie_only
       |    +- space
       |    |    +- img
       |    |    |    :
       |    |    +- page_only
       |    |    |    +- img
       |    |    |    |    :
       |    |    |    +- style.css
       |    |    |    +- top.css
       |    |    |    +- blog.css
       |    |    +- style.css
       |    |    +- normal-plus.css
       |    |    +- structure.css
       |    +- style.css
       |    +- normal-plus.css
       |    +- structure.css
       +- img
       |    :
       +- space
       |    +- img
       |    |    :
       |    +- page_only
       |    |    +- img
       |    |    |    :
       |    |    +- style.css
       |    |    +- top.css
       |    |    +- blog.css
       |    +- style.css
       |    +- normal-plus.css
       |    +- structure.css
       +- paper
       |    :
       +- style.css
       +- normal.css
       +- normal-plus.css
       +- structure.css
       +- print.css
       +- print-plus.css
       +- rss.xsl

これを次のように変更した(強調した部分が変更点)。

http://eof.my-sv.net/
  +- index.html
  :
  +- blog
  |    +- index.html
  |    :
  :
  +- style
       +- ie6_only
       |    +- space
       |    |    +- img
       |    |    |    :
       |    |    +- page_only
       |    |    |    +- img
       |    |    |    |    :
       |    |    |    +- style.css
       |    |    |    +- top.css
       |    |    |    +- blog.css
       |    |    +- style.css
       |    |    +- normal-plus.css
       |    |    +- structure.css
       |    +- style.css
       |    +- normal-plus.css
       |    +- structure.css
       +- ie_only
       |    +- space
       |    |    +- page_only
       |    |    |    +- style.css
       |    |    +- style.css
       |    +- style.css
       +- img
       |    :
       +- space
       |    +- img
       |    |    :
       |    +- page_only
       |    |    +- img
       |    |    |    :
       |    |    +- style.css
       |    |    +- top.css
       |    |    +- blog.css
       |    +- style.css
       |    +- normal-plus.css
       |    +- structure.css
       +- paper
       |    :
       +- style.css
       +- normal.css
       +- normal-plus.css
       +- structure.css
       +- print.css
       +- print-plus.css
       +- rss.xsl

こうして、以前は2つだった UA 別分岐を、3つにした。

  • 一般 UA 用スタイル指定
  • IE 用スタイル指定 ie_only(7以降)
  • IE6 用スタイル指定 ie6_only

そして、UA 別に以下のように読み込ませる。

一般 UA の場合
  • style/style.css(共通スタイル)
  • style/space/style.css(スタイル「Space」定義)
  • style/paper/style.css(代替スタイル「Paper」定義)
IE の場合(7以降)
  • style/ie7/style.css(IE 用共通スタイル)
  • style/ie7/space/style.css(IE 用スタイル「Space」定義)
  • style/ie7/paper/style.css(IE 用代替スタイル「Paper」定義)
IE6 の場合
  • style/ie6/style.css(IE6 用共通スタイル)

次に UA 判別を Apache に行わせる。結果を環境変数にセットしておく。スタイル読込には link 要素を用いる。その際、SSI によって先にセットした環境変数から閲覧者の UA が何かを判断し、前述の UA 別に条件分岐読み込みを行わせる。

以下のようなコードを用いている。

<!--#if expr="${MSIE6_VIEW}" -->
    <link rel="stylesheet" type="text/css" href="../style/ie6/style.css" />
<!--#elif expr="${MSIE_VIEW}" -->
    <link rel="stylesheet" type="text/css" href="../style/ie7/style.css" />
    <link rel="stylesheet" type="text/css" href="../style/ie7/space/style.css" title="Space" />
    <link rel="alternate stylesheet" type="text/css" href="../style/ie7/paper/style.css" title="Paper" />
<!--#else -->
    <link rel="stylesheet" type="text/css" href="../style/style.css" />
    <link rel="stylesheet" type="text/css" href="../style/space/style.css" title="Space" />
    <link rel="alternate stylesheet" type="text/css" href="../style/paper/style.css" title="Paper" />
<!--#endif -->

こうして UA 別に読み込むスタイルを分離し、読み込ませている。次に「問題ある UA に対してのスタイル指定は、問題ない UA に対してのスタイル指定にパッチを当てる形で行う」方法について説明する。

問題ある UA に対してのスタイル指定は、問題ない UA に対してのスタイル指定にパッチを当てる形で行う

次に「問題ある UA に対してのスタイル指定は、問題ない UA に対してのスタイル指定にパッチを当てる形で行う」ことについて説明する。ここではスタイル「Space」を例にとり、その「一般 UA 用」「IE 用(7以降)」「IE6 用」スタイルがそれぞれがどのようにして成立しているかを、カスケード状態を見ていくことで追いかける。

まず初めに読み込まれるのは、常に「一般 UA 用」のスタイルである。先のディレクトリツリーで言えば、まず style/style.css が読み込まれる。style/style.css は以下のファイルを @import する、C 言語におけるヘッダファイルの役割を担っている。

  • style/normal.css(共通スタイル・XHTML 要素)
  • style/normal-plus.css(共通スタイル・クラススタイル)
  • style/structure.css(共通スタイル・構造定義 ID)
  • style/print.css(共通スタイル・印刷用 XHTML 要素)
  • style/print-plus.css(共通スタイル・印刷用クラススタイル)

UA 別スタイルの style/ie7/style.cssstyle/ie6/style.css は、どちらもまず上記ファイルを @import している。これらのスタイルファイルは、タイトルがつけられた「Space」「Paper」のようなスタイル間で共通のものであり、私は共通スタイルと呼んでいる。例えば a 要素の font-color であったり、様々な UA 毎に異なる body 要素の margin / padding を統一するなどの、いわば「地ならし」としての意味を持っている[1]

これら共通スタイルをベースに、各テーマ別スタイルは構築されている。一般 UA 用のスタイル「Space」を構成する style/space/style.css は、以下のファイルを @import している。

  • style/space/normal-plus.css(スタイル「Space」・クラススタイル)
  • style/space/structure.css(スタイル「Space」・構造定義 ID)
  • style/space/page_only/style.css(スタイル「Space」・ページ別スタイル)

共通スタイルと同じ名称の2ファイル、style/space/normal-plus.cssstyle/space/structure.css は、それぞれ style/normal-plus.cssstyle/structure.css に指定されているスタイルを上書きしたり、スタイルを追加する役割を担う。

更にもう一階層存在するのは、ページ別のスタイル指定だ。ページ毎に色々と追加しなければならない指定がある時は、style/space/page_only/style.css を用いる。style/space/page_only/style.css は、以下のファイルを @import している。

  • style/space/page_only/top.css(スタイル「Space」・"Top" 系ページ専用)
  • style/space/page_only/blog.css(スタイル「Space」・"Blog" 系ページ専用)

ページ判別は body 要素の class 属性値によって行っている。例えば style/space/page_only/blog.css では、"Blog" 系ページ[2]にある専用メニューや Blog 目次の特殊形式メニューリストのスタイル定義を行っている。

以上が、「一般 UA 用」スタイルの概略である。これらの、一番汎用性に富み、仕様に準拠しているであろうスタイルを基に、「IE 用(7以降)」「IE6 用」スタイルを構成する。

まずは今回新設した「IE 用(7以降)」についてだ。先にも述べたように、IE7 には「@import にメディアタイプ指定を行うと、指定を行った @import を無視してしまう」というバグがあるらしく、これさえ回避できればだいぶマシになった CSS 対応のお陰で、Mozilla Firefox や Opera、Konqueror といった UA とほぼ同じ体裁を「一般 UA 用」スタイルだけで実現することができそうだと考えた。事実その通り(一部例外アリ――対応中)だったので、ひとまず暫定的な対応としてメディアタイプ指定を無くした @import だけを行わせるよう、ディレクトリ構成を style/ 下とほぼ同じに合わせ、各ディレクトリ下の style.css を「@import にメディアタイプ指定無しバージョン」にして配置した。その結果が、前述した以下のパスである。

  • style/ie7/style.css(IE 用共通スタイル)
  • style/ie7/space/style.css(IE 用スタイル「Space」定義)
  • style/ie7/paper/style.css(IE 用代替スタイル「Paper」定義)

次に、以前から存在させていたが、今回 IE6 専用のスタイル指定という位置づけにしたためディレクトリ名をリネームした「IE6 用」について説明する。

前述のディレクトリツリーからも明らかなように、意図的に ディレクトリ構成を style/ 下とほぼ同じに合わせてある。これまた前述した各テーマ別スタイルと同じく、意図的に同じファイル名にしたファイルを各 style.css によって @import している。

唯一「IE6 用」が他と異なるのは、IE6 が持つ数々の時代遅れな実装に由来する、「回避策」の数々である。そのうちの一つが「代替スタイル指定の無視」だ。

IE6 は rel="alternate stylesheets" を認識せず、rel="stylesheets" に丸め込んでしまう。結果、「Space」「Paper」両スタイルの指定が区別されずに混在してしまい、つまるところ「Paper」の指定が「Space」の指定を上書きしてしまう。結果的に体裁がぐちゃぐちゃになるのは当然で、ひとまずこれは回避しなければならない。

そこで私は、あえて XHTML ファイルで読み込ませる「IE6 用」スタイルを style/ie6/style.css 1ファイルに限定し、その中で現在のデフォルトスタイルである「Space」を明示的に @import させている。こうすることで問題は解決する。また、XHTML 文書内部に余計な指定を入れないようにする効果も得られる。あとは IE6 に応じた様々な「誤った仕様に則った」スタイル指定を行わせ、体裁を「一般 UA 用」と限りなく近くなるよう調整している[3]

以上が IE7 に対応した際の顛末と背景の概略である。……これに合わせて、先日公開した ローカルチェック用スタイルシート有効無効自動切換えスクリプト もアップデートし、ローカルでの閲覧チェックにも支障がないよう環境を整えた。こういう時に休日は役に立つ。気づいたら朝の4時になっていたのは……まあしょうがないか。それが土曜日~日曜日にかけてのおなはし。

IE7 も、肝心なところで詰めが甘いというか。因みに今回用いた IE7 は、つい先日公開された英語版の正式バージョン。RC ではないので念のため。先ほどもちらりと触れたバナーポップアップの部分も、IE7 では変な状態になっているし、しばらくは対応に追われるだろう。

久しぶりに長文を書いたなぁ。これだけ書くと気持ちがいい。今日はこれまでにする。ローカルチェック用スタイルシート有効無効自動切換えスクリプトの新版は、近いうちにまた曝してみる予定。誰か使うのかなぁ。ある程度の汎用性は持たせてあるけれども……。

脚註

  1. 前提条件を全て同一にすることで、例えば margin / padding の無意味な指定を行わなくて済むようになる。結果的にコード量を減らすことができる上に、UA 間での互換性も増し、保守も非常にやりやすくなる。CSS の持つ「カスケード」特性が発揮される瞬間である。
  2. 正確には http://eof.my-sv.net/blog/ 下の全 XHTML ファイル。
  3. 無論、全く同じにはならないし、なれないし、する気もない。最低限、閲覧に支障がない程度の互換性だけ保てればよい。そういう意味で、例えば「Space」の表示領域左下にあるバナーポップアップは、「IE6 用」スタイルでは実装していない。スクリプトビヘイビアを用いれば可能ではあるだろうが、今のところやる気は全くない。文字の均等割付も IE6 は独自プロパティで指定しなければならないため、それらの対応も入れたりしている。

2006-10-22

意味の逆転、論理の流転

今週も弩等の忙しさだった……。ナニコレ。職場の先輩には「若いうちにムリしとかないと」って言われる始末。いやそれ違うから。「若いうちだけだよムリできるのは」だから。意味が180度逆転してしまっている。前者が無理を肯定しているのに対し、後者は無理の条件を限定したうえで若いという条件が存在しなくなれば無理ができなくなるからどちらにしろやめておけという否定を表している。つまり前者は推奨、後者は非推奨を言っているのだ。因みに、前者のようなものは「屁理屈」とも呼ばれる。

今日は疲れたんでもう寝る。おやすみ。

2006-10-20

遅ばせながら西尾維新

今日は「クビキリサイクル」(西尾維新 講談社 NOVELS)を読了。トリックの合理性、環境設定の必然性、まさしくキャラクター造形から小説内世界を構築した場合にしかありえないラストシーンとエピローグは、確かに「現代」という文脈の中で発生した作品ならではのものだ。

さて、私の脳内に構築された玖渚の容姿は、イラストのそれとは全く異なるものであった。顔はいいが、非常に不潔であるという印象が強い。目の下には隈ができており、フケだらけの髪を様々に結わえてある――。あまりにも小説内に存在する情報断片からの映像は、イラストレーションによるものと異なっている。つまり私は非現実的と考えがちな設定で構築された(が構築した、といってもよい)世界に、現実の視点を当てはめてしまっている。その意味で、小説そのものを楽しみきれてはいないのかもしれないが、そうなったらそうなったで作者の思うツボなので何となく癪に障る。もしかしたらわざとそうした「ちぐはぐさ」を読者に与え、あえて視点の遊離を発生させようとしているのではないか。つまりは「客観的視点」という名の嘘(戯言?)を読者の心理世界に築いてしまおうとしているのではないか。

そしてもっとも恐れるべきは、そうした思考そのものを〈戯言か〉というひとことで片付けてしまいそうになることだ。あくまでも〈戯言〉をほざくのは「ぼく」たる「いーちゃん」の役割であり、その為にだけ彼の存在はあるといってよい。そしてそんな「ぼく」に感情移入させるための舞台装置も沢山用意されているのが「クビキリサイクル」であった。つまり感情移入による同一視を発生させ、読者自らに自らを〈戯言遣い〉と思い込ませることによって、確かに「クビキリサイクル」という作品世界はにわかに彩度を増し、不信感(不連続感)をその存在の発生原因ごと消失せしめることに成功している。

では、不信感(不連続間)とは何か。つまりは「天才」と呼ばれる存在が多々登場することと、主人公たちの周囲環境そのものである。まずこんな人間はいないだろうと容易に「想像」してしまえる天才像が列挙され続ける。勿論それは非現実性を根底に持たせるためであるが、内容もまた無茶苦茶なので、それは更に助長される。特に玖渚の台詞が非常に興味深いし、実際そのように作られている。つまり彼女の存在をまず際立たせることで、他の登場人物も「そうである」と思い込ませている。絶海の孤島という使い古されながらも未だに非現実性を象徴させることが可能な、使い勝手のあまりにもよい(そしてそれ故に落とし穴も多い)舞台装置を導入している。

また、随所に現実世界(データベース)との接点たるキーを盛り込んだ彼女と「ぼく」とのやりとりは、しかしその中に隠す意図もなくあからさまに盛り込まれた非現実設定と、現状との差異がうまく作用して、「同じ世界の住人だ」「違う世界の住人だ」という相反する認識を同時に生みだしている。例えばホロメモリ。それに対応するかのようにフロッピーディスクまで登場するが、それは逆に「いまどきそんなものを」「やっぱり使ってる」という認識を生み出せる。似たようなものにマシンの自作があるが、そもそもマザーボードそのものをフルスクラッチするという設定が、現実性と非現実性のバランスを少しだけ非現実性に寄せている。他にも OS そのものを自作することは不可能ではないが、要求スペックが無茶苦茶であったり、Win, Mac, UNIX は登場するものの Linux / BeOS / Mona (マイナーか) といった OS の名前が登場しないことにも微妙な齟齬が生まれている。

つまりは全てが「いかがわしい」。だがそれが存在を許される。存在として認識しえる。こういったバランスのとり方が、確かに「クビキリサイクル」という小説全体を良質のエンタテインメントに仕立て上げているのだ。もうまったく。「面白いから読む」という当然の欲求にぴったりではないか。

あまりまとまっていないような気もするが、とりあえず今のところの言いたいことはこれまで。

2006-10-18

今日は Mozilla Firefox 2.0 RC 3 が出たね

まあそのくらいか。Minefield はまだそこそこ不安定なので使用を見合わせている。レンダリング、ウチのサイトのメニューバーがスクロールでブレるのはどうにかならないものか。

今日はとある案件を導入しようとしたら、別件のバグらしきものを発見してしまい、それが我々のチームが修正するべきか、それとも他チームのものなのかを判別しなければならなくなった。そのせいで本来なら 19:00 前ぐらいには帰路につけたにも関わらず、結局 21:00 を超えてしまった。まあ調査の甲斐あって、どうやら他チームのバグらしいことが判明。とはいえ疑いが濃厚というだけなので、明日一番に見てもらうことになった。切り分けって面倒だ。

明日も忙しい。今日よりも仕事の数では上回るかもしれない。いや、今日も突発仕事が何件も入って予定の倍以上の案件数になったんだが。もう何コレ。純粋に人が足りないよ。もっと増員してほしい……。でも難しいのもまた事実。

2006-10-17

早く帰ろうとすると何か仕事が入る

そのせいで一時間ちょっと余計に残業しなければならなくなった。まったくもってもどかしい。

今日は「ラヴクラフトの世界」(S・D・アニオロフスキ編 大瀧啓裕訳 青心社)を読了した。大体三日かかった。クトゥルー神話に興味が出たため、新刊でも買って読んでみるかと手にとったのがこれ。中身は……まずまずといったところか。これは共通のバックボーンたるラヴクラフト本人の作品を読んだほうがよさそうだ。今度買ってこよう。

以下、休みの間に購入した本。

なんとなく興味をひかれて。まずは入門書からと思い、以前「ユリイカ」で広告されていたのを思い出し、書店で購入。ちびちびと読み進めるつもり。

そういえば積読状態の本がかなりある。そいつらも消化しないと。

2006-10-16

ローカルチェック用スタイルシート有効無効自動切換えスクリプト

不完全な実装だが特定条件下ではきちんと動作する、ローカルチェック用スタイルシート有効無効自動切換えスクリプトを曝してみる。あって嬉しいと思うのは次の条件に該当する人ぐらいだろう。

……つまり私のことだ。

ソースコード
名称ローカルチェック用スタイルシート有効無効自動切換えスクリプト
ファイルstylesheets.js
ライセンスGPL 2

ついこの間、prototype.js を用いる方式に書き換えたばかり。ついでにコードのブラッシュアップをしたら、行数がかなり減った。まったく prototype.js 様々である。

といっても、prototype.js の目玉(のようにもてはやされている)非同期通信機能、つまり XMLHttpRequest 関連機能は使っていない。使う必要もない。私は Class / Enumerable オブジェクト関連のメソッドや $A() 関数をちょくちょく使わせてもらった。特に Enumerablecollect, any, all といった便利メソッド目白押し。いやまあちょっとしたものではあるけれども、あればあったで便利。

あと何といっても Event.observe。これでしょう。DOM イベントハンドラへのラッパなのだが、これでようやく自前のショボいラッパ関数を使う必要がなくなったというわけ。んー。すばらしい。

コード的には document.styleSheets に値を入れちゃうという力業がどうにも気に入らない。というより、ここを xml-stylesheets 対応にしたい。それはまた後の課題。

2006-10-15

HHK の最上位 - 無茶苦茶な値段と、美麗なる外観

ここまでくると笑うしかない。ついに Happy Hacking Keyboard Professional の「最上位」概念が覆された。HHKB Pro HG Japan と HHHK Pro HG の発表がなされたからだ。完全オーダメイド限定生産なのもいたしかたあるまい。何しろ HHKB Pro HG Japan はキートップに輪島塗を施した一品。更にフレームはアルミ削り出し。PFU Direct で HHKB Pro HG Japan は、何と¥525,000という驚きの値段。……決して「ごまんえん」ではない。「ごじゅうまんえん」である。私はこれ以上の値段がつけられたメーカー製キーボードを知らない。

だが、はっきりいって「要らない」といってしまえる代物だ。アルミ削り出しとはいえ、それはフレームだけらしい。キーそのものは画像を見る限り通常の Pro モデルと同じ素材のようだ。キーまでアルミにすればいいのにと思う。その他の機能も、Pro と比べてあまり魅力的には感じられない。傾きセッティングがより細やかになるとはいえ、それほどうれしくない。

極めつけは、HG Japan 並びに HG 墨モデルが持つ「配色の悪趣味」であろう。アルミに直接輪島塗・墨色塗装を施すことはできないのか、フレーム部だけアルミの色そのままだ。単一色による美しさのようなものを備えていた Pro 墨モデルとはうってかわって、これはもはや何かの冗談とさえ思えてくる。泣きたくなってきた。

……値段も、外観の悪さも際立つ HG モデル。久しぶりの新製品発表とあってウキウキしていた私の心を、見事に打ち砕いてくれた。

2006-10-12

IE7 がやってくる - ネットの海を制するか?

スラッシュドット経由で、IE7 が10月中にも正式リリースになる運びとの話。……そろそろ本腰入れて対応考えないと。まあ CSS 対応もマシになっているからあまり手を加えなくて済みそうだが。果たして Trident は名の如く、象徴たりうる存在になってしまうのか?[1] 無理だとは思うけれども。

今日は久しぶりに Perl をいじった。時間を忘れて熱中してしまう。

そして恐らく生まれて初めて継続的に買おうという気にさせられている「コミックリュウ」を購入。……執筆陣が豪華すぎやしませんかね。しかも明らかに年齢層高めに設定しすぎ。「失踪日記」で一躍時の人となった吾妻ひでお氏と、未だ現役の安彦良和氏の同時掲載、脚本を大塚英二氏が書いている「三つ目の夢二」などなど。

極めつけは押井守氏撮り下ろし、「立食師」シリーズ最新作である「女立食師列伝 ケツネコロッケのお銀 - パレスチナ死闘篇 -」DVD。いやもうね、これが決め手だったね。

で、肝心の「女立食師列伝」なのだが。出来はお世辞にも極上とはいえなかった。勿論画質という意味ではなく、ドロップアウト気味の主人公が持つ軽薄さが、真剣さに変化する瞬間を曖昧に描きすぎているからなのだろう。ここまでくると個人の好みでしかなくなる。だから極上ではなかった。映画「立食師列伝」がパロディと知人起用によって成された徹底的で容赦のない「自己」表現であったのに対し、「女立食師列伝」にはそれがない。しかし決して悪くはない作品である。無論押井節の長台詞を聞き流す快楽(苦痛?)は健在だし、お銀の娘の喋り声が男性声であるという馬鹿馬鹿しいほどあからさまな虚構の表現は笑いすら引き起こす。パレスチナ人というよりはインド人な男が肩にテープレコーダを担ぎながらゆらゆらと歩く様は、最早ギャグでしかない。

非常にわかりやすいモチーフとして、監督は今回立ち食いと座席での食事を徹底的にピックアップした。そばに始まりおにぎり、ホットドッグととどまることを知らないそれは、しかし日本を出てしまった時点でふっつりと途絶える。ここに日本と外国との隔絶がある。そう言いたげだ。立ち食いという存在(概念?)は日本と密接に関わっているのだと――偽史としてではなく、恐らく本質的な指摘として――言いたげだ。

主人公が者を食べる時の音も、なるべく不快感を演出する汚さが付与されている。ずるずるべちゃべちゃとした音が背筋をぞわぞわとさせる。主人公(ルポライター)への感情移入を妨げる。

まとまってないな……まあいいか。今日は眠いからおしまい。

脚註

  1. Trident は Poseidon / Neptune の得物(三叉鉾)として描かれることから、しばしば「制海権の象徴」という意味で用いられることがある。

2006-10-10

錬金術のくじびき地獄

合成すると何とも情けないタイトルになってしまった。……「地獄少女 二篭」「くじびきアンバランス」「武装錬金」を録画しておいたので観る。どれも良い感じ。

「地獄少女」は新キャラ登場で梃子入れされ、これからが見物といえそうだが、おそらく敢えてわかりやすい展開を導入しているのだろう。途中で「ああではないか」とすぐに思わせるのが演出であるならば、かなり力が入っているといってよい。「なかよし」連載ということもあり(その目的はアニメ化であって、連載は手段でしかないのだが)、低年齢層も確実に視野に入れている以上、当然の手法だといえる。但し脚本段階から仕込みを入れなければならない上に、バランスを崩せばただのくだらない茶番に成り果てかねない。最後までこのテンションを下げることがなければ大丈夫だろう。

因みに、「地獄少女」作中に登場する UA は明らかに Mozilla Firefox だ。アイコン画像からして、バージョンは 1.0 ないし 1.5 系列。さすがに 3.0 Trunk Nightly の新 UI マージ前ビルドではないだろう。家族共用ではなく、個人用と思しきノートパソコンであることから、今回のメインターゲットはソフトウェアに少しは詳しい少女であるようだ。少なくとも「ブラウザ」という存在を認識している可能性があり、ブラインドタッチを行える。親が入れたという可能性は否定できないが……。但しカスタマイズを行っている気配は感じられない(「開く」ボタンが表示されいる・配置が初期設定のまま・タブを常時表示にしていない)。ボタン形状とツールバー色から見るに、テーマを Windows Classic の「Windows デフォルト」に変えているようだ。OS 自体は絞り込めないが、さすがに Me はないだろう。2000 か XP のどちらかと思われる。IME プルダウンとフォントからしても、Linux / Mac OS X ではなさそうだ(Wine & フォント無断使用……は考えすぎだろう)。IME のバージョンを上げているのでなければ、2000 の可能性は潰え、XP となる。

「くじびきアンバランス」は、「げんしけん」からのスピンオフ作品だが、出来はかなり良い。設定を変えてはいるもののそれは違和感を感じさせるようなものではない。王道をきっちり守り、独自要素も加えてある。プロットの内容は無茶苦茶だが、そもそもくじびきで決めるという設定自体が無茶苦茶なのだから、バランスはとれている。

「武装錬金」は原作未見。アニメそのものはよい出来。恐らくは初めて声優繋がりで視聴を決定したアニメ。少年誌のノリを深夜でやると、こうまで熱い展開になるのかと。早い時間帯だとあそこまでぐちゃぐちゃにはできないだろうなぁ。

秋のアニメも楽しめそうだ。……惜しむらくは、録画失敗で「ねぎま!?」初回を見逃したこと。「ぱにぽにだっしゅ!」の監督が同じノリで作ってしまった作品だというのに。黒板ネタも健在のようだし。次は気をつけよう。

2006-10-09

何を意図しているか全くもって不明瞭極まりない、CSS Nite LP, Disk 1 の宿題 by 矢野りん

出題者はあえて不明瞭で意図を図りかねる記述をして解答者を試そうとしているのだろうか。それとも……。CSS Nite LP, Disk 1 にて講演を行う予定の矢野りん氏なる人物が、講演に先立って出席者に向けた宿題と呼ぶものを出した。くるまさんが解読不能とまで言ったその文章。確かにある意味凄い。下記はその引用。

Q1:「ある空間に置かれた箱の中に、箱が入っている」平面構成を作成せよ
  • 小100px、中150px(小の150%)、大225px(中の150%)
  • 小と中は大より10pt ずつ位置を下げています
Q2:「色付きの平面が、大きい物を背面にして重なりあっている」平面構成を作成せよ
  • 単色塗りつぶしだけを使用すること
  • グラデーションや立体的な効果は使わない
  • 色の性質に注意
  • 配色のセオリーに沿って考えること

CSS Nite LP, Disk 1、矢野さんのセッションは宿題付き

……ここまでで「ああもう俺完璧に理解したよ」という方はちょっと待って欲しい。本当にそれはよく練られた解だろうか? 以下に私が考えた問題点を問いごとに列挙する。

Q1:「ある空間に置かれた箱の中に、箱が入っている」平面構成を作成せよ

そもそも小100px、中150px、大225px という指定は、大の値から推測して「辺の長さ」である可能性を自己仮定するしかない

つまり、「辺の長さ」なのか「各々の図形面積」なのか明記されていないため、どちらなのかパッと見た感じではわからない。しかし辛うじて大225pxという指定が辺の長さである可能性を高める。

前提条件として「辺の長さ」とでも明示されていれば、問題はなかった。

掲載されている図も問題の一部なのかどうか明示されていない

ひとこと「Q1 における箱の配置状況図」とでも書いてさえいれば、立派な前提条件になったのにも関わらず、何も書かれていない。alt 属性値に「画像:平面構成」とあるが、これでは「何の」という指定が抜けている。title 属性値は与えられていない。

相対単位と絶対単位が混在している

たとえば小100pxと書いてあるにも関わらず、小と中は大より10pt ずつ位置を下げていますという記述がなされている点だ。矢野氏は、なぜ px と pt という「相対単位」と「絶対単位」の混用を行っているのだろうか。スタイルシートのプロパティ値にはなるべく「相対単位」を用い、視覚化装置の物理的大小を気にしないようにする方がアクセシビリティは向上するはずだ[1]

px は相対単位、すなわち視覚化装置に相対的な画素数である。つまり、文書閲覧者の視覚化出力装置環境(多くの場合、コンピュータディスプレイ)によって異なると考えるのが妥当だ。勿論「丸め」を行う条件もある[2]。スケール化のベース長は、96dpi 画素密度をもち、読者から 28inch だけ離れている装置上において、約0.0213度である場合の1画素に対する絶対長が推奨されている[3]

96dpi の画素密度を持つ装置の場合、(1dot / 96inch) * 25.4mm ≒ 0.26 mm であるとみなされる[4]。300 dpi なら3画素、600 dpi なら5画素にまで丸められる。

だが、72dpi の場合はどうだろう。「非常に異なる」とはみなされず、丸めがかからない可能性がある。もし丸めがかからなければ、画像密度を持つ装置の場合、(1dot / 72inch) * 25.4mm ≒ 0.35mm であることになる。

対する pt は、前述の通り絶対単位である。つまりデバイスその他の影響を受けることなく、物理的に同じ長さであることが前提になる。

小と中は大より10pt ずつ位置を下げているとあるので、少なくとも上下いずれかの辺が 10pt だけ小は中、中は大より内側に存在していることになる。すると、10pt は 10pt * (2.54cm / 72) ≒ 0.35cm = 3.5mm になる[4]

96dpi の画素密度を持つ装置の場合、3.5mm の分の長さを持つ画素数は 3.5mm / 0.26mm ≒ 13px になる。

尚、これまで述べた事実との比較とは別に、単なる typo の可能性も捨てきれない。px と pt を打ち間違えたという可能性である。

Q2:「色付きの平面が、大きい物を背面にして重なりあっている」平面構成を作成せよ

ちょっと力尽きたのでこっちはパス。明日やるかも。ただ、色相環と対面してちょちょいといじればいい話のようだ。

……これらの問題、よく考えてみれば、仕様が不完全なのだと言い換えることもできる。これは私のようなプログラマにとっては致命的ともいえる状況だ。まあてきとーに流し書きしたらこうなったよーっていう印象を受ける。あまりそういうのは好きではない。問題は解くよりも出す方が難しい。せめて最低限の前提条件は書き記して欲しかった。だからわかりにくいことこの上ない文面になっているのだ。「行間を読め」というのは、こういった技術系の話ではやってはならないことだ。誤解を招かないように、意図を確実に伝えるように、誰が読んでも一意に定まる文章が理想だ。

「理科系の作文技術」、読んだことないのかなぁ。演習・実習レポートも書いたことないのかなぁ。あまりにも……ひどい。そう思った。

え? 解答? ……いや作るの面倒だし。ああそういう不精者はこういうこと書いちゃいけないと。そうかもしれないが。

脚註

  1. 3.4 マークアップ言語の属性の値やスタイルシートのプロパティの値には、絶対的な大きさを表す単位ではなく、相対的な大きさを表す単位を使用する。[優先度2]
  2. 出力装置の画素密度が典型的なコンピュータディスプレイの画素密度と非常に異なる場合、利用者エージェントは、画素値をスケール化し直すことが望ましい
  3. 4.3.2 Lengths - CSS 2.1
  4. CSS 2.1 における 1inch = 2.54cm = 25.4mm。
  5. CSS 2.1 における 1pt = 1/72inch。

2006-10-08

髪を切った

ただそれだけ。今日やったことといったら、それと録りためたまま観ていなかった「ひぐらしのなく頃に」を観たぐらい。

やれやれ。

2006-10-07

TOKYO FM の番組に能登麻美子氏が出ていた(冥土喫茶だと)

ふーんそうかというぐらいで放置気味だったメイドならぬ冥土喫茶だが、その宣伝らしくあい役の能登麻美子氏が偶然聴いていた TOKYO FM の何かの番組に出演していた。20:00~22:00 ぐらいの間だったと思う。最後の部分しか聴けなかったのが残念だが、それはそれで。

……でも行ってみる気にならん。誘われれば行くかもしれないが、意図が見えすぎているというか、さらけ出し方が下品というか。だったら家で寝ていた方がいい。折角の三連休。睡眠は十分にとらねば。

2006-10-06

Sage 1.3.7 Released

Mozilla Firefox にぶち込んで常用しているフィードリーダ、Sage の最新バージョンがリリースされた。これは先の XSS 脆弱性を修正し、かつ Mozilla Firefox 2 対応を付与したものだ。とはいえ install.rdf を書き換えれば 1.3.6 でも問題なく Mozilla Firefox 2 RC 1 で使えた。機能追加も削除もない、純粋な bug fix バージョンアップ。

基本的に Sage は更新チェッカとして用いている。その殆どはニュースサイトだ。個人 Blog などはさとみかんのり未刊で補完していたりする。勿論フィードを配信している Blog もあるが、そうでないものもある(暗黒日記とか)。Firefox のサイドペインに表示させれば邪魔にもならない。

今日は録っておいた「武装錬金」でも観てから寝る。……そういえば「Black Lagoon」で言葉狩りがあったなぁ。公式サイトブログでは DVD に入るときには元に戻るといっているものの、何ともはや。

2006-10-05

最近特に忙しい

××××とか××××とか××××とか(一応伏字)。もうね、アホかと。今日も「……察せよ」と私の上司に言わしめた因縁の×××が、しかも承認されて上がってきた。まああっちも仕事なのだろうし、確認の意味をほぼ99%含んではいるのだろうが。工数割くのはこっちなんだよ。もう少し余裕を持たせろよ。てか何だよ。明日×××なのに××××の××××××って。

はいすみません何がなんだかわかりませんね。でも、本来やるべきことが別件で忙殺されるのが悔しくて仕方ない。しかもその本来やるべきことも、担当者が別の機能がバグか何かで動かず、立ち往生状態。……こんなんで×××××間に合うのかいな。

結局帰ってきたのはついさっき (23:00)。まあ、徹夜を禁止している職場だからその分救われているといえばいえる。素直にそれはありがたいと思う。でも、それがかえって××××と被ったりすると地獄になる。追われる仕事ほど、辛いものはない。

今日は帰りがけに半額で買ったサンドイッチでも食べて寝ますよ。週末の三連休がなによりの救い……。今度買う PS2 用に、アップスキャンコンバータ買いにいかなきゃ。もう製品の目星はつけてある。Wii も欲しいんだよなぁ。「ゼルダの伝説」、新作は物凄く面白そうなんだもの。GC/GBA/DS で出てるのはお金がなくて買えない。ううむ。

2006-10-03

特に何もしていない日

こういう日も、大事なのかなと思う。まあ強いて言えば「かみちゅ!」を全16話観直したぐらい。……落ち着いて観られるアニメって、大事なんだなと思う。そればかりではバラエティに欠けるが。

あー、明日からまた仕事か。開発とは名ばかりのルーチンワーク。それに特になにも感じていない同僚たち。……ふぅ。

2006-10-01