Diary?::2005-12-17

02:35

世の中には 2 種類の人間がいる。コーヒーをブラックで飲める人間と飲めない人間だ。でまあ俺は後者というか、そもそもコーヒー牛乳 (ここでカフェ・オ・レといってはいけない。あくまでもコーヒー牛乳と表現してこそ意味がある) にするのが一番好きだ。

ところで俺が絶対に理解できないものの一つに、ダメゲームパッケージに見られるような外国人 (というかメリケン人か?) のセンスがある。俺はあからさまにアニメ絵チックな奴は嫌いだが、こういう脂ぎったこってりしたものは数万倍嫌いだ。これが肉食民族と農耕民族の差なのか?

何というか、リアル指向ってのは伝わってくるのだけど、バカの一つ覚えみたいにこの手のデザインにしてデザインに説得力が出るわけじゃねえっつーか、いくら「X - MEN」が面白いからって、全部の作品をそれっぽいデザインに変えればいいってものじゃねえだろう。マクドナルドのハンバーガーじゃあるまいし、ねえ。

同日 02:58 追記。逆にアメコミ系の作品を日本人受けするデザインに変えるのもクソな行為だ。そんなことをしたら、多分向こうも怒るか呆れるだろうね。

04:05

音楽の楽しみ方には 2 種類あると思う。一つは決して変わることのない、既に完成された音楽を聴く。これはクラシックとか解散/引退した、あるいはベテランのバンドを聴くときの楽しみ方。もう一つは音楽が変化し、まだ見ぬ終着点に向かう様を見守る。これはリアルタイムで活動しているバンドの楽しみ方で、次のアルバムではどんな変化を見せてくれるのか、どれだけレベルアップしているのかを含めて楽しむという物。

俺が好きなバンドの一つ、 Ninja Magic はいろんな意味で後者だ。ぶっちゃけこのバンドはヴォーカルはアレだし、楽曲も "Ninja Nation" にはイントロが全く同じ曲があったりするのだけど、どうにも嫌いになれないというか。まあプロモで一発 KO されたんだけどね。お前ら、何やってんだよ!

実際の所曲自体は魅力的というか、メロディはかなり日本人の感性にあっていると思うし、リフもソロも結構好みだ。ヴォーカルも少しずつ進歩しているのが嬉しい (もう少し経験を積めば化けるか? いや、是非とも化けてほしいね)。爆笑物の歌詞も必見だ。何せ、 "Shuriken of love" とか言い出すからね。

そして音楽とは関係ないが、バイオグラフィー (Assasins のところ) も必見だ。 Battlelore の武器や種族が書いてあるバイオにも驚かされたけど、 Ninja Magic の場合は最近仕留めたターゲットとか必殺技まで書いてある。スタッフのプロフィールもそのノリで書かれていて、全員が Ninja Magic を楽しんでいるであろうことが窺い知れる。

まずあり得ないことだとは思うけれど、俺はこのバンドがレコード契約を手にして CD を出す日を心待ちにしている。

18:45

前に自前のテストフレームワークでも書こうかとか書いたけど、案外あっさり出来た。といってもかなり適当に書いてるけど。

サンプルコードは以下の通り。

from tinytest import *

class BaseTest:
	def __init__(self):
		self.tests = [self.test1, self.test2, self.test3]
	
	def test1(self):
		return report(True)

	def test2(self):
		return report(False, "Always fail.")
	
	@precond(test1, True)
	@precond(test2, False)
	def test3(self):
		return report(True)

if __name__ == "__main__":
	run(BaseTest())
	finish()

出力結果はこんな感じ。

test1 : OK
test2 : Always fail.
test3 : OK
Done : 3
Pass : 2
Fail : 1
Error: 0

unittest の不満点である

を解消しようとしたらこうなった。

TinyTest の最大の特徴は、 @precond による条件付テストだろう。特定のテストの結果によっては実行したくないテストがある場合、これを使えば解決だ。

そしてこの機構を実装するために役に立ったのが、いつだか書いたカリー化だ。 precond 関数は

  1. 事前に実行する必要のあるテスト
  2. そのテストに期待している結果
  3. 条件が揃ったときに実行したいテスト

の三つの引数を取る関数として実装している。これをカリー化すれば、 Python 2.4 からサポートされた decorator で条件定義をできる。ついでながら 1 のテストの結果を覚えておいた方が都合がいいので、メモ化を応用してテスト結果のキャッシュを行っている。

こういうプログラムを書いていて思うのだけれど、やっぱ一つのパラダイムしか知らないのと複数のパラダイムを知っているのとでは、明らかに手数に差が出るよな。

ところで俺は Subversion を使っているので、リポジトリには以下のコマンドでアクセスできる。

svn co http://dev.return0.dyndns.org/tinytest/trunk/

あー、このプロジェクトもドキュメント書かないとなあ。

23:18

ブシドーMMO/柳生に項目を追加したら、誰かがさらに発展させてくれたよ。こういうコラボレーションは、やっぱ Wiki の特権だな。

俺が何を書いたかって? それはトップシークレット。

Written by Kuwata Chikara
Creative Commons