2006-02-21

スーパーマリオブラザーズ ウラワザ特集 スーパーマリオブラザーズ ウラワザ特集 - Nao_uの日記 を含むブックマーク はてなブックマーク - スーパーマリオブラザーズ ウラワザ特集 - Nao_uの日記 スーパーマリオブラザーズ ウラワザ特集 - Nao_uの日記 のブックマークコメント

スーパーマリオはもう隅から隅まで解析されてほぼ遊びつくされたと思っていたけれど、発売から20年以上経過してさらに「コイン0枚クリア」や「伝説の3アップ」などの新たな驚きが得られるとは思わなかった。すばらしい。

あと、小学生の頃からずっと疑問に思っていることなのだけど、「謎の糸」のバグで発生する白い糸はスプライトなのか、BGなのか?

キラーを特定ステージで特定のタイミングで踏み続けると発生するバグで、頑張ればこの糸でかなりの面積を埋められ、それによる処理落ちなども発生しないことからおそらくスプライトではなくBGなのではないかと思っているのだけど、だとしたらなぜここでキラーを踏むとちょうどその場所にBGが発生するのか?不思議でしょうがない。

どういった原因で起こるバグなのか、いつかちゃんと調べてみたい。

最近はもう完全にオタの基準として「濃さ」が用いられなくなった 最近はもう完全にオタの基準として「濃さ」が用いられなくなった - Nao_uの日記 を含むブックマーク はてなブックマーク - 最近はもう完全にオタの基準として「濃さ」が用いられなくなった - Nao_uの日記 最近はもう完全にオタの基準として「濃さ」が用いられなくなった - Nao_uの日記 のブックマークコメント

2,3 年前までは、だいぶ通用する領域が狭まった感はあったもののまだまだ通用していたと思うのだが、 2006 年現在の感覚でいうと「濃さ」への感覚がほとんど感じられなくなった。濃度を追求するオタのスタイルが転換しているという部分もあるし、また現在も「濃さ」に言い換えることのできる基準のあるジャンルはあるのだが、それを指して「濃い」とは、今の感覚では言わないかんじ。

ネットの普及で濃くあることに対するコストが大幅に低下したことも要因の一つかな、と思う。

自分が高校生の頃には、とあるマンガ家の昔の作品にはどんなものがあるのかを知りたいと思ったら、古本屋を何件もハシゴしながらひたすらその作者の本を探す以外には有効な手段がなかった。また、たとえその存在を知っていたとしても、その本を手に入れたければこれまたできるだけ多くの店に足を運び、在庫の山の中から当てもなく探し続けるほかはなかった。

本屋に掲示されている「今月の新刊」は最新情報を得るための重要な情報ソースで、売り切れで入手できない事態を防ぐためにも、毎月更新されるたびに友人とチェックすることを怠らなかった。意図してそうしていたわけではないのだろうけど、そんな環境の中で「濃く」あるためのコストは現在とは比較にならないほど高かった。

今ではネットで検索すればどんなマニアックな作者の情報でもすぐに見つかる。発売から時間が経って店頭にない商品でも通販で簡単に手に入れられるし、たとえ希少品であってもヤフオクやアマゾンのマーケットプレイスで容易に入手できる。既に廃刊になってしまったものでも復刊要請さえできる。こういった流れはマンガに限った話ではなく、ゲーム・本・アイドルなど、ありとあらゆるオタク向けジャンルに対して高速道路が整備されたような状態で、昔と同レベルの濃度の知識やアイテムを得るために必要な負荷は大幅に低下した。

また、Google先生はとてもマニアックな方なので、先生に聞けばどんなマニアよりも濃い話題を好きなだけ提供してもらえる。もはや自分で詳細を覚えておく必要もない。世間が狭かった昔と違って、ネットを見れば自分より濃い人はいくらでも見つかるので、中途半端な濃さなど何の足しにもならない。

さらに、情報が簡単に得られるようになったのと引き換えにその総量は爆発的に増大してしまった。自分の興味のあるジャンルだけをとっても、すべての情報に目を通すことはもはや不可能に近い。以前あった「ゲーマーの最先端が見えにくくなった*1」というのと関連するような話かもしれないけれど、昔にくらべて濃くあることが簡単になったのか、それとも難しくなったのかがよくわからない。そもそも現時点における「濃さ」の定義って何なのだろう?

で、まぁ、そんな環境の中で「濃く」あろうとすることの意義や価値は徐々に薄れてきたのかもしれない。昨日久しぶりに寄った本屋で、そんなことを思った。

快適に使えるツールを作るためのプログラマの役割 快適に使えるツールを作るためのプログラマの役割 - Nao_uの日記 を含むブックマーク はてなブックマーク - 快適に使えるツールを作るためのプログラマの役割 - Nao_uの日記 快適に使えるツールを作るためのプログラマの役割 - Nao_uの日記 のブックマークコメント

IT 技術系のブログを読んでいると,ごくまれに, dogfood がどうのこうの,という表現が出てくることがある。いまいち意味を掴みかねていたのだけれど,最近になってようやく,これが Microsoft の内部用語だということが分かってきた。

文章の中では "eat your own dogfood" などといった感じで使われることが多い。「己のドッグフードを食らえ」 - どうやらこれは「自分の作っているものを普段から使うようにしよう」という訓示を表した言い回しであるようだ。

dogfood (名詞)

作成中のソフトウェアをテストのために内部で利用すること。「己のドッグフードを食らう」とは,当人が開発しているソフトウェアを,自らの日常の開発環境として利用する行為を意味する。

これに関しては,先日, Bob Congdon 氏が自身のブログの中で触れていた。

これを「ドッグフード」と呼ぶのは,つまりは品質のことを表しているのだろう(「人間には合わない」という意味だ)。この単語は,「己の作ったものを使え」と言う以上の意味を持っている。すなわち「己の作ったものを,可能な限り早くから(顧客が使うよりも先に)使え」と言わんとしているのだ。 Domino の仕事に就いていた頃, Ned がしきりに言っていたのは「顧客がバグを被らなくとも済むように,我々がバグを被るのだ」ということだった。 Notes と Domino の開発においては,常にこのアプローチが用いられてきた。

個人的に思うのは,ゲーム開発に用いられるインハウス・ツールの類は,プログラマがそれを自ら率先して利用するという状態を作り出さないと,どうしてもサポートが弱くなってしまうという事実だ。「ツールを作るのはプログラマ,ツールを使うのはプランナ」というような「住み分け」が発生してしまうと,ツール開発の方向性と現場のニーズの間に「ずれ」が生じてしまう。 Jamie Fristrom 氏が,「プログラマである自分が,テンポラリのミッションデザイナとして加わることによって,開発プロセスの改善を図ることができた」と言っていたのも,いわゆる「己のドッグフードを食らう」行為の一例なのだろうと思う。


インターフェースにこだわりのないプログラマデザイナーやプランナーのために作ったツールはとても使いにくいものが多い。特に実機上で動作するインハウスツールの使いにくさには閉口させられる。数値を増減させるインターフェースや、決定/キャンセルボタン・メニューの移動方式などが作った人ごとに違っていて統一されていなかったり、セーブ/ロードを間違えやすいのに確認や自動バックアップがない、入力範囲チェックや自動で行うべき処理まで人力に依存する、などとても使えたものではないツールが多い。酷いものになると、一度ツールに入ると素人には終了方法がわからなくてリセットするしかない、というものまである。さながらDOS時代のアプリケーションのようだ。デザイナーやプランナーの人は我慢して使っているのか、そういうものだと思って諦めているのかはわからないけれど、自分としてはツールごとにキーの操作方法を覚えるなんてことは考えたくもない。

それをまともなインターフェースに修正しようとしても、一部のデザイナーの人などが中途半端にその使い方に慣れてしまっていて変えることに抵抗されてしまうこともあるため、途中参加で入ったチームではその腐ったインターフェースを直すことすらままならない。

その解決のために、実機で動くツールを作るのに自家製ウインドウシステムなどの統一されたGUIインターフェース用のライブラリを通して作るのはこの問題のいい解決策になるだろうけど、気をつけないとそのライブラリがツールの操作を制約することもある。操作系は統一され、プログラマも効率的にツールのプログラムを書くことができるようになるけれど、操作の統一と引き換えに別の意味でツールが使いにくくなっては元も子もない。そういったライブラリには操作の統一だけでなく、効率的なインターフェースを実現するための柔軟性も必要なのだろう。

また、ゲーム機で動くGUI固有の欠点として、ゲームが30fps動作のときにはマウスカーソルの動きが荒くて操作しにくい、という問題もある。最近のゲームは30fpsで動くことが多く、フレームレートの低い状態では移動時にカーソルが飛んで見失いやすかったり、カーソルの動きがもたついたりするせいで小さなボタンをクリックするのが難しいため、それが地味にストレスの原因になってしまうことも多い。大昔のMSX-Viewを触っているような感触。

また、複数ウインドウにまたがった数多くの数値をリアルタイムで試行錯誤しながら増減させるようなタイプのツールはGUIとの相性が非常に悪く、小さなボタンをクリックしてから数値をキーボードで入力するのを繰り返すのがとても非効率的な作業になってしまうこともある。頻繁にウィンドウの開く/閉じるを繰り返すのであればマウスよりもキーボードやコントローラーでメニュー操作を行うほうが早くて確実だし、30fpsの扱いにくいマウスカーソル環境ではさらに操作性に差が出る。

かつてプロ用のドット絵の専用ツールがキーボード操作に最適化されてマウスを必要としていなかったように、作るものによってはマウス+キーボードの統一されたGUI環境が最適解とは限らない。モノによっては、いっそ昔ながらのコントローラーで操作するタイプのインターフェースの方が効率が良かったりするのかもしれない。

プログラマが自分で実際にそのツールを使って大量のデータをつけてみれば、こういったツールを使うストレスがどれほど酷いものかわかるだろう。たとえデータ作成のための仕事用のツールだとしても、使っていて気持ちいい、データをつけていて楽しいと思えるようなツールにすべきだ。プログラマだって腐ったエディタや壊れたキーボードでプログラムを書きたくはないだろう。


あと、これはもう何年も昔に聞いた話だけど、某コンパイラメーカーの統合環境のエディタがいつまでたっても使いやすくならないのは、その統合環境の開発に自分たちのエディタではなくVC++を使っているからだ、という噂を聞いたことがある。その噂が本当ならあまり洒落にならない類の話だけど、よく考えるとその使いにくいエディタを使ってプログラムを書く人はこの世のどこにも存在しないのだから、それはそれで問題なかったりするのかもしれない。不毛。