DOM Tetris 2 - IE 対応 & ばとん

メインはあくまでも DOM Tetris 2tetris.js / prototype_plus.js)の話だから、バトンは後述。今日は IE6 で動くようにした。IE7 での動作も確認。動かなかった原因は非常に馬鹿馬鹿しいものだった。私が以前作成して prototype_plus.js に放置されていた clone が Prototype のそれと競合して、動作が狂っていたのだ。今ではどこからも呼ばれていないので削除し、その他諸々修正を盛り込んだ結果、何とか IE でもみられるようになった。

ついでなのでスタイル面でも少しばかり修正を加えた。CSS ファイルに手を加える。一般スタイルと IE6 スタイルを切り替えで対処。ためしに <!--[if lt IE 7]> を使ってみた。……なんだ。かなりいい具合に動くじゃないか。全ファイルにおいて、サーバ側で UA 文字列を使った方法は止めさせてみようかしらん? 要検討事項ということで。

スタイル面では、各種フィールドの配置を精度よく完全に計算した状態にまで持っていくことに成功した。やっぱりネガティブマージンとポジショニングの組み合わせは最強って感じだな……。属性値の計算機能を持っていない CSS Level 2 において、ひとつポジショニングの指定値に関する自由度が増えると格段にレパートリーの幅が広がる。「Space」スタイルのメニュー実装でも使ってたりする技術ですな。特性を理論的にも体感的にも理解できていると、まあ応用しやすいことこの上ない。

因みに以下は蛇足としてのバトン回答。

身長は?

1,655mm

身長に比べて体重は多いほうと思いますか?

……がおー。

体型はどうでしょうか?

うちの親父に「このビールっ腹がっ」と言われた。

髪型はどうですか? また好きな髪型は?

超てきとー。

面倒なので昔みたくバリカンで刈っちまおうかと画策中。

目について語ってください

ていうかさ、最初に眼鏡に対してフェティシズムを見出した人って偉大だと思うんだよ。うん。

顔についてどうおもいますか?

歯並びは顔の印象を大きく左右する。

誰に似てると思いますか?

だれかの劣化コピーなんかになるのがいいの?

好みのものを沢山あげてください
  • こうして XHTML を弄んでみること
  • 勿論デザインも
  • プログラミング
  • いろんなプログラミング言語を試してみること
  • 睡眠
  • B級飲料
  • フィリップ・K・ディックの作品
  • SF
  • ここ2年でアニメをたくさんみるようになりました
  • 本を読むこと
  • Emacs のカスタマイズ
  • HHK のキーを叩くこと
  • 情報を蒐集すること

これ以上書くの面倒なので割愛。

嫌いなものを沢山あげてください
  • Internet Explorer
  • 不味い料理
  • 秀丸
  • 「コヨーテ・ラグタイムショー」の脚本書いた奴
  • 物理法則
  • 教えなかったことを教えたことにしてブツブツと文句言うアノ人の思考過程(誰とは言わんが)
  • 今メンテしてるとあるツールの、猛烈なスパゲティ状態のソースコード
  • 携帯電話の UI ぜんぶ
  • 不味い飲物(基本、ドライ系のビールは飲みたくない)

これ以上書くの面倒なので割愛。

涙を流す(流しそうになる)ものは?

「なにもかもコーダーにはいってます」とキヴリンはいった。「あったことはみんな」

(前略)「あまたの邪悪と、世界全体が、いわば魔王の手に握られるさまを目のあたりにしたわたしは、みずから死者の一員も同然の身で死を待ちながら、いままでに目撃せしすべてをここに書きつづる。記録さるべきものごとが時の流れとともに朽ち果てぬように」

『ドゥームズデイ・ブック』下 P553

自分の心に響いた話は?

わたしはユービックだ。この宇宙の始まる前からわたしは在った。わたしは多くの太陽を創った。多くの世界を創った。生き物とそれが住む場所を創った。わたしはかれらをこちらへ動かし、あちらへ置く。彼らはわたしのいうままに動き、わたしの命ずることをする。わたしは〈ことば〉であり、わたしの名は決して口にされず、だれも知らない。わたしはユービックと呼ばれるが、それはわたしの名ではない。わたしは在る。わたしはつねに在りつづける。

『ユービック』P315

一日で一番好きな時間は?

自分の部屋でコンピュータと向き合っている時。

自分ってどんな人に見えると思いますか?

さぁ? んなもん人によって違うから。

さあ、このバトンを受け取る7レンジャー!!

レンジャー!(×7……陸上自衛隊のレンジャー部隊風に)

2007-02-28

DOM Tetris 2 - 回転操作の bugfix と形状データの作成

今日も今日とて DOM Tetris 2tetris.js / prototype_plus.js) の続き。形状データをね、書くのが少々面倒で。今まで放置してたが今度正式なバージョンのブロック形状情報を書き込んだ。回転情報含んでるから、配列が3次元(「配列の配列の配列」)になってるのはご愛嬌。ぱっと見のデータ構造自体はバージョン1系の DOM Tetris と同じ。……でもプログラム側で使うのは「連想配列の配列の配列」。つまり3次元配列の3次元目が、連想配列になったかたち。手書きだと面倒なのでアナライザ書いて自動処理。お前は何がしたいのかって? いや、なるべく直感的にデータを引っ張ってきたかったので……。データを持ってるオブジェクト自身がアナライザを持っていて、しかもコンストラクタで呼び出して勝手に変換しちゃうから問題なし。外からはいつでも「連想配列の配列の配列」。例えば次のコードについて考えてみよう。

var arr = [[[0,0],[1,0],[1,1],[0,1]]];

前記の「配列の配列の配列」は、実際に DOM Tetris 2 で用いられている「O型ブロック」のデータである。この配列 arr をメソッド analyzeShapeData によって変換すると、次のようなデータ構造になる。

arr = [[{x:0,y:0},{x:1,y:0},{x:1,y:1},{x:0,y:1}]];

つまり配列 arr は、「連想配列の配列の配列」になった。どちらが人間にとって可読性に優れるかは明白だろう。余計な文字情報が少ない「配列の配列の配列」の方が、数学的な記述にも近いとあって読みやすい。

しかし「配列の配列の配列」はプログラマにしてみればいやらしいデータ構造だ。何しろ参照には定数のようなものを用いなければならないのである。仮に定数でどうにかしたとすると、DOM Tetris 2 のある部分のコードは次のようになる。

var x = this.V.SHAPE_INDEX.X; // x 座標の位置データがある配列のインデックスを示す定数 (値は 0)
var y = this.V.SHAPE_INDEX.Y; // x 座標の位置データがある配列のインデックスを示す定数 (値は 1)
var ret = this.shape.DATA.getItem(pr).any(function(pos) {
    return (obj.field[pos[x]+px]            === undefined ||
            obj.field[pos[x]+px][pos[y]+py] === undefined ||
            obj.field[pos[x]+px][pos[y]+py].isFixed);
});

今現在のコードは次のようになっている。

var ret = this.shape.DATA.getItem(pr).any(function(pos) {
    return (obj.field[pos.x+px]           === undefined ||
            obj.field[pos.x+px][pos.y+py] === undefined ||
            obj.field[pos.x+px][pos.y+py].isFixed);
});

まあつまりは余計な行数が増えるということなのだ。あんま変わらないじゃないかといわれてしまえばそれまでなのだが、個人的には今のコードの方がすっきりしてるから好きだ。コメント書いておけばさほど問題はないわけだし。データ構造自体もそれほど劇的に変化しているわけではない。

さて……洗濯してから寝るか。

2007-02-27

放置プレイ気味 - ワンフェスと DOM Tetris 2

今日はワンフェスに行ってきた。本当は友人二人と同行する予定だったのだが、ひとりがどうやらインフルエンザらしき症状でぶっ倒れて来れなくなってしまった。仕方なくもうひとりと合流――しようとしたらそのもうひとりは寝坊してくれた。……国際展示場駅に10:00って話だったんだが。私の電話で起きたそうだ。勘弁してくれ。

行列が延々と続いているのは目に見えているので、自分ひとりで並んで会場入り。大体一時間ぐらいかかった。それでもコミケに比べればスムーズだなぁ。人数が違うのが最大の要因だとは思うが。

ワンフェスはコミケと違い、チケット兼用のカタログを係員に見せないと入場できない仕組みなのは有名。お値段2000円。しかも土曜日に秋葉原の海洋堂ショーケースで友人二人分もまとめ買いしたので6000円の出費。とはいえ後で払ってくれることにはなっていたからあまり問題はない。ホール入口で掲示しながら通行で入場。

ワンフェスは初参加なのだが、実は個人的なお目当ての品がひとつだけあった。風道 の中の人が描いてる「原潜さん」が A.S.O. という造形集団によって立体化されたというのだ。これは買いだろ、と思い早速ブースへ……。

売り切れだったけど。かなーりショックだった。いや、だってさ。風道の新刊も冬コミで買い損ねちゃったのだ。そのうえ原潜さんまで逃した。……悲観にくれてもしょうがないので、携帯のカメラという非常に粗悪な代物で失礼だとは思ったが、写真をとらせていただいた。データ転送でパケ死しそうなので掲載はしないが[1]、水中モータをくっつけて遊べるという物欲をどえらく刺激させられる要素まであるこの作品、どうしても欲しかった……。残念無念。

12:00 近くなって寝坊した友人と合流し、カタログを手渡す。私はそれまでに A エリアと B エリアの半分は見て回っていたので、残りと企業をまわることに。個人的にはこれといってめぼしい物を見つけられなかった。A エリアの方でゼル伝トワプリのリンク完成品塗装済フィギュアをみかけたのだが、肝心の彼女がいなかった。……あのー。ミドナさんはどこへ? ぶっちゃけ、私あれ欲しかったから残りの時間も散策してたんですが。やはりネタが新しすぎたのだろう。次のワンフェスにはいくつか出てくると思われるので、待ちで[2]

『アップルシード』のブリアレオス頭部 1/1 らしきマスク[3]を見つけたり、ハルヒ関連の造形品がやたらと多くて見飽きちゃったり、リリカルなのは関連のそれも以下同文だったり[4]、ウルトラマン関連のものが意外と多めだったりと、なんだかんだで結構楽しめた。

そういえば NHK の撮影クルーが取材に来ていた。どうやら原型師の一人を取材していた模様。今度何かの特番があるかもしれない。……まずいな。カメラ回ってるときに通ってしまったかも。ま、いいか。

企業の方では個人的には懐かしいパトレイバー関連のモノが結構あって面白かった。でも一番びっくりしたのは押井守監督の「ケルベロス」シリーズ展示。何と、あの『紅い眼鏡』で使用された甲冑の実物が展示してあるではないか! しかも関係者のサイン入りで! びっくりしたので何枚か写真に収めた。いやー。いいもん見せてもらった。

ステージでは15:00から涼宮ハルヒのアニメ関連でイベントが。ゲストは長門有希役の茅原実里氏。一応生ライブは聴いたが、音楽はどーでもいいうえに帰りが遅くなるので適当に切り上げた。友人もライブだけ聴ければよかったようだ。淡白かな?

家に帰ってきてからは DOM Tetris 2tetris.js / prototype_plus.js) の続き。……だが疲れてやる気が出ないので今日はこれまで。前からの変更点としては以下を挙げられる。

上記のうち、getObserver はあらかじめ Prototype ライブラリに含まれている Function.bindAsEventListener メソッドを使えばいいような気がしてきたのでちと検討中。勘違いかもしれないけれども。

相変わらず IE6 では動作せず。原因はまだ不明……つーかコンソールも何もないうえに、エラーとして吐くログも間違いがある場合はあるわ行数があってないときはあるわメッセージも意味不明なものが多々あるわ(英語文言の方がまだマシかも)で、踏んだり蹴ったり。いっそのこと IE は封印するか……? そういうわけにもいかんか。

明日はもう仕事か……。一週間がクソ早いうえに休みが短すぎる。ひでえもんだ。

脚註

  1. microSD のカードもリーダも持っていないのだ。……今度カメラ買おうかしらん。
  2. 魅力に気づく人がでてくるはず……。きっと。
  3. 後でコスプレスペース行ったらそれを被ったブースにいた人を発見した。つまり被れちゃうということ。
  4. でも前述のブリアレオス頭部の反対側にあったヴィータのフィギュアは、ギガント形態のグラーフアイゼンを振りかざしているヤツでとても迫力があってよく覚えている。ハンマーのサイズは物理的制限からかアニメのそれよりは小さかったが、それでも大きいことに変わりはなかった。
  5. クロージャ大好きっ子ですが何か? いや、もうクロージャ便利すぎて。ラムダ計算万歳。JavaScript から連想配列と無名関数が消えたらと思うとゾッとする。

2007-02-25

DOM Tetris 2 - 回転操作の実装ほぼ完了(バグ残)

JavaScript は素晴らしい。……んなこと当たり前か。今日も今日とて DOM Tetris 2 実装の続き。大分マシになってきた。回転操作の実装がほぼ終わり、あとは「既存のテトリスの動作と違う点」つまり仕様的なバグを潰すだけ。回転操作を move に組み込んだら、途端にコードが綺麗になっちゃったし。最初からこうすればよかった。k で時計回転、j で反時計回転する。先日直すといっていた境界条件の判定ミスは勿論修正済み。いろいろと悩んだ末に今の実装にしたわけでして。……いや、でも isNotSelfCell メソッドは効率が悪すぎるか。実質、計算量 O(n*m) だし……。それより unfix 使って判定ひとつ減らしたほうがマシ。でも unfix すると影響がでかいから、それも考慮しなけりゃいかんし(先日のバグは fix / unfix の実装そのものに原因があった)。まあこれもぼちぼち考える。セル数がたいしたことないから実質的なオーダはそんなに莫大にはならない。

しかしここへきて新たな問題が急浮上。IE と Opera で継承が効いてない。継承を使ってるオブジェクトのインスタンスをつくり、create メソッドをコールしても「そんなもんねーよゴルァ」エラーが出てしまう。create は基底オブジェクトにしか存在しないメソッドで、継承により派生オブジェクトにもその実体は存在するはず(正確にはプロトタイプチェーンを辿ってくれるはず)。でもそれができてない。原因のようなものはわかっている。__proto__ が使えないから。だから派生オブジェクトのプロトタイプチェーンにインスタンス直置き + constructor に基底オブジェクト追加で継承させようとしたのだが、どうも駄目っぽいらしいのだ。……昔は似たような方法で継承できた。なので、私がどこかで何か重大な勘違いをしている可能性が非常に高い。うわー。やっちまったな。今のコードは継承ありきで書いてるから(でないと面倒きわまりない)、前提が破綻しちゃうとコードが成立しなくなる……。何とかせねば。IE と Opera ができれば、Konqueror もイケるはずだから。Konqueror がイケれば、Safari も何とかできるはず。……今のところ確かめようがないですが。

最近は家に帰ってきてからコードを気が赴くままに書くのが楽しみなのだ。つーか仕事マジつまんない。……アレでアレでアレだしなぁ。といっても、コードはノらないと一気に書けたもんじゃないから、その日によって作業量はまちまち。今日はふつー、ってところか。2、3時間ぐらい。多分わかってくれる人はいると思うけど、ノってるときって、こう、とっても気持ちいい。眠気ってなんだーっていうか。最終的には肉体の呪縛にはかなわないけれども、そこに行き着くまではとても素晴らしい。時が過ぎるのを忘れだしたら、もう止まらない。

2007-02-21

DOM Tetris 2 - 回転操作の実装

今日は「扉の外の沈んだ世界」は休憩して、DOM Tetris の続きをちまちまと書いてみた。結局、回転操作の実装には以前と同様の方法を使用。予め回転後のデータを配列に格納しておいて、初回生成時はランダム選択。回転操作時は Array オブジェクトに prototype 使ってぶち込んだ擬似双方向循環連結リスト構造操作で順に辿らせる[1]。頭悪いけど確実な方法。一応回転行列を用いた実装も作ってみたけど、Buggy かつ面倒なうえたいした効果が得られない。どうせ、同じデータ構造の配列を生成させようと目論んでいたので、予め人力でそのデータ構造をつくっちゃったほうが計算時間は節約できると。……たいしたもんじゃないが。

ただし、まだか移転操作にはフィールド境界条件に関するバグがある。条件は省略するが、ある場所で回転させるとブロックが消失する(んでもってエラー吐く)。原因は特定できているが今日は直す気力がないのでまた今度。できれば今やってる無駄な操作を全部共通化してやりたい。unfix なんか呼び出しすぎ。今後の課題。

さて今日は借りてきた「ウィッチブレイド」でも観てから寝るか……。GONZO もこういうアニメつくれるから侮れない。しかし「マルドゥック」の中止は痛かったなぁ。S-F マガジンの片隅にひっそりとお詫び広告載せてたのが哀愁を誘った。

脚註

  1. これが再実装してみたら以前のものよりシンプルになった。但しピボットの初期化処理が必要になるが……。これ、コンストラクタにどうにかしてぶち込むわけにはいかんのだろうか。おいおい考える。

2007-02-19

扉の外の沈んだ世界 - 2次元目

先日の続き。少しだけ脱線するが、『扉の外』はある意味で現代日本だからこそ生まれたような背景感覚が息づいている。何もしなくとも、肉体的に死ぬことはない。最低限の生命活動維持が(意図的に)保障されている。ホームレスとして生きることも、無職者としてただ過ごすこともできるのが現代だ。そこには、飢えによる命の危険はまずほとんどない。色々なものから目を逸らし続ければ、食料自体はそのへんに転がっているという状況なのだから(こちらは意図的ではない)。

閑話休題。『扉の外』は、ある意味で典型的な「セカイ系」の骨子を持っている。だがそもそも「セカイ系」という概念自体が、卑近な物語(=内省の物語)の側面を持っている以上、当たり前といって差し支えないだろう。故にこの点でも『扉の外』は先祖がえりしている[1]

しかし私は、バラードと非常によく似てしまったからこそ、『扉の外』という小説の登場人物――特に主人公――に全く感情移入できない。「はいはいよかったね。……だから?」と溜息を吐きたくなってしまうのだ。それは、『沈んだ世界』の主人公に対しても同様である。

何故感情移入することができないのか? おそらく、思考の方向性が内向きでありすぎること自体が防壁となっているためだ。つまり自己同一化する前に登場人物はより深い位置に自分を置いてしまっているために、読者が追いついていけないのが原因だという考え。感情移入を突き放す、という言い換えもできる[2]

またまた次回に続く。

脚註

  1. 無論この小説だけに限った話ではない。そもそも有名でありすぎる「新世紀エヴァンゲリオン」の世界設定自体、バラードの作品に影響されているフシがある。水没した街というのは典型だろう。後にはグノーシス主義の影すらちらつきだしたエヴァだが、結局世界は善なる本質であったという時点でグノーシスではない。狭義のグノーシスでないという主張は、大瀧啓裕氏の『エヴァンゲリオンの夢』(東京創元社)P427 にあるので参照してみるといいだろう。大瀧氏はグノーシスの非循環性に着目し、エヴァが循環する構造を持つ点を論じたうえで作品のグノーシス性を却下している。
  2. 感情移入がやりにくいタイプの読者なら尚更だ。私のような。

2007-02-17

扉の外の沈んだ世界

今日は2冊を読了した。

で、偶然の一致かはわからないが、この2冊はとてもよく似ていると感じた。シチュエーションこそ違うものの、主人公の志向性がかなり類似しているのだ。つまり、おおまかに言ってしまえば『扉の外』は内宇宙イナースペースを題材にした、ニューウェーヴ SF の直系なのである。これには驚いた。ある意味で先祖がえりしているのである。昨今の風潮として、いわゆるライトノベルと呼ばれ分類されがちな特定出版社の書籍のなかに良質の SF が散見されるようになっているという。確かにそれはいえている。実感として確かにある。

勿論、いまどき内宇宙――つまりは内省を題材にしたものは珍しくもなんともない。だが『扉の外』は『沈んだ世界』の小説構造とあまりにも酷似している。主人公からまったくカメラを離さない三人称固定視点、刹那的な思考による逃避の願望を深く秘めた人格像、置いてきぼりにされた SF 的設定、プロットの局所的破綻。おまけにラストシーンまでアレゲなことになっている(ネタバレはなしで)。それも、あくまで類似にとどまっている。決して盗作ではありえない。ニューウェーヴ的な面をもつ小説は、得てして作家の「なにか」が滲み出ているものだ。その「なにか」が違うせいで、作品としてはむしろ全く別のものに仕上がっている。

作中に出てくる女性たちも、その時代の典型的な物語的虚像を感じさせるものにそれぞれ仕上がっている。『沈んだ世界』はターザン的な、ワンヒロインの成就形式。『扉の外』はエロゲ的な、マルチヒロインの選択肢形式。人格造形も同様。

私は『沈んだ世界』の世界を思考回路の桃源郷だと感じた。そこでは考えたいときにだけ考え、それ以外はただ虚ろに時間だけを浪費していく。これ以上の何を望むというのか? 自分がしたい思考だけの世界に浸れる、外のことなどまるで考えない自己中心性。だからこそ言われた、内宇宙という言葉。つまりは主人公の世界はその中だけで完結してしまっているのである。これは、無論『扉の外』にもいえることだ。主人公は協調という行為を放棄し、我々読者からしてみれば単に流されているだけの歩みを辿る。そこに差し挟まれるのは主人公自身の思考過程のみ。

しかし、どちらの主人公も、本当は嫌でも考えなければ生命の危険に関わる状況に曝されている。ただ『扉の外』は現代的アレンジが加えられ、生命活動そのものは最低限保たれるように世界が設計されている。勿論「外」に出てしまえばそれまでだ。そこに至る道は人によって異なるが、主人公は嫌でも考えることをしなかったが為にその場所へと追いやられた。

時間がないので次回に続く。

2007-02-15

about:mozilla の続編希望

してるのは私だけじゃないのだと。朝顔日記 にそんなネタがあったので、ふと昔書いた 「about:mozilla 勝手に解釈」 のことを思い出した。読み返してみてちと修正。

今日は特に何もなく。平穏な一日だった……強いて挙げるなら、業務で使ってるツールの使い勝手がきわめて悪かったので、ゴリゴリと Perl 使って3時間ぐらいで新しいコマンドでっちあげて今それを使ってる。前に比べれば楽だわー。コマンドだけで全部自動でやってくれるし。前はパス指定しなきゃだめだったんだよね……。

2007-02-14

ミスミスミス

連続ミスで残業のダメージ。……畜生。

「こどものじかん 3巻限定版」が早くも秋葉原では消えたらしいという話がある。……まあ私もちゃっかり手に入れたわけだが。Amazon ではなく書店で。しかも神保町の。地下の、アイドル写真集と併設されてるマンガ棚のある新刊店といえばわかる人にはわかるはず。いつもの巡回ルートではないイレギュラーだったのだが、まあ他に欲しい本があったため新刊マンガ売場がある書店も巡っていただけの話。運がよかったというべきか。因みに目的のブツは「いばらの王」(岩原裕二 エンターブレイン)の4,5,6巻だったりする。勿論あったから買いましたよ。

意外と神保町って穴場なのだろうか……。確か同人誌の中古取り扱いを始めたのは、神保町の書店だと何かの本で読んだ気がする。そういう意味では「情報が集積する」という意味で昔から趣味人の欲望を満たしてきたということになる。ただそれは、「固定された」という前置きがつく。

対比してみれば、秋葉原は「物が集積する」街だといえる。交易の拠点から闇市、電子部品、家電、半導体機器、そして同人誌ならびに書籍。段々と抽象度が増し、情報としての密度が濃くなっているような気もするが、しかしあくまで「モノ」が集まることに変わりはないと感じる。

今やインターネットにより世界中がつながっている。「情報が集積する」……というより、「拡散している」のが本質だろう。「流動的な」という前置きをつけてもいい。

まあ無理矢理オチをつけるなら、「本読もうぜ」ってことにしとく。今はバラードの「沈んだ世界」(東京創元社)を読んでる途中。すんなりと読めるのは、それだけニュー・ウェーヴの時代に培われた土壌がいまだにきちんと残り続けているということだろう。

2007-02-13

三連休があっという間

恐らく地獄になるであろう今週の仕事を控えて憂鬱きわまりない最後の夜をすごしてますみなさんこんにちは。休みって短い……。

何だか最近絶不調。昨日も神保町行ったのに目当ての古本がありゃしない。いや、「銀星倶楽部 12号 1989年 特集フィリップ・K・ディック」なんだけれども。これがね、11号と13号はあったんだよ。というか、「銀星倶楽部」って結構サブカル系の古書店には在庫あるのね。問題は、12号だけがどこにもないこと。やっぱ品薄なのかな……。どこかにないかな……。

今日はお昼に起きて、掃除したり飯食ったり。ゼル伝の二週目を進めたり。やっと天空都市。

DOM Tetris 2 は微妙に修正を加えた。それだけ。今日は書く気力がない。これでまた放置されるのかな……。いや、ちまちま書こう。睡眠不足にならない程度に。

2007-02-12

DOM Tetris 2 製作中……

思いついたので完全放置だった DOM Tetris に手を加えてみた。……気がついたら朝の10時だよママン。ぶっ通しというわけではないが、それでもキーボードと向かい始めたのが昨日の20時頃だったから……。まあいいや。まだ頭ギンギンだし。眠くなったら寝るのだ。

一応、セルとフィールドは実装おわり。ブラッシュアップはまだ。今いじってるのはブロックを統括する TetrisBlock オブジェクト。相対・絶対座標指定移動はロジック的にはOK(上はe、右はf、下はd、左はsに割り当ててある)。今は回転を実装中。今は左上を原点としたベクトル演算になってる(勿論動作としてはバグ)。時計回転のみ。キーはk。移動と回転で同じアルゴリズムの部分が出てきてしまったので、クロージャによるテンプレート化を検討中。関数でもいいけど。どっちがわかりやすいかによる。

何気に書かれている継承のコードは、ぶっちゃけ Prototype のそれと名前が被ってしまったので inherit に変更予定。動作は、Gecko は問題ない。IE ではテストしてないけど二つ目の実装で動くはず。あとで試す。ソースコードの動作確認 UA は嘘表記。ま、αにもなってない代物なので。大目にみてください……。

継承のアイデアは最速インターフェース研究会檜山正幸のキマイラ飼育記その2)から。どちらも有用だった。ありがとうございましたー。Rhino では駄目っていうコードだけど、有名どころの UA に使われてる JavaScript インタプリタなら問題ないはず。一応例外ハンドリングした方がいいのかしらん……。あとでやる。

clone の再実装は、ぶっちゃけ hasOwnProperty 判定をぶち込んだだけで、Prototype のそれと大差ない。バリエーションだけは豊富だけど。

さて……風呂にでも入るか。

2007-02-11

Common Lisp in xyzzy

色々といじっている真っ最中。特に cftp と CSS+-mode の改造。

cftp はいまいち使い勝手が悪いと思い始めたから。特にキーバインドとバッファの横取り具合。Netinstaller のように、(おそらく)新規フレームを作成して云々すればいいのにと思う。だからコード読んで何とかしようと画策。予め上下にウィンドウ開いておくと起動時のウィンドウサイズがそれに追従してしまうところも非常にもどかしい。

CSS+-mode はどうにも色分け具合がアバウトだ。しかし属性の top と属性値の top を判別させるには正規表現の改良だけでうまくいくかどうか……。「詳説 正規表現」(オライリー・ジャパン)が無性に欲しくなった。Lisp 試しと全然関係ない css+-detect-encoding 関数を書き直してみたが、ロジックがあまり書き直す前と変わっていないのに愕然とした。……やはり let を使うしかないのか(正確には let*)。よく読むと css+-detect-encoding は常に nil を返す代物だったりする。*before-save-buffer-hook* にフックする為か。ふーん。

キーワードファイルも書き直さないとな……。一応属性だけは CSS 2.0 レベルにはしたけれど、属性値はまだまだだし、コメントでしっかりカテゴリわけしないと気がすまない。将来的には 2.1 追従、ひいては 3 シリーズ先行導入? そーすると擬似要素・擬似クラスの判別もちと変えないとまずいか。

2007-02-08

Theory of Everything - Distress

表題通り、ちまちまと読んでた「万物理論」(グレッグ・イーガン 東京創元社)を読了。論理のアクロバティックという名の無茶苦茶なプロット接続も、実際読んでみるとまあそれもアリかなという具合。勿論、私にはこんなにすんなり綺麗にまとめることはできない。詳細は割愛。読まないと面白くないから。だが、確かに「ディアスポラ」よりはクリーミィな味わいだと思う。どちらも導入部で背景説明をがっちりしている点で同じだが、「万物理論」が日常の延長であるのに対し、「ディアスポラ」は論理の延長である。人間どちらに身を寄せているかは、まあ一般的な大衆と総称される類に属している場合は明白だろう。主人公が日本でいうところの文系人間である点も、視点という意味でより「小説を読んでいる」本人に近しい可能性が高い。

細かい所だが、登場人物がある時にサーバへ「ログオン」する、と言っていたのがかなり心に引っかかった。イーガン本人が元プログラマであると訳者解説に書かれていたが、Windows プログラマだったのだろうか……。その台詞を発していたのは科学者サイドの人間だったが、OS と呼ばれる存在が全て統一された云々というバックグラウンドなので、その言葉を使っていてもおかしくないといえばそうなる。まあ「OS の差異」という面倒なファクターを排除したかったんだろう。互換性の面でいえば、確かに相容れないものが大量に存在するわけだからなぁ……今の世界は。GNU/Linux にしても、ディストリビューションという括りで見ちゃうとえらいことになるし。TRON プロジェクトも、サブプロジェクト単位で見ると以下同文。Microsoft Windows もカーネルの違い・バージョンの違いがあるし、Mac OS なんか 9 と X で別物だし。BeOS から Plan9、マイナーどころでいえば Mona もあるか。VxWorks に代表される組み込み用 OS も忘れちゃいけない(Lynx や QNX や OS-9 とか……それにしても Lynx は WWW UA にも同じ名前のソフトがあるからややこしい)。

閑話休題。肝心の小説は、読んでいて思ったのだがギブスンの「ニューロマンサー」のような所謂サイバーパンクのそれと非常に良く似ているということ。ただその大量のジャーゴンやアイデアが単なる奇想の範囲内ではなく、「ハードSF」と同じく現実に存在する理論や現象といったものから材をとってきている点に違いがある。……どこかで読んだ気がするのだが、サイバーパンクがハード SF のアイデア過剰版という指摘があった気がする。それをより「理論的な」アイデアにしたものが、イーガンの小説群と考えれば非常に綺麗にまとまる……あれ、これもどこかで誰かが言ってた気がする。

要はバランスの問題なんだろう。黄金期が外面を、ニューウェーヴが内面を、それぞれ過剰に追求した結果、ニューウェーヴの骨格をそのままにしてハードの手法を取り入れたサイバーパンクが生まれ、内面と外面がきちんと両立した結果が現在なのだと。ただその天秤は非常に危ういバランスの上に成り立っている。だからこそ作品にばらつきが出る。

さて次は「宇宙喪失」でも読むか。……神保町にもまた行かないとな。皮膚炎がおちついたら。

2007-02-06

コンビーフドゾー

わかる人にはわかるネタ。スレ数10代の頃からずっと見守り続けているが、いやはやどうして良スレでありつづけている。やはりその奇抜というか無茶苦茶なスレタイが功を奏しているのだろう。

……とまあ、最近コンビーフ料理のレシピを載せている Blog をよく目にするので便乗してみただけの話。因みに私のコンビーフレシピはシンプルきわまりない「コンビーフの卵炒め」。材料はコンビーフ[1]と卵と醤油。これだけ。

作り方も簡単。ただ混ぜて炒めるだけ。……だがよりおいしくいただくためには、ちょっとした工夫が必要になる。

まず、油は一切使わないこと。コンビーフ自体が油分を大量に含んでいるので、それを利用すればいい。逆にバターなり菜種油なりを使うと、コンビーフの風味がぶっ飛ぶうえに油っこくて食えたもんじゃなくなる。

次に、コンビーフはフライパン加熱直後から載せておくこと。加熱しきってから載せてしまうと表面だけ焦げ付いてしまい、中に油が閉じ込められる上にほぐしにくくなる。コンビーフも徐々に加熱して、油を先に外へ出させ、ほぐしやすくしよう。応用編としては、コンビーフの缶を湯銭にかけてあらかじめ加熱しておいたり、中身を出して電子レンジで過熱しておくのもひとつの手。手軽さの面で電子レンジ法がおすすめ。無論、缶ごとレンジにぶち込むという無茶はしないように。

最後に、卵は必ずときほぐした後、コンビーフより後に入れること。油の関係上、先に入れるのはもっての他。コンビーフにしてもいくら加熱済の食品とはいえ、肉であることにかわりはなく、少し炒めておいた方が風味もよろしくなる。卵の固さはお好みで。私は半熟よりちょっと固めぐらいが好き。

醤油は炒めている最中・後のどちらでもよし。これは完全にお好み。加熱すれば香ばしくなるし、そのままかければまろやか。塩胡椒は卵料理の関係上私はパス。まあこれも好みだが……そもそも肉料理・卵料理と醤油は抜群の相性を発揮する。醤油は、そのどちらでもあるコンビーフの卵炒めには絶好の調味料なのだ。目玉焼きには醤油だろ![2]

何だかまとまりがないようだけど、レシピっぽいものおわり。

脚註

  1. 勿論ノーマルなコンビーフ。ノザキが手頃。リビーのは……大きすぎなんだよなぁ。ニューコンビーフはやはり風味に劣る……いやちょっとまってνコンママン、そういういmくぁwせdrftgyふじこlp;@:「」
  2. by キッコーマン

2007-02-05

一日が終わった

起きたら夕方。……どうなっとるねん。今、皮膚炎がどえらいことになっててそろそろ病院に行かなければと思ってる。午前休か一日休みをもらって行くか。うぅ……顔が痛い……。

2007-02-04

“零”に至るまでの―― 2

先日の続き。共通点があるからこそ差異もまたはっきりと見えてくる。前述の通り、既に語り口からして明らかに別の手法が用いられている。そしてそれは、虚淵氏が意図的に選択したものだと私は考える。何しろ氏が脚本を書いた Nitro+ の「Phantom」は明らかに一人称の物語だったし、「沙耶の唄」は一人称多視点でもあった[1]。つまり「書けない」わけではない。ということは「書かなかった」のだろう。

「Fate/stay night」の外伝――だが王道にしてある意味で正史でもある戦い――を、距離をおいた視点から書くための選択。それが「三人称多視点」。こうして書くと、他人を距離をおいて見つめ続ける切嗣の立場と重なる。ネタバレなしなので詳細は略すが、割切と妥協の集大成ともいえる切嗣の「距離感」に近いのではなかろうか。また、第四次聖杯戦争は現状の「Fate」時間軸においては中心である第五次聖杯戦争より以前、つまり「過去」の話である。「過去」を語るのに一人称ではいかにも収まりが悪い。強制的に「誰か」に視点を任せてしまうと、いくら日本語が過去時勢に無頓着とはいえ、過去形での記述を余儀なくされる。「結末がわかりきっている」過去の話だからこそ、「それに至るまでの過程」をどれだけ盛り上げられるかが大事であるのに、「もう終わった話しだしー」感溢れる過去形では興醒めもいいところだ[2]。その点、三人称にしてしまえば無理に過去形にしなくてもよい上に(見せかけとはいえ)客観を取り繕うこともでき、かつ物語としての、ある意味での「戦記もの」としてのスピード感も失われない。

こうして書くと、「なるほど確かにそうか」的なことが多いな……。参考にするべ。

……というより、もう2月なんですが。31日は何故か身体がぶっ壊れて職場から帰宅するだけで死ぬかと思った。全身から極度の疲労のような倦怠感と、異常な動悸。頭痛に眩暈。吐き気まであって「ウィダー」みたいな流動食しか食べられなかった。10時間ぐらい睡眠とったら何とか会社にはいけるレベルにまで回復したけれども、あれは一体なんだったんだ?

色々書くことはあるけど、それは次の機会ってことで。

脚註

  1. CD-R 版をやったっけなぁ……何度か読み返すぐらいに面白かった作品。「沙耶の唄」もエロとグロがいい具合に混じっていたうえに結末のひねくれ方もゴキゲン。
  2. 本人もあとがきで大団円に導かれる事が既に約束されている物語である「Fate」の過程にある『Zero』を書いているという認識を述べている。

2007-02-02