トップ 最新 追記

日々の破片

著作一覧

2005-05-01

_ Tigerをいろいろいじる

J2SE5.0が出てることもわかったので入れる。

sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0 /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK でいいのかな、とりあえずjava -versionでは死なずに

$ java -version
java version "1.5.0_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_02-56)
Java HotSpot(TM) Client VM (build 1.5.0_02-36, mixed mode, sharing)

となった。

ダッシュボードってのは、おおざっぱにWin32に対応させるとHTAをまとめて管理する仕組みってことなのかな。こっちのほうがJ2SEよりおもしろいかも。

ちなみにダッシュボードについてはルック&フィールの侵害という話も。

_ 真夜中の走者は変わりつづける

Don't Stand Me Down(Dexys Midnight Runners)

注文した。

ミーンストリートをうろつくギャングみたいなファースト、ジーンズに紅いバンダナのセカンド、(スーツだったような気もするが)大恐慌時代の労働者風のサード、多分、これはサードのリパッケージングだと思う。

Words From the Front(Verlaine, Tom)

Television(Television)

それからトム・バーレインというかベルレーヌというか。

思い出したけど再結成時のライブには足を運んだはずだな。まったく覚えてないけど。サンプラザだったか?

前線からの言葉のほうは、ワーテルローからの葉書が印象的だったのだが、歌詞がまったくわからなかったから前線と合わせて受け取って何の疑問も持たなかったけど、キンクスのウォータールーの夕陽のウォータールー(ロンドンだね)なのかも、と今になって思う。なんか、すっかりあっち側からこっちへ気の迷いのような便りを送ってしまいましたという感じのすかすかした奇妙な曲。

Scary Monsters(Bowie, David)

トムバーレインは 歌声が気持ち悪くて、ギターはすごく雰囲気があり妙な(鋭角的なのだがうねりがある)感じで好きなのだが、まったくボウイとフリップの組み合わせには敵わない。だから王国はこっちのカバーのほうが好きだ。今回買ったのとはまったく関係ないけど。でも、あらゆるバーレインの中で、ライブの天国の扉を叩けのカバーを唯一の例外として、ボウイのキングダムが1番好きだ。もちろん最初のLPの(CDのは最後が好きではない)マーキームーンは絶妙だが。

王国というのは気妙なキーワードだ。キングダム、王国。トカゲのキングダムとか、カラヴィニエのヴィヴルロワの謎の王国とか、ロッカーは裸の王様だからか。

ライブを思い出した。やたらとアンコールでフリクションを求めるヤツがいてうるさかった。ミロのヴィーナス。


2005-05-02

_ 新宿区

昔の町名が残っているから、なかなか面白い。

こないだは、舟町と荒木町の境目について間違った前提をおいて妙な行動を取ったが、道路のほうが町よりも後にできる(というか、そういわれ見れば外苑東通りってやっぱり防衛ラインなのか)こともあるというのを感じたのであった。


2005-05-03

_ ゴッホ

昨日行った。コンテキスト(原風景とはすごい訳だな)と関連した作品。

1888〜1890までにとにかく画を書きまくったってことに感心する。でっかな画をとにかくがんがん描いているのだな。

点描からジャポネスクを通じて(パリで描いた本のとこで和紙に影響されたと説明された筋が出てくるのが初出なのかな)例のうねうねしたものが出てきて、スタイルが確立されていくということなのかな。

苦悩するおっさんの書き直しがすごく良い感じだった。色が青っぽくなるとこ。ズボンの皺が横から縦に変化。書き直しってのは重要だな。

ミレーの模写が妙に灰色で不思議だったがこれは後でプログラムを見たら雪景色と勘違いしてたらしいとか書いてあってちょっとがっかり。死の灰かと思ったよ。そんなわけないけど。

初めて年譜をまともに見たが、なんか若い頃のエピソードとか宮沢賢治みたいだな、と思ったり。

_ POJO

同時並行でいろんな立場のいろんな考え方の人たちが、それでもなんとなく同じような方向を向いてうまいやり方を考えている、という楽しい状況に今いるのだ、という前提で。

したがっていろんな言葉がいろんな意味で使われて混乱を招く部分もあるように思う。

POJOとはなんだ? 特別なコンテナが不要ということだ。特別なコンテナというのは、そのコンテナに入れるためには例えばEJBObjectインターフェイスを実装しなければならないとか、抽象クラスでなければならない、とかの制約をコンポーネントに対して要求するコンテナのことだ。ほとんどの場合、それは現時点のEJBコンテナを意味している。それに対して特別ではないコンテナというものが対置される。特別ではないということは、特殊なマーカー(アノテーションだったりインターフェイスだったり)を持たないコンポーネントを格納できるということで、それは軽量コンテナ(この方向だけでは必ずしもDIが必要かどうかは無関係である)と呼ばれるものだ。

POJOは、特殊なインターフェイスを持たず(非機能要件を基本的には持つ必要がなく)、極めて具象的な、つまりTestUnit派生クラスがnewで作ることが可能なオブジェクトのことだ。

最後の点がとても重要で、普通に作りながらユニットテストができる、あるいは検証しながら作ることができる。テストファーストとかテスト駆動開発とこの方法論を呼び、トライ&エラー開発の過程をソースで記録化しようという試みでもある(そればかりじゃない。というかそれ「だけ」が目的だったらちょっと困るな)。

O/Rマッピングしたオブジェクトやそれに毛を生やしたDAOも、もちろんPOJO(特別なマーカーを持たない具象クラス)であるが、こっちはテストしながら開発したりしない。というかそういう開発を不要とさせるように考える。自動生成させるのが方向性である。その意味ではテストを同様に考えないCMPの直接の置き換えでもある。

ここまでで、2種類のPOJOが出てきた。テストファーストで開発する(開発可能な)POJOと、O/Rマッピングした(人間がテストファーストで開発するのではなく、機械が生成する)POJOだ。ここでまた意味合いが微妙にぶれるが話を単純にするために後者をDAOと呼んで前者のPOJOと区別することにする。

これはEJBの2種類のオブジェクト、セッションビーンとエンティティビーンに大体において対応する。

「大体」なのは、EJB3未満のEJBワールドとPOJOワールドでは方向が異なるからだ。EJB3未満のEJBワールドではCMPにビジネスメソッドを追加する方向で進んだのに対して、POJOワールドではDAOからは振る舞いを除外してPOJOに持たせる方向に進んでいるからだ。

ただし、別のPOJOワールドもある。データアクセスをそれ専用の特殊なクラス(テーブルモジュールやアクティブレコード。以下ひとからげにDTU――データアクセスユーティリティと今こしらえた造語で呼ぶことにする)に持たせ、その特殊なクラスに対する操作の集合を持たせたDAOを別に作成する方法論である(だが上で書いたPOJOワールドと区別しにくいのでDAOと言わずにBDO――ビジネスデータオブジェクトとでも呼ぶべきかも)。この方法論は良い面、悪い面あるが、SQLを記述することの開発者の慣れ具合に依存するんじゃなかろうか。僕はO/Rマッピングよりこちらが好きだし、極端に言えば、(Javaの場合では)JDBCそのものを「専用の特殊なクラス」と見なしてしまえば良いのではないかと考えるが、それはこの流派の亜種だろう。ここではPOJO―BDO―DTUという構造となる。POJOとBDOを同じクラスにしてしまうと何のことはなく普通の(層化させない)プログラムとなる。(メモ:BDSという用語があったがなの略なのか思い出せない。)

ここまでで、EJBワールド(SB―CMP。ただしCMPがビジネスメソッドを持つEJB2ワールドとCMPがビジネスメソッドを持てない初期EJBワールドの2種類がある。初期EJBワールドではクライアントが直接CMPを操作するのは実行時のオーバーヘッドが高くなり過ぎるのでSBをファサードとして置く必要があり、それによって操作するSB、操作されるCMPという配置がベストプラクティスとなり、結果的にトランザクションスクリプトパターンが促進された面があるように思う。EJB2でもその配備はベストプラクティスとして踏襲されたために、ステートレスセッションビーンの比重が高くなったのではないかな。セッションビーンの元の発想での主流派はステートフルによる特殊処理だけだったように感じるが、このへんは相当あいまい。いろいろな設計手法を取れるように3種類のビーンが用意されているわけだから、人によりけりだろう)、POJOワールド(POJO―DAO)、別のPOJOワールド(POJO―BDO―DTU)の3種類が出てきた。

出てきたが、これらにはすべてクライアントがいるという点が重要でもある。ここで呼ぶクライアントはWebシステムでのブラウザーのことではなく、Webサーバー上のアプリケーションである。上でPOJO―DAOとか書いていたのはすべて、アプリケーションサーバー上のアプリケーションだからだ。

ただし、このアプリケーションサーバーというのがくせもので、必ずしもWebサーバーと異なるネットワーク上のノードである必要はないし、それどころかWebアプリケーションと異なるJVM上に存在する必要すらない。

そういった物理的な分離とは無関係に論理的には異なる層であるため、層間の通信が必要となる。異なるアプリケーション同士が通信する場合には、通信相手の探索、発見、接続、データ送受信が必要となる。

コンテナはここでは層間通信のためのミドルウェアとして機能する。

いかなるシステムであっても通信には通信先の名称が必要となる。また、1つのアプリケーションが対話する相手先は少ないほど良い。

DIコンテナが解決するのは、この層間通信の探索、発見、接続の部分で、それはEJBコンテナと変わらない。ただし、層の向こうでも同様に探索、発見、接続が必要となると見なし、すべてを繋げた上でクライアントに対話相手を与えるところがとてもおもしろい。

この結果、クライアントは直接の対話相手の名前(もちろんデータ転送に利用するメソッドシグネチャを知っているのは当然だが)だけを知っていれば良いことになる。

ここで、クライアントが複数のアプリケーションを操作することも可能であるが、それはクライアントが知るべきことが増えてしまう。

最初のEJBでは層間通信の実際に発生するオーバーヘッドを避けるためにベストプラクティスとなったファサードパターンがここでは、クライアントとサーバー間の通信を単純化し、サーバー側処理の複雑さを隠すための、つまり元々のパターン名が意味する通りのファサードとして、意味を持つ。

このファサードはDAOを操作し、必要であればさらに別のオブジェクトを呼び出してクライアントからの要求に応える。

単純なマスターメンテナンスは知らないけれど、クライアントから与えられたデータに対して検証、加工、追加が必要ならばそれを実行する。検証はともかく、加工や追加はファサードの仕事ではなく、それを行うためのビジネスの仕事だ。

ファサードクラスが、ファサードメソッド(通信のポイント)だけでなく内部にビジネスメソッドも実装するか、それともファサードメソッドをトランザクションスクリプトとして実装していろいろDAOを操作するか、それとも単に(論理的な)アプリケーションサーバー内で他のビジネスメソッドを実装したビジネスオブジェクト(DAOそのものかも知れないし、別の普通のオブジェクトかも知れないし、ユーティリティクラスからも知れないし、それは設計に依存していろいろなんでも良い)を呼び出すだけのデリゲータとして振舞うのか(呼ばれるビジネスオブジェクトをnewで作る必要はなくて、ここでもDIコンテナが役に立つ可能性が高い)、それはアプリケーションサーバー内の設計に依存する。いずれにしても、Web上の(物理的には同一JVMかも知れないが、それは全然関係ない)アプリケーション(Strutsを使うのであればActionに相当する)の知ったことではない。

えーと、長々書いたが、POJOと叫ぶとき、CMPうぜーの意味なのか、テストファーストで開発したいの意味なのか、によって変わってきて、後者の場合、ファサードがビジネスロジックを持つかどうかは関係なく、ビジネスロジックを持てばテスト駆動で開発する対象となる、持たなくてもフロー制御をするのであればやはりテスト駆動で開発するかも知れない(与えられたデータによってフローが変わるわけなので検証すべきでしょう)、ということが言いたいのである。この場合、セッションビーンがPOJOとして記述できえるということがCMPの運命よりはるかに重要なのだ。

#書いていてつくづく思ったが、おれは実装技術、実装設計が好きなんだな。

#最初賢いデータは必要なのかへのトラックバックとして記述していたが、例によって途中でぶれまくったのでやめた。

_ メモ

平たいデータ(レコード)を立体的に処理する。

立体とは何か?

立体とは複数の次元からの操作のことだ。

オブジェクトは象を撫でている4人の盲人。

データは象。

レガシーシステムは象だ。

象に対して複数のビューを与える。

トランザクションのAを守ることで、群盲が象を触っても大丈夫なように設計する。

ファサードが4人の子分に命令する。触れ。触った結果をまとめて1つにする。そしてコミットする。


2005-05-04

_ ObjectInputStream#readObject

キャストを使うしかないんだから、型安全性の警告メッセージは出さないで欲しいな。

_ Bloglinesを使い始めてみた

My feed is my only carriage

So I've got to push on thru

But while I'm gone

と訳も無く口ずさみながら。


2005-05-05

_ run

そんなバカなと思ったけど、作ってみたらありそうに思えてぞっとしたり。

_ WORA

開発ツールってのは魔物だから。MSはMS1人で十分だ。あとはGNU Emacsと、次善の策としてNetBeansがあればそれでいいな(というかJava Studio Creatorのライセンスを買ってるからNetBeansは使わないけど、ごくごく稀にSwingを使ったアプリケーションを作りたくなったときに使うこともないではない)。

でも、POWOMA(Plain Old Write Once Make Anywhere)で良いような気がする昨今。で、POWOMAよりもっと高級なPOWORA(Plain Old Write Once Run Anywhere)といえばスクリプト言語。

_ 確かに

微笑ましくて好感が持てる。特にリスのやつ。

_ 墓碑銘としてのWeb

別冊宝島の怖い話にそんな言葉が載ってたな。

未来のいつの日か、何かを調べたくなった人が検索してたどりついて読んで役に立ったり目からうろこが落ちたり感心したり感動したりもしかしたら憤慨したりするかして、とにかくそれを目にして何か心が良かれ悪しかれ動かされたら、それは何よりじゃなかろうか。

でも消えるものは消えるし、それはそれでしょうがないことでもある。そういう場合のコモンズですよ、ということかも。

我が身を鑑みると、たとえばこのホストは間違いなく消えるわけだし。でもしょせん日記だからどうでもいいわけだし。geoはyahooが消滅するまでもしかしたら残るかも。でも規約通り(というかyahooになってから権利問題を別にすると見直してないな)に運用されると、全然更新してないから今すぐにでも消えるかも。でも、あれもあの程度だから別に消えてもいいか。

と考えると消えないで欲しいなという思いの対象になるページってのはやはりすごいな。すごいものはコモンズにしておいて欲しいな。ということになるのか。


2005-05-06

_ 金曜日

自動車税の支払に行く予定。

_ もしあなたが部屋の中で一番賢い人だとしたら、あなたは間違った部屋にいる

猛烈な言葉だな。

この言葉が猛烈なのは、

1. あなたは実は全然1番じゃないのだが、1番だと錯覚できるだけの能力を持つ。しかも、「間違った部屋にいる」という助言を受け付けて1番じゃない場所に行くべく行動できる。

2. あなたは1番だということを自覚できるだけの能力を持つ。しかも、「間違った部屋にいる」という助言を受け付けて1番じゃない場所に行くべく行動できる。

のいずれかを満たす必要があるということで、どちらも2つのステップがあってすべてが並の人間には難しいことだ。

でも、ここまではうまく勘違いすればできなくもなさそうだ。

多分もっと重要なのは

3. あなたは1番じゃないことに安心して群れの中に埋没してしまうことを許さないだけの矜持がある。

かも知れない。

それにしても、十分な知性と実行力があっても「貧窮家庭の生活を支えるため、1年で退学して工員になった」「病躯の母親の面倒を見る」「英語を生かす職場がなかった」というような人生もあり得るわけなんだから、たまたまオフセットを与えられた人間はきちんとそれを生かさなければいかんなぁと思うのであった。

_ クリスセルスのコーディングスタイル

メーラにフィルタリングルールを追加してmarketingというのを入れたらなんか考えていたよりもいっぱいゴミ箱へ移動された。

で、一応確認したら、クリスセルスのメーリングリスト(いつの間にか止まってるなぁ)のsubject(I Hate Marketing)が引っ掛かってた。

で、なんとなく読み返してたらおいらのコーディングスタイルというのが出てた。

1.タブの代わりに空白を使え

2.既存ソースにコードを追加する時にはそのソースと同じスタイルを使え

うむ、正しい。しかも覚えやすい。きっと猫でも丸暗記できるだろう。

でも、#1については0mod8にしておけば良いだけだと思うが。デフォルトでそれ以外のいかれた設定になっているエディターというのは見たことがないな(非標準的な設定にしてる場合は、非標準が標準に合わせれば良いわけだし)。標準は、Windowsならnotepad.exe、Unixならviかvimだろう。で、どちらもデフォルトは0mod8だ。(インデント幅 != タブストップ位置なわけだし)

そうすれば#1は不要になるから、もっとルールは単純になる。


2005-05-07

_ Java

言語仕様をまた読み返しているが、こないだkoichikさんからも聞いたけど、確かになんでこういう仕様にしたんだろうか。 言語利用者側の負担が妙に高い気がする(Cはいいの。あれはああいう言語だから)。

/* DOSの頃だな */
int sig;
void poll() {
  sig = 0;
  while (!sig) {
      ;
  }
  do_something();
}

と書いても全然OKだったのが段々コンパイラが賢くなって

volatile int sig;

と書かないといきなりpoll関数が

void poll() {
    sig = 0;
    while (1) { ; }
}

とコンパイルされてしまうとか。賢くなったんだか、馬鹿になったんだか。多分、賢くなったつもりで大馬鹿になったんだろう。しかし最適化ってのはコンパイラ開発者が言語利用者を馬鹿だという前提で作るわけだが、むしろマイクロコードの開発者がコンパイラ開発者を馬鹿だという前提で作って、コンパイラは素直に言われたとおりのコードを吐いたほうが良い気がしないでもない。どちらにしても、馬鹿の連鎖だな。

Javaにもそのての香りが漂わないでもない。


2005-05-08

_ 飴は舐めなくても生きていけるが鞭は痛い

休日のボーリング大会とか、係長にどうすべきか問い合わせてみたり、その係長もライン的に無難な指示を出したり、よほど日勤ってのはおそろしいことなんだろう。あるいは、噂に聞く関西の失業率の高さってのも遠因なのかな。

危機的な状況にあっても、決められたプロトコルが優先されるってのは、企業とか国家とかたくさんの人間を扱う場合には本来は有効なのだろう。

そこで思い出すのは上官の命令に従って殺した兵隊が罪に問われた幾つかの例だな。ドイツ(それとも東ドイツだっけな)にもあったし、私は貝になりたいだと(殺したかどうかは思い出せないけどその手の話は聞いたことがある)あれは日本だ。

なんて理不尽なんだろうと思ったものだが、結局、個人が個人として「自立」(と「」をあえて自立という言葉に使うってのはメタにメタを重ねてる駄洒落みたいなもんだけど、とさらにメタデータを入れてるのはいったいなんだろうかとか)するには、びしばし集団ではなく個人に罪をかぶせて見せしめちゃうってのが良いのかな、とか思ったり。

言われたとおりに仕事をしてたらある日突然、社会から糾弾されるとか。それがごく普通になった時、それでも言われた通りに振舞うだろうか?

でも、目の前の鞭と予測不可能な鞭だと目の前の鞭のほうが怖いってのが、たまたま乗り合わせた運転手の行動なわけだし(電話を入れて指示を仰ぐってことは、予測不可能な鞭――良心とかだってそうなわけだから――を予期したわけだろう)。

ちなみに、70年代の日本展を高島屋に見に行ったが、30年後の日本予想でケータイが日常化するのを予測していたのは当たっているわけだが、それを唯一の例外としてどうして揃いも揃って広々とした部屋に豊かに家電製品を並べる未来を想像したんだろうか? 成長を続ければ人口も増加する(そうでなければ成長に見合う市場が保てない)が、いかなる推測で1人あたりが持つ部屋の広さが100倍増(誇張が含まれるが)するなんてたわけた予測をしてたんだろうか? 人口に反比例して部屋の広さは狭まるはずだろう。

ばかでっかい4面テレビ(家族4人がそれぞれ異なる番組を見られるわけだが、それで行くと部屋の大きさは9倍されるはずだな)とか、自動風呂とか、なんでもテーブル(冷蔵庫が内臓されていて目の前に料理がせせり出てくる)とか、どれもこれも広い広い家を想定しているのだが。

#ちなみにという言葉はおもしろい。

_ 部屋の中の賢い人に私はなりたい(多分)

実は梅田さんの例の日米比較にシンクロしているなぁ、と思ったのだった。

アランケイの真意はアメリカの事情で、おそらく1番じゃない状態を知ることでオレオレを抑えて周りを良く見ようよ、ということかも知れないが、梅田説を鵜呑みにすれば(というのは、どこまでその観察が普遍的なのかわからないからだが)日本では逆にオレオレ、オレ1番、みんなオレの言うことを聞け、というのが必要なんだろうな、ということにしてしまえば丁度話しが落ち着くなぁということなのであった。

だが、実はどちらにしても回りを良く見ていろんな見方を知って(ようするにシナジーというやつなのかな)ブレークスルーを生むというのとは違うからだめなのか。埋没して安心する状態というのは、時々僕自身も見かける何か言えば良いのになんか全員が黙っている状態で、これは良い状態ではないと考えるのだがそうではない人たちが黙るわけだ。こういう状態では独裁がまかりとおってそれはそれで非常に効率的だからうまく運べばうまく運ぶ。だめなら破滅というだけで、それはそれで良いのだが。

次の状態がオレオレ状態なのかな、と思う。で、その次に誰もが1番ではない(=全員が1番)という状態になるのではなかろうか。

_ ……

自首した人間を死刑にしたら、自首という制度を否定するような気がするが、とメモ。


2005-05-09

_ 復活

石井勝氏のページの入り口。 森さん、助田さん、お兄さんのご尽力で復活されました。

_ JSR 133

J2SE 1.5に実装されたと聞いたけど、new features and enchancementsには出てないし、リリースノートにも書かれていない。

と思ったらJ2SE 5.0 in a Nutshellに書いてあった。

しかし、リリースノートなんかに書いてないものを信じて本当に良いんだろうか?

(実際にはi386やSPARCで問題とならない――とされている――ので、ダグリーとビルポー以外は誰も気にしてないんじゃないかという予感)

本日のツッコミ(全1件) [ツッコミを入れる]

_ るいも [そうなんですよね。何でリリースノートに書かないんでしょうね。リオーダの問題なんかはi386でも問題になるのに。確か最..]


2005-05-10

_ るびま

6号。さあ、読むか。

巻頭言の難易度がなぜか無い(付けようがないんだろうけど)が、それはそれとして良い文章だなぁ。

YARVのはすごくおもしろい。難易度RHGというだけのことはある。考えてみると青木さんのもそうだが、萩谷昌巳さんの書いたもの(や、遡れば竹内さんが書いたLISP入門――僕はこの語り口そのものは嫌いだが)なんかと同じような匂いを感じるんだろうな。どう考えても簡単じゃないことを、軽快に楽しげに書いているからだ。つまりその対象が好きで好きでたまらないから、傍から見ればとんでもなく難しいことだったりするのに、まるで友達と芸能人の噂話についておしゃべりするみたいな軽さでそれについてあーだこーだと喋れるんだろう。いいなぁ。

あれ、おれがいるぞ。

_ まだ生きてたとはびっくり

ジェームズチャンスとコントーションズ

White Cannibal (RUSCD8267)(James Chance)

これは持ってるけどイマイチかな。

Buy(White, James)

やっぱ、Zeのが良かったな。録音もジャケットデザインも良かったし。

1 time、2 Times、3 Times ドンドンドンってとことか。

とは言うものの、個人的にはサルドバンでのライブが好きだった。あれもどこかに行っちゃったけど。キキピカソが内ジャケットを書いててそれも好きだった。というか、演奏よりもキキピカソの画のほうがよほど記憶に鮮明だけど。

コントートユアセルフを除くとどれで聴いたのか忘れたがジェームズブラウンのやつをアィフィールグッド、デゲデゲデゲデン、ワーって感じで唄ってるのは印象的。

No New York(オムニバス)

で、イーノがプロデュースしたノーニューヨークが原点なのだが、これはジャケットはいかしているし、同じ頃にULTRAVOX!のかすのような(元の曲は良さそうなのに)プロデュースしてるのとはうってかわってシャープで良く響く音作りをしてるので割と好きだったのだが、聞いていて不愉快になってくる(メタルマシンミュージックみたいなものとも言えるし)のが問題でやっぱりどこかへ捨ててしまった。あとリディアランチがミスターカイトみたいだったり、ジェームズチャンスがフリクションみたいだったり、ノーニューヨークが先か東京ロッカーズが先かとか。DNAだけはどうしようもなくオリジナルな気がしたけど、実際にアートリンゼイのその後の活動を考えると、確かにもっともオリジナルだったんだろう。

More Songs About Buildings & Food(Talking Heads)

で、この後、ニューヨークのイーノはトーキングヘッズの2ndのモアソングスアバウトビルディングスアンドフードをプロデュースして、そっちに肩入れしていって最後にはブッシュアンドゴーストになる。

それはそれとして、僕はこの2枚目が今でも1番好きで、特にガールズウォントトゥービーウィズザガールの真ん中へんで出てくるザザッザザッというシンセサイザーの音が気に入っていたりするのだが。あと、これ聴いてるからワーニングってのが許せないのかも知れない。どう聴いてもカタカナで書けばウォーニングサイン、ウォーニングサインって発音してるからな。

My Life in the Bush of Ghosts(Busta Jones)

に比べると、ブッシュアンドゴーストははっきり嫌いだった。その頃、ちょうどアミーンとか収奪理論とか高橋悠治とかのことを考えていたから、このてのやつってのは特に頭でカネ勘定してそうなイーノがからんでるってだけでイヤな気分になってくるわけだし。

リメイン・イン・ライト(トーキング・ヘッズ)

にも関わらずリメインインライトは2ndほどじゃないにしろ、今でも時たま聴く程度には好きだ。っていうか冒頭のダダダッアーってのはすごいすごい。この頃、NHKホールで来日公演をやったので当然のように見に行ったわけだが、前座がプラスティックスで、中盤にティナウェイマス(お、すらっと名前が出てきた)とドラマー(こっちは名前が出てこない)で好き好き魔女先生じゃなくて、なんだったかな? お喋りクラブじゃなくて、呪文みたいなやつのバンド、が入ったり。それにつけてもベースは重そうでずっと前かがみで腰を曲げてやってるのに比べるとトムトムクラブ(と突然思い出した)のほうが楽しそうだったな。

Tom Tom Club(Tom Tom Club)

で、さらに思い出したが、御茶ノ水のパイナップルの近くにトムトムクラブって名前の喫茶店があって、アテネの帰りに良くインベーダーをやったものだな、そのうち廃業してしまったが。それにしてもどうしてこういうのって連鎖して思い出すんだろうか。トムトムクラブか……で、喫茶店のほうが先にあったわけだから、きっと何か意味が言葉なんだろうな、と思ってそのまま数10年の歳月が過ぎていったわけだが、その程度にどうでも良いことである。

本日のツッコミ(全1件) [ツッコミを入れる]

_  [トムトムクラブ お茶の水は私も行ってました! 学校が近くだったので…。細身の可愛いお姉さんがいて 嫉妬していたのを思..]


2005-05-11

_ サイケデリックファーズ

ブック・オブ・デイズ(ザ・サイケデリック・ファーズ)

中古で900円で売ってたので買い。でも、最高傑作というほど最高傑作かなぁという気もする。

_ 同意

実装して確認してない仕様が信用できる?

こういうの(というのは直接のリンク先じゃなくて、その先のこと)が好きな/進めている人が相手にしている人=製造業モデルみたいなことが大好きなのか、そういうことを言う人たち、って、実装して確認していない車に乗ったりするのかな。

とか思ったが133kmまでは大丈夫なはずだけど、実際に試していない/試せないから120kmくらいでも、とかまあ、世の中にはいろいろリスクはあるものだ。

でも、こないだ目の当たり(めのあたりじゃなくて、まのあたりと読む)にした、実際のコードでどう考えても考えていないすばらしくデザインパターンにのっとった雀を取るだけなのに波動砲というかフォトントービドーというかとにかく馬鹿でっかな大砲を作りましたみたいなソフトウェアを考えると、ことはそう単純でもないように思える。

いろいろなところがあるから必ずしもそうは言い切れないだろうが、

開発者―納品先

というだけじゃなくて

開発者―開発者―納品先

という場合のことだが(いわゆる2次請けとかじゃない)、ジャンルでいくと

ミドルウェア(フレームワーク)―アプリケーション―システム

と分けた場合に、最初と2番目ですらまともにコミュニケーションが成立していないことがあるのじゃないかということだ。

横須賀のほうの軍曹のやつを読んでいて1番不快になったのは、このフレームワークはきみらにゃ難しすぎたようだねへらへらとか言いながら去っていく連中の存在だ。この部分こそ本来、1番簡単にオンサイト顧客開発が可能なんじゃないか? いや、可能だ。しかも顧客ったって、プログラマなんだから共通の言語で会話できるんだからもっともスムーズに要件の吸い上げと実装の確認が可能なはずだ。

それがどの面下げて「難しすぎたようだねへらへら」と言えるのだろうか?

開発者―a―開発者―b―納品先

で、aについてのことを書いているのだが、bの部分で、「おや、動かないコンピュータですか。きみらにゃ難しすぎたようだねへらへら」なんてのが通用しないのは誰でもわかる。それが、aの部分でそれが成立可能だとしたら、それはあまりにもふざけた話じゃなかろうか。難しいといえるということは、難しい部分について把握していたということだ。その難しい部分を解決するのがプログラムだ。つまり、このくずのような連中はプログラムをまともに作ることさえできていないということじゃないか。

カネの直接的な流れがないのが運の尽きなのか? いや、それも違う。目に見えていないかも知れないがbが得た収益でaが使った先行投資がまかなえるのだから、実際には最左端は最右端ではなく中間を顧客として考える必要がある。

aの溝というのはbの溝より大きいんじゃないか? もしそうだったらそれは不思議だ。bは要求が右から左へ流れるのに、aは要求は神のお告げとして勝手に左の妄想から作られるてるんじゃないのか(というような雀を捕まえるための大砲をこないだ見たからそう思うのだが)、だとしたらなぜそういう変なことが起きるのだろうか。実装して確かめるだけではなく、実装されて確かめるというのも必要なんだろうな。

という疑問を持つと同時に他山の石という言葉を想うのであった。

本日のツッコミ(全1件) [ツッコミを入れる]

_  [私も「難しすぎたようだね」に反応しました。自称「ソフトウェアの専門家」が率いる自称「アーキテクトチーム」様たちがしば..]


2005-05-12

_ すーくり

そうか。最初、すーふりだと思ってとってもはてなくんだった。


2005-05-13

_ こないだはまったおばかなバグ

public String foo(String[] array) {
  StringBuffer sb = new StringBuffer();
  for (int i = 0; i < array.length; i++) {
    sb.append(array[0]);
  }
  return new String(sb);
}
....
assertEquals("ABCD", o.foo(new String[] { "A", "B", "C", "D" }));

と抽出すると、これで気づかなきゃおかしいだろう。AAAAとなるわけだから。

実際は、

public String foo(String[] classNames) {
  for (int i = 0; i < classNames.length; i++) {
    try {
        Class.forName(classNames[0]);
    } catch (Exception e) {
      IllegalArgumentException ia = new IllegalArgumentException("bad class name:" + classNames[i]);
      ia.initCause(e);
      throw ia; 
    }
  }
}
....
try {
  o.foo(new String[] { "jp.co.foo.BAAAA", "jp.co.foo.Bar" });
  fail("no exception");
} catch (Exception e) {
  assertTrue(e.printStackTrace(), e instanceof IllegalArgumentException); // 追記(これ第1引数はそのままは書けないよ)
}
try {
  o.foo(new String[] { "jp.co.foo.Bar", "jp.co.foo.BAAAAA" });
  fail("no exception");
} catch (Exception e) {
  assertTrue(e.printStackTrace(), e instanceof IllegalArgumentException);
}

で、何度やっても2番目の呼び出しでno exceptionとなる。素直に自分を疑えばよいのに(というか疑っているのだが、例外処理のほうに気を取られてclassNames[0]としていることにまったく気づかず。

考察1:APIがたとえば、foo(List classNames)だったらどうだろうか?

for (Iterator i = classNames.iterator(); i.hasNext();) {
  Class.forName((String)i.next());

とするから、少なくてもここでストールするこたないだろう。(実際には長い文字列をsplitした結果だから配列を利用するほうが手数が少ないので配列を利用しているので、それなりの必然性はある)

考察2:ソースコードレベルデバッガを使う場合は面倒がらずにかっちりと使う。(forNameの次の文とcatchの内側に仕掛けていたので与えている文字列がclassNames[0]だとは思いもしなかった)

考察3:こういうときはprintfデバッグでも良いかも。

  for (int i = 0; i < classNames.length; i++) {
    try {
        System.out.println("start check:" + classNames[i]);
        Class.forName(classNames[0]);  // で気づかないとますますはまるだけだけど。
    } catch (Exception e) {

_ J2SE 1.5のfor-each

あらためて見てみたら、この例はおもしろいな。

for (Iterator i = suits.iterator(); i.hasNext(); )
    for (Iterator j = ranks.iterator(); j.hasNext(); )
        sortedDeck.add(new Card(i.next(), j.next()));
これはバグ。でも、
for (Suit suit : suits)
    for (Rank rank : ranks)
        sortedDeck.add(new Card(suit, rank));
}
こっちはOK。でも、なんかな……単純なIterator#nextの置換と考えて逆に痛い目に合いそうな気もするのだが。
本日のツッコミ(全4件) [ツッコミを入れる]

Before...

_ arton [なるほど。1.5の場合のfor文拡張は基本的に利用すべきでしょうね。]

_ junpei [for文の拡張はgenericsと一緒にリリースされたために真価を発揮してますよね]

_ unibon [1.5未満の枠組み内でも、ループ変数 i をループ内で使っていないことで、コンパイラーに変数未使用の警告を出してほし..]


2005-05-14

_ Mac

Carbon EmacsがTigerに対応したので、Macでいろいろやっている。

なんかちょっと重くなってきた感じがするが気のせいかな?

ことえりが、まるで携帯電話みたいに途中まで入力した状態で1連の文字列を表示してタブで選べと言ってくる。何が悲しくてわざわざタブキーを押さなきゃならんのだ? そのままホームポジションで打ったほうが早いじゃんと横目で見ながら無視してたんだが、ついWindwosのクセで、^kじゃなく^iと打ったら、なんだ、タブキーじゃなくてタブコードで良いのか、これなら使えるねとか。

それにしても意外なのはCtrlの位置は問題にならないのだが、リンゴマークの位置が無変換に相当するからか、つい間違えてoptionを押してしまい変なコードが入力されるのと、カナ変換時に^I^O^Pを打ってしまうことは多い。

後、気になるのは、スリープ状態から復帰時に認証ダイアログが2回表示されるのだがこれは何が原因なんだろう。1回目は黒い画面の時で、画面が表示されるともう1個認証ダイアログが表示されているのだが。

Mailは悪くないんだけど、読み込み中のフィードバックが全然ない(というか見つけられないだけか)のも気になる。

そんなとこかな。

_ 某プログラム

楽しみながら作ってたら740行になっちゃったけど、どうしよう?

本日のツッコミ(全1件) [ツッコミを入れる]

_ ogino. [たしかにMail読み込み中のぐるぐる消えちゃいましたね。Cmd-0で進捗のウィンドウ出てきますがトグルなので2回やら..]


2005-05-15

_ 旅人カレー

ときどき通る道に面して一軒の食堂がある。店頭にメニューが並んでいる。その中にとっても気になるカレーがある。何が気になるってその名前が妙だ。つまり、旅人カレーって名称が、すごーく気になる。

楕円の器の真ん中にご飯があって、左右にそれぞれ別のカレーを盛る。東と西の邂逅か、なんだか理由はわからないけど、とにかく旅人カレー。旅人という言葉の古臭さとビが重なるところ、最初と最後がタ行なんでちょっと固めの発音なのにビが破裂音のわりには柔らかめというか湿り気がある語感なんでおもしろいのだろうか。

んで、以前1回行ったことがあって、まあうまかったんだが、今日っていうか昨日、久々にまた行った。オクラが入ってるやつとタイのカレーを組み合わせて食った。赤と緑の出会いだ。やっぱりおいしいな。

でもよく見ると妙な張り紙がある。6月いっぱいで店舗の契約が切れるので休業だと。それは残念だ。

店の名前も知らないのだが、旅人カレーで調べたら(というかそれで調べられるところにネーミングの良さをあらためて感じる)

File 12 イッツァ・オブジェワールド”EATS”なんてページがあったり。そうか小林ワールドなのか。って言っても全然知らないけど。確かにワールドがあるのは事実だな。


2005-05-16

_ ディアブロモント

突然思い出したんだけど、ディアブロにはまった時のことだが、いきなりオンラインに出てくのはやっぱり気がひけるんで、ある程度レベルが上がるまで1人でやってるわけだ。

ところが、当時使ってたCD-ROMリーダが遅くて(と言っても2倍速か4倍速だったようには思うが)、何が困るって、ブッチャーの館が困る。

扉を開けるとブッチャーが出てくるから待ち伏せてタコ殴りにしながら逃げてはタコ殴りってのが戦法だろうと思うのだが、扉を開けるとその時点でフリーズするのだ。

フリーズって言っても死んだわけじゃない。多分、ブッチャーの罵り声を一所懸命にロードしてるわけだ。遅いCD-ROMから。で、満を満たして、まさに、満を満たしてという感じで、いきなりブッチャーが出てくる。しかも、大幅にターボブーストされたブッチャーだ。とんでもなく加速がかかってる。どうもタイミングの取り方の問題で、遅れを取り戻すためにコマを飛ばしているとしか思えない。

つまり、出てきた瞬間にこちらが何100回ものタコ殴りにあい、コンピュータの制御を取り戻した時には地上で裸一貫のやり直し人生になっているのであった。

同じようなことが最後のほうの魔女が4人くらいいる部屋でもあった

追記:書いてる時は気付かなかったけど「満たした」って変だな。「持して」じゃないか?

って言うか突っ込みチェックが携帯対応してなかった…orz

本日のツッコミ(全1件) [ツッコミを入れる]

_ るいも [DiabloはCloneCDで吸い出して、DaemonToolsにマウントしていたと思います。スピードアップと、いち..]


2005-05-17

_ 携帯用パッチ

昨日は、携帯からツッコミを入れられなくて閉口したから作ってみた(というほど大したことはないんだ。tDiaryはつくづくうまくできてるな)。

$ diff -u i.latest.rhtml~ i.latest.rhtml
--- i.day.rhtml~	2004-09-23 14:43:18.000000000 +0900
+++ i.day.rhtml	2005-05-17 00:38:14.000000000 +0900
@@ -31,6 +31,8 @@
 	<%%=comment_mail_label_short%>: <INPUT NAME="mail"><BR>
 	<%%=comment_body_label_short%>:<BR>
 	<TEXTAREA NAME="body"></TEXTAREA><BR>
+	<p><%%=comment_spamwarn() %></p>
+	<input type="checkbox" name="ishuman">
 	<INPUT TYPE="SUBMIT" NAME="comment" value="<%%=comment_submit_label_short%>"></P>
 	</FORM><%
 	end
$ diff -u i.latest.rhtml~ i.latest.rhtml
--- i.latest.rhtml~	2004-09-23 14:43:18.000000000 +0900
+++ i.latest.rhtml	2005-05-17 00:38:05.000000000 +0900
@@ -29,6 +29,8 @@
 <%%=comment_mail_label_short%>: <INPUT NAME="mail"><BR>
 <%%=comment_body_label_short%>:<BR>
 <TEXTAREA NAME="body"></TEXTAREA><BR>
+<p><%%=comment_spamwarn() %></p>
+<input type="checkbox" name="ishuman">
 <INPUT TYPE="SUBMIT" NAME="comment" value="<%%=comment_submit_label_short%>"></P>
 </FORM><%
            end

しかし、ちょっと本末転倒な気もするな。携帯からspamってのは無さそうだから、ishumanをチェックするときに携帯からだったら無視するっていうほうが筋はいいんじゃなかろうか? と思ったけど、まさかそれはないだろうけどUser-Agentとかごまかされた場合のことを考えるとしょうがないかな?

本日のツッコミ(全3件) [ツッコミを入れる]

_ arton [どうかな?]

_ babie [とあるデータセンターで、棚の内側に貼り付けられて怪しく液晶を光らせている携帯群を見ましたよ。>携帯からspam メー..]

_ arton [なるほど……。その光景はちょっと見てみたいかも(と違うところに反応)]


2005-05-18

_ 評価低いな

SAX使ってDSL(の最初の1歩)とは言ってないけど、そういうことだ。(URL直した)

_ 読了

プログラミング、これからの10 年 単純にというか素直におもしろかった。まあ、そんな方向だろうな、という実感もあるし。

2005-05-19

_ 誤った例外の使い方

public void foo(String a, String b, String c) {
    if (a == null || b == null || c == null) {
        throw new IllegalArgumentExcpetion();
    }
    int lena = a.length();
    int lenb = b.length();
    int lenc = c.length();
    ...
}
馬鹿ですか?
本日のツッコミ(全14件) [ツッコミを入れる]

Before...

_ unibon [@param の件ですが、ちょっとチャチャになってしまいすみませんが、たとえば String クラスの concat..]

_ arton [上のほう(12:55)に、コンテキストに依存していると書いているのを読んだ上で@paramがどうしたとか書いていたわ..]

_ arton [単純って言葉はちょっと微妙だな。明晰さといったほうが良さそうだ。短いものは明晰である。]


2005-05-20

_ おれは車じゃない

だからハンドルなんてものは付いてない。し、ハンドル名というつもりは全然ないのだが、とか自分に言い訳しながらハンドルネームうらないをやってみる。

で、改名案がおもしろかったかも知れない。

その1.モーニング娘。の様に”。”を付けると。
arton。
恋愛運:C 健康運:B 成功運:C 金運:C
大凶

その2.ちょっと洒落た洋風に。
イタリアーノarton
恋愛運:A 健康運:C 成功運:C 金運:A


その3.軍人系で呼んでみましょう。
arton閣下
恋愛運:A 健康運:C 成功運:A 金運:B
小吉

その4.番号付けで呼んでみると・・・。
arton28号
恋愛運:A 健康運:A 成功運:B 金運:C
小吉

その5.崇高?な名前を付けてみましょう。
伝説のarton
恋愛運:B 健康運:B 成功運:B 金運:B


その6.なにか凄そうな名前を付けると・・・
スーパーarton
恋愛運:C 健康運:C 成功運:B 金運:B

 
その7.親しみやすい呼び方を付けてみよう。
かわいいarton
恋愛運:A 健康運:A 成功運:C 金運:A
中吉

その8.ちょっとディスカウントショップ風に。
arton大特価中
恋愛運:B 健康運:C 成功運:B 金運:C


その9.ちょと古風に・・・
arton左右衛門
恋愛運:C 健康運:C 成功運:B 金運:A
末吉

その10.”つのだ★ひろ”みたいに・・・
arton★ひろ
恋愛運:C 健康運:A 成功運:A 金運:C


その11.思い切って、フェイスマークなんかどう?
arton(-_-x)
恋愛運:B 健康運:C 成功運:A 金運:C
末吉
ふーん、しかしどちらかというと、山彦小僧とかお多福小太郎とか古っぽいほうがいいな。
          凶 
   う〜ん、イマイチ。
愛着がなければすぐ改名しよう!
       山彦小僧
だめか。
                  大吉
おお!貴方にピッタリのハンドルをお使いになられてますね。
         運気も最高ですので将来安泰。
                 qwerty
 
恋愛運:A 健康運:B 成功運:A 金運:A
まじか? まじなのか?
本日のツッコミ(全1件) [ツッコミを入れる]

_ Classiclll [TypeWriterは運気も高そう]


2005-05-21

_ 歯車

からくり人生

共通点がある。回転とか、組み合わさって別の動きになることとか。おもしろいなぁ。いろいろ刺激を受ける。

こんなところにもDSL

なんとなくパーサジェネレータつながりで、東の青木、西の山宮、というフレーズを思いつく。

それにしても、良い時代になったなぁ、と思う。こうやってリンクをたどっていろいろ読んでいくと、いやでもこの部屋の中でおれは1番賢いわけじゃないということを徹底的に思い知らされるからだ。部屋の広さがとんでもないからなぁ。


2005-05-22

_ ポジション

簡単なようで結構、難しいかも。

アティテュードはあってもスタンスは持たないというコンテキスト依存症だから、そんなものは無かったりあるいはあっても無いふりをしてたりするからだろう。


2005-05-23

_ メモ

RoRのActiveRecordとS2DAO。

DRY

規約>>>設定

言語重要(というか設定ファイルからの離脱というかソース回帰というか。2番目と微妙に重なるかも)

そもそも論:for ordinary peopleだったかな? 最初のMacみたいだと思った。


2005-05-24

_ ほふくぜんしんにゃ

耳にこびりついてるんですが。


2005-05-25

_ ほふくぜんしんにゃ

と、まだ耳に残っているのだが、
public String add(CharSequence a, CharSequence b) {
    StringBuffer s = new StringBuffer(a.toString());
    s.append(b);
    return new String(s);
}

というメソッドが(あるわけないが、例として)あるとする。

そのメソッドを呼び出すと、MethodNotFoundExceptionになるんですが? という問い合わせが来る。

そんな馬鹿な、と思う。で、環境を聞いてみるとJ2RE 1.4だと言う。それならOKなはずだが。

しかし、なんでスタックトレースそのものを出さないのかね。でも例外のメッセージは来た。見た。

Exception in thread "main" java.lang.NoSuchMethodError: java.lang.StringBuffer.(Ljava/lang/CharSequence;)V

って言うか、J2SE 1.4のStringBuffer#appendにはそんなメソッドはないのだが。

どうもアングラで入手したソースを1.5でビルドしたんじゃないか? というかほかに考えられないのだが。

javac -target 1.4 -source 1.4 Buf.java
として、
javap -classpath . -c Buf
すると、
public java.lang.String add(java.lang.CharSequence, java.lang.CharSequence);
  Code:
   0:	new	#2; //class java/lang/StringBuffer
   3:	dup
   4:	aload_1
   5:	invokevirtual	#3; //Method java/lang/Object.toString:()Ljava/lang/String;
   8:	invokespecial	#4; //Method java/lang/StringBuffer."":(Ljava/lang/String;)V
   11:	astore_3
   12:	aload_3
   13:	aload_2
   14:	invokevirtual	#5; //Method java/lang/StringBuffer.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuffer;
となる。

1.4でコンパイルすると、当たり前だがJ2SE1.4にはStringBuffer#append(CharSequence)なんてメソッドは存在しないから

  Code:
   0:	new	#2; //class StringBuffer
   3:	dup
   4:	aload_1
   5:	invokevirtual	#3; //Method java/lang/Object.toString:()Ljava/lang/String;
   8:	invokespecial	#4; //Method java/lang/StringBuffer."":(Ljava/lang/String;)V
   11:	astore_3
   12:	aload_3
   13:	aload_2
   14:	invokevirtual	#5; //Method java/lang/StringBuffer.append:(Ljava/lang/Object;)Ljava/lang/StringBuffer;

となる。

-targetでどうにかなるのは、言語仕様に関するところだと言うことが結論かな。

本当の結論は、1.4をターゲットにした開発をする場合、開発環境のJ2SEも1.4にしておけ、ということだ。わかってやってるなら良いのだが、わかってなくて人に問い合わせるってとこがあまりにも困ったちゃんである。っていうか、ソース共有は良いのだが、jarは配布したものを使ってて欲しいな。デバッグオプションはフルに設定してるんだから。


2005-05-26

_ 2つのオープンソース

なんでもそうだが目的は1つではない。

オーバーラップするものもあるだろうし、転化することもある。

1つは公開もしているソフトウェアで、もう1つは公開するソフトウェアだ。

前者は良くわかる。なぜなら僕が公開しているのはこっちだからだ。

自分の必要のために作る。作ったものは自分で使った時点で元は取れている。あとは捨てても良いかも知れないが、ある程度の時間も使えば知恵も使っているわけだし、また自分の役にたってるということは、もしかしたら別の誰かの役にも立つかも。というわけで公開しておく。お裾分けウェアだ。

後者は、さらに幾つかに分かれるだろう。1つは前者に近いかも知れないが規模のでかさが見えているから1人でやるにはちょっと無理があるかも知れないというようなやつ。Linuxの最初のころはそんな感じじゃないかな。それから、(別の意味に取られかねない言い方だとは思うが)マーケティングウェアとでもいうようなタイプ。拡散することに意味があるもの。それはフィードバックの多様さを求めているからで、そのフィードバックから新たな知見を得てそれを糧にしてさらに発展するようなもの(その糧を実際にどのように消費するかはファウンダーの求めるものによって違う)。前者とまったく異なるのは完成するということが基本的にありえないというか、完成を求めていない点だ。それからソフトウェアは媒介に過ぎないもの。GNUなんかはフリーソフトウェアの思想伝導の道具という意味で明らかにこっちだ。商売の道具に考える場合も当然こっちになるだろうな。MySQLとか。

後者のほうでソフトウェアを作っていると、前者のほうの視点が理解できないようなこともあるんじゃなかろうかな、と時々思うことがある。

自分の楽しみのためのソフトウェアというのは、微妙な位置にあるかも。拡散することによって得られる新たな知見を受け取ることは楽しみを増すかも知れないし、多分、完成することはないだろうから(成長させるのもまた楽しいだろうし)、元を取ったからお裾分けなんて感じじゃないだろうな。でも、多分に、拡散にかける熱意は後者ほどはなさそうだから、前者の雰囲気が漂っていたりもするだろう。こういうのにはどんなのがあるかな。

普通、獣は自分が食べる分だけ狩る。食い残した分は食えなくしてしまう。食えなくなる前にハイエナとかは掠め取らなきゃならない。でも熊という動物はちょっと違うらしい。食い残した分を他の動物が食べられるようにきれいに残して置くそうだ。お裾分けウェアは熊のソフトウェアでもある。


2005-05-27

_ 熊って本当に食べ残しを分けるのかな?

ゴースト・ドッグ [DVD](フォレスト・ウィテカー)

熊が食べ残しを分け与えるという、なんか嘘臭い話は、ジムジャームッシュのゴーストドッグに出てくる。

ゴーストドッグ(というコードネームというより、ボビーデジタルみたいなものでなんかのハンドル名みたいだ)という名の殺し屋が主人公だ。初老のイタリアマフィアにその昔、命を助けられた恩を忘れず、難しい依頼を黙々とこなす。愛読書が葉隠れで、武士道にかぶれているから、忠の一字ということらしい。で、歩いて連絡を取れるような距離に住んでいるのにわざわざ伝書バトを使って殺しの依頼を受けたり。壊れそうなビルの屋上の鳩小屋の隣の狭い部屋で暮らしていて真剣で素振りをしたりして暮らしている。で、街をうろついていると向こうからRZAが歩いてきてブラザーブラザーと挨拶したり。で、盗んだ車に乗って殺しに行く時には、ばかでかい音でラップを聴くわけだが。

で、確か、ハイウェイを走らせていると、数人の男が熊を殺しているんだっけな? で、それを見てむちゃくちゃ怒り出して、熊のほうがてめえらより偉いんだ。なぜなら……てな調子で食べ残しの話が出てくる。結局、クマ殺しは全員殺されてしまうんじゃなかったけな。

ジムジャームッシュの映画はほとんどが与太話からできている。どれだけくだらない与太話を真剣な顔して相手に話して聴かせるか、それを聴いてどう反応するか、というのをスクリーンに映し出す。

街角で出会った黒人からオーバーザレインボウに取り付かれた音楽家の話を聴かされる。で、ピポピポピポピポ……ドップラー効果だ。とか、こないだ見たやつだとプレスリーの兄貴とか、霧の摩周湖の望遠鏡とか。

ゴーストドッグは妙に物悲しい(というのは主人公がばかばかしく武士道というものに対して愚直だからだが)ので、どこまでを与太として想定しているのか判断に苦しむところがある(と思わせるところがすでに与太話のようなものだ)。

とはいうものの、どうせ熊の話も与太だろうとは思ってはいるのだが、それでも好きな話なんでなんとなく書いてみたら反応があったりして、さすがにどこまで与太か気になった。

調べてみると、「クマ」が味を覚えて人を襲うから「食べ残し」を山に置いてこないでください、みたいな逆方向のページや怪しげな自然保護団体の(っていうかゴーストドッグの武士道みたいなものだ)ページがじゃかすか引っかかるが、クマの食べ残したサケで森が育つというのは信憑性が高そうに見える。後、行動半径がやたらに広いからどんぐりの種をそこらにばらまく森の使者みたいなことを書いているページもあったり。

日本のクマは絶滅寸前みたいだが、でも、山の中で黒くて大きい(というほどは大きくはないようだが)のがうろうろしてる光景ってのはなんとなく楽しい。


2005-05-28

_ 早くも1週間

うー、もう土曜日になっちゃったよ。

でも、書いたぞ。Wikiにリンク貼れるようになるといいな。


2005-05-29

_ 怒涛の快進撃

日曜日が待ち遠しい! (フランソワ・トリュフォー監督傑作選8) [DVD](ファニー・アルダン)

っていうか、思わず眠ったら日曜日になっていた。待ち遠しいどころか。

この頃のファニーアルダンはそんなに大きくなかったと思うが、そこがトリュフォーのトリュフォーたるゆえんかも。惚れた女は美しいってことを映画で示した作品。


2005-05-30

_ 飛鳥山の北

なんかいろいろあって、足立区へ車で行った。

明治通りを北上だ。

で、ずっと行くと飛鳥山ってとこでT字路になる。

珈琲時光 [DVD](一青窈)

これは、あれか、祐天吉松のあの飛鳥山だな? そうか、こいつが飛鳥山かぁ。と感慨深く見る間もなく、路面電車の線路の上を通りながら左へ曲がる。っていうか空に電線。路面電車ってのもおもしろいが、これは、珈琲時光のあれだな。実は珈琲時光を見たら乗ってみたくなって去年の11月頃に早稲田から終点まで乗って、最後には極楽にたどりついたのであった(っていうかそういう名前の謎があったのだ)。

で、その後、ナビゲータに従って割りと細い道に入ったら、おもしろいのなんのって、ネーミングセンスがぶっ飛んだ飲み屋だのスナックだの飯屋だのが建ち並んでる。で、さらに豊島と名前が付いてはいるけど豊島区じゃなくて北区なところを通ったり(なぜなんだろう?)、隅田川を越えたと思う間もなく荒川越えて、と都市と郊外の絶妙な狭間の旅は実に興味深かった。


2005-05-31

_ PofEAA読書会

遅くなりましたが、「動的言語と静的言語の交差点──RubyとJava/Seasar2の出会い」という記事にさせていただきました。

いや、書いてる通りなんですが、ひがさんのお話がすごく刺激的でした(高橋さんのお話はプレゼン手法が刺激的かも)。おかげで、いろいろ見えてきたような気がしてます。

はっしょり過ぎている個所はあるかも知れませが、間違ったことは書いていないとは思います。でも、もし技術的な記述個所に間違いがありましたら、ご指摘お願いします。

#それはそれとして日本でのRailsのメジャーメディア登場第一号だと思う。

ちょうど、Kazzさんのところでも設定ファイルの乱立に対する問題提起がされていますが、身近な課題としては、まさにこのあたりが注目かな、とか思っています。その意味でもRoRとS2DAOの競演は、「思っています」と書いたけど、その問題意識を自覚させてくれたわけで、とても刺激的でした。

っていうか、Javaについてはそろそろ収束させていったほうが良いと思うな。

追記:記事のほうの修正もしていただくつもりですが、RubyとJavaでプログラムの行数が同等と書きましたがこれは僕の間違いです。実際はクラス数が互角、コード量は1/3、設定ファイルは1/10と、高橋さんからご指摘を頂きました。どうも申し訳ありません。出典:Relevance


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ジェズイットを見習え