摩訶不思議な外部スタイルシート


いつの間にやらリンクの色が赤から青に変わっていますが、原因不明です。FireFoxではちゃんと赤で出ています。原因を知っている方はご一報を。

こんな話があったので少し調べてみた。

ソースを覗かせていただくと、スタイルシートはlink要素で2回外部スタイルシートを指定しているようだ。

<link href="http://blog3.fc2.com/d/dochikushow/template/gray/style.css" rel="stylesheet" type="text/css" />
<link href="style.css" rel="stylesheet" type="text/css" />

怪しいのは2つ目である。直接URIを叩くと存在しませんというページに飛ばされる。一つ目のCSSではどこにもリンクのスタイルを青に指定していないし、記述も間違っていないのでここは問題ない。だが、IE6sp2やOpera7.52ではリンクのスタイルが上書き・もしくはクリアされてデフォルトになっている。

原因は存在しない外部スタイルシートを指定していることにあるのはほぼ間違いなかったので、ローカルに保存し、指定部分をソースから削ってみた。すると全く問題がなくなった。なるほどやはり、である。

しかしながら不思議なのは、何故そのような挙動になるのか、ということだ。ブラウザ間で違うのも解せない。

IEでローカルに保存されたソースをよくよく見てみると、なんとこの指定部分のファイル名が404.htmに変わっている。で、同じくローカルに保存された404.htmを開いてみると、なんと中身はCSSだった。IEOperaはこれを読んでいたのだ。

原因が大体分かったのでとりあえず先方に報告した。だが、まだ解せない部分が残った。何故404.htmというCSSファイルが送られてきているのか??

IEでの保存は色々書き換えられてしまうので、直接404.htmを見てみたところ原因が判明した。404.htmのURIhttp://blog.fc2.com/404.htmlだが、このHTMLファイルのソース内に書かれたCSSIEで保存したときに出来た404.htmという名のCSSファイルの中身が全く同じだったのだ。ご丁寧に間違っている記述部分まで同じ(IEが解析できなかった部分は削られていた)である。

つまり、IEOperaは「リソースが存在しないよ」とサーバーが送ってきた404.htmの中身からわざわざCSS部分を抜き出して、それをスタイルとして上書きしていた、ということになる。なんという強引な。content-type部分は全く無視か。

仕様には詳しくないが、問題ないのだろうか。

理論と実践の乖離をどう克服するか(2)

理論と実践のすり合わせに於いて、その行為が簡単でないために、理論側の進歩が進まない、というのが前回の話だった。そしてそれは実際の開発における企画段階でも同様に問題となってきたことでもあった。

最近見つけたあるツールが、この問題に光を差し込むかもしれない。そのツールとは以前に紹介したが、GameMakerというオランダ製のツールである。GameMakerの製作者、Mark Overmers氏はユトレヒト大学でゲームデザインの講義を持っている研究者である。ユトレヒト大学といえばオランダ最大の大学である。また、オランダといえば、遊び研究の祖、ヨハン・ホイジンガを輩出した地でもある。そのような背景のあるところからこのようなツールが出てきたことは大変興味深い。

GameMakerは簡単に言えばゲーム制作のRADツールである。プログラムを知らなくてもゲームを制作できる。プログラミング言語を学んだ上でさらにゲームを制作する、ということに比べれば遥かに容易である。しかしながら、仕組み(つまり、デザイン)を理解せずに制作は出来ない。逆に言えば、仕組みを学ぶ、アルゴリズムを学ぶことは可能である。

日本にあるゲーム制作ツールの多くは、何故か既にゲームデザインが成された状態で、ディテールを弄繰り回すことに終始するツールばかりである。それと比較すると雲泥の差があるが、とはいえ、それだけでは別に珍しいことでもない(日本で知られる例であればKlik&Playなどがある。開発元のClickteamはClick&Create,Jamagicなどの同様のRADツールをリリースしている。)。GameMakerが注目なのはそれが理論に基づき、さらに理論側が理論と実践のすり合わせの場で用いることができることを想定しているという点である。