2005 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
2014 1 2 3 4 5 6 7 8 9 10 11 12
2015 1 2 3 4 5 6 7 8 9 10 11 12
2016 1 2 3 4 5 6 7 8 9 10 11 12
2017 1 2 3 4 5 6 7 8 9 10

ホーム

2005年10月30日

おいおい、いくらなんでも露骨すぎるだろ、JRAさんよ (w

本家Permlink


2005年10月29日

桑田が1.5億でサインだってよ。これで減額制限一杯だってよ。そりゃ引退し
てコーチなんかやるわけねぇよな。

--

む。Cでのメソッドの定義として、引数をRubyの配列で受け取るのはあるけど、
呼び出しではRubyの配列を渡せるものはないのか。つまり:

static VALUE
call_printf(VALUE obj, VALUE args)
{
  return rb_funcall_with_rarray(rb_mKernel, rb_intern("printf"), args);
}

というのはない。

本当か? いや、何か見落としてるな。ちょっと信じられない。

本家Permlink


2005年10月28日1

そういえばCGIにしてからは書いてなかったからちょっと書いておくか。

Macユーザだったころ、QuickBasic買ったんだよね。『とりあえずベーシック
だろ』みたいな感じで。そのころはまだFD1枚だったかな。まぁ、ボチボチやっ
てたわけ。そしたらさ、MSのバカがMac版のQuickBasic、ディスコンにしやがっ
てさ。

そのころのMacって、シロートが楽しめるプログラミング言語ってQuickBasic 
くらいしかなかったわけ。もうそれで怒り心頭でさ。それ以来、MSが大っ嫌い
になったというわけ。

QBが売れてなかったわけじゃねぇんだよ。でも、ユーザを見捨てた。

オレぁ、あの恨み、忘れねぇよ。

くっだらねー話だと思うだろうけどさ。

まぁ、その後のMSを見たら、あれはあれで正解だったかもしれねぇけどよ。そ
んなのこっちは知ったこっちゃねぇしさ。ぶっちゃけ私怨だわな。

--

Appleを嫌ってるのも大体似たような話でさ。PowerPCに切り替わったのは奇跡
だっていわれてるけど、相変わらずフリーズ連発してたしさ。互換機路線も止
めたし。裏切られ通しだった。で、MkLinuxがきっかけでMacは止めた。

Appleユーザは忠誠心が高いとかいわれるけど、オレからしたらイヌにしか見
えなかったしね。なんでそんなに湯水のごとくカネ突っ込めるのか不思議でしょ
うがなかった。

だから、ジョブスは大っ嫌い。高級路線だったのも、互換機路線を止めたのも
原因はジョブスだから。ま、高級路線は止めたみたいだけどな。でも、はっき
りいってジョブスを持ち上げすぎだよな、みんな。iPodにしたって、それを
Appleがやる必要があるかっつったら、ねぇわけじゃん。そんなもんソニーで
もどこでも町工場にやらしときゃいいことじゃん。そんなことをみんなは
Appleに期待してたのかと思うとガッカリだよな。

--

筆の勢いで『オレは反MS信者』って書いたけど、ここ以外でそうしたことはい
わないな、まず。当たり前だけど (笑)。

Windowsもダメ、Macもダメ、じゃあLinux勧められるかっつったらためらうよ
な、フツー (笑)。第一、UNIXなんて自分から選ぶもんだしな。

本家Permlink


2005年10月28日

いや、あれはebanさんの中の別の人が書いたんですよ。普段のebanさんなら
『Symbolのほうが楽だろ、このバカチンが!』って書くはずですもん。

--

http://www.watch.impress.co.jp/game/docs/20051027/dete.htm

え? GBAとDSってカード違ってたのか。でもって、DSは両方のスロットがある
のか。そりゃデカくもなるわな。まぁ、2スクリーンというのもあって、余っ
たスペースの有効活用みたいなとこもあるんだろうけど。

とりあえずもっと小さいDSが出るまでは書いたくないなぁ。ゲーム次第なんだ
けど。

--

injectって使ったことないんですけど、基本はsumとechですかね。

[1,2,3].inject(0){|sum, ech| sum += ech}

あの例なら:

module Enumerable
  def map
    self.inject([]){|result, ech|
      result << yield(ech)
    }
  end
end

でしょう。resultでそれが返り値である意図をはっきりさせ、echでそれが各
要素である意図をはっきりさせる。

--

オレじゃねーよ。たださんとこ書き込んだことなんか一度もない。

ってそれはウソだけど。多分。

--

DefMacroがDefMarcoに見えた。DeMarcoのtypoかと思ってちょっと混乱した。

--

けっ。反MS信者で悪かったな。確かにオレは二流だが、だからといってrmsも
二流なのか? それ以外にもMSを避けてる人で一流はいくらでもいるだろ。ま
つもとさんは? おくじさんは? Linusは? クソッタレが。

とはいえ、自分はWindowsを使ってるヘタレですが (笑)。

--

LINQは良くて型推論はダメというのはよく分からない。型推論のほうが全然歴
史のある技術なのに。Extension Methodにしても、その実体は静的な仕組みと
いうことなので、型の安全性は守られるはず。何か型安全性というものを盲信
しているような気がする。

保守という面で見れば、型安全性よりもユニット・テストが残されてるほうが
よほどありがたいだろう。

--

PerlとPHPとC++が同列に選択肢に入るドメインというのがちょっと信じられな
い。

--

うひ。一番恥ずかしい人種認定ですよ。

本家Permlink


2005年10月27日2

自分は朝刊は読みません。もっぱら東スポです。でも、たまには朝刊を買いま
す。そんなときはデイリースポーツです。別にタイガースファンというわけで
はなく、強いていえばボクシングの情報が割と豊富なことと、世間でどんなに
大事件が起きても一面はタイガーズという虎キチガイっぷりが面白い。

そんなわけでたまに読むデイリーですが、『これはゼニを払ってでも読む価値
はある』と思っていたのが江夏豊氏の観戦記です。その観戦記がこのほどまと
められて一冊の本になりました。

  『江夏豊の 猛虎かく勝てり〜'05年阪神タイガースV奪回観戦記』(江夏豊著、洋泉社)

江夏氏といえば、シャブでパクられたこともあり、その風貌からしてザーヤク
も真っ青といった感じで、悪い意味での野球バカだと自分は思っていました。
しかし今は自分の不明を恥じています。

江夏といえば先発でも抑えでもエースと呼ばれていました。その豊富な経験か
ら来る野球眼の鋭さは、デイリーの他の評論家が『ナマクラか?』と思わせる
ほど説得力のあるものでした。また、氏の語り口は毅然として厳しいのですが、
それが野球に対する愛情ゆえだということが伝わってくる、味わい深いもので
す。

氏が今シリーズのハイライトとした9.7の対ドラゴンズ戦の観戦記から:

  川上はこの数試合内容がよくなかったが、この日は「さすがは中日のエース」
  という7回1失点、112球の熱投であった。ただ四回、金本に許した本塁打の
  場面に限って、調子が出ないことから来る気の弱さが出た。0-1からの2球目
  を、左翼ポール際へあわやという大ファウルを打たれたのだが、この打球に
  よって3、4球目が連続してボールで1-3となった。金本には続く5球目を本塁
  打されたが、せめて平行カウントにしていれば違った結果になった可能性は
  高く、このあたりが調子に乗れない原因ではないか。

一球ごとに移り変わる投手の心理、よくいわれる『一球の綾』をよく伝えてい
る文章です。これが真実かどうかは川上選手に尋ねてみないと分からないでしょ
う。しかし、氏の文章には説得力がありますし、観戦記としてはそれで十分で
す。また、川上の復調を願う氏の気持ちが行間から滲み出ています。

こうした氏の文章を再び本で読めるようになり、一野球ファンとしては喜んで
いいべきではないか。ただ、1つだけ苦言を呈せば、やはり日本シリーズの観
戦記も含めるべきではなかったか。プロ野球選手というものは日本一を目指し
てシリーズを戦い抜くのだから。

--

デイリーでいえば、江夏の他には上田さんもいい。他はダメ。まぁ、スペース
が小さいという不利はあるけどね。

--

機材適所 → 適材適所

JavaとかRubyとか動的言語とか生産性とかいろいろ書いたつもり。

本家Permlink


2005年10月27日1

ああいうOOPの理解の仕方、自分は嫌いなんですよ。オブジェクトが生きてな
いから。あれじゃ単なるメカニズムでしょ? クラス指向とはまた違った違和
感を覚えるんですよね。

SRAの青木さん流にいうなら、OOPっていうのは比喩による考え方なわけで。擬
人化して責任の分配してって、ていう考え方。

言語のメカニズムっていうのは、その考え方を助けるだけであって。クラスに
しろ、継承にしろ。

実際にコーディングしてたらメカニズムも大切だしメタな領域に踏み込むこと
もありますけど、それって、まぁ、ぶっちゃけDDI話。

で、あれを読むと、そういう比喩による考え方をPythonはサポートしてくれて
るの?と疑問に思っちゃうわけですよ。サポートっていうのは、そういう考え
方に自然と仕向けることも含めて、ね。まぁ、斜め読みですから自分が誤った
印象持ったんでしょうけど。

--

はてなはどうか知らないが、少なくともXPにおける進化的なシステムとは、そ
れがリリースされるときは100%の品質を満たす。たとえそれば、大きな目標の
50%しか達成できなリリースであっても。100%の品質のリリースで50%の達成度
なのだから、それをもう1回繰り返せば100%の達成度となる。

T.O'Reilly氏のいうPerpetual Betaは、自分は、進化的なシステムと同じだと
考えている。サービス開始後も機能がどんどん追加されていくという部分が強
調されてはいるが。やはりリリースするときは100%の品質を満たさなければな
らない。

しかし、品質の目標設定は、必ずしもユーザの願望とは合致しないかもしれな
い。たとえば、Googleにしても当初はPDFなどは検索対象ではなかった。ユー
ザの中には、それを十分な品質を満たしていないと見なす人もいたかもしれな
い。しかし、Googleにはそれが100%の品質だったのだろう。

--

よりによってつもり日記の日にリンク張られるワナ (笑)。

本家Permlink


2005年10月27日

--- gc.c.~1.216.~	2005-10-25 14:30:10.000000000 +0900
+++ gc.c	2005-10-27 09:56:24.000000000 +0900
@@ -70,7 +70,7 @@
 #  include <alloca.h>
 # else
 #  ifdef _AIX
- #pragma alloca
+#pragma alloca
 #  else
 #   ifndef alloca /* predefined by HP cc +Olibcalls */
 void *alloca ();

--

しかし、『勢いが違った』なんて、とてもプロの吐くセリフじゃないよな。
まぁ、岡田監督がそういってたわけじゃないけど。

--

あははは。SBPP読んでくれってツッコまれちゃいました。

asDateでgrepかけると、K.Beck氏は、気持ち悪いといった意味のことはいって
るんですけど、String>>asDateみたいなConverter Methodを一概に排してるわ
けじゃないんですよね。2つのルールはあるんですけど、それ以外にも:

  In many ways, the simplest way to communicate the presence of a con-
  version is a Converter Method. If I am explaining Date to you and you already
  know about Strings, it is tempting to say, "You can just convert a String to a
  Date by sending asDate to the String."

なんていうことも書かれています。もちろん、Converter Methodにはデメリッ
トもあるということも言及してあって、Converter Constructor Methodのほう
がいいだろうとは読めるんですけど。

--

記念カキコしちゃうぞ、たださんとこ (笑)。

--

http://sky.haun.org/d/?20051026#26

はてなの例の特許は無効になってるんじゃないか説。

--

・・・そうだよな。4辛なんて半端な数字だもんな。今度5辛で注文してみます。

--

PHPerとRubyistとJavaneseの3人があるサイトを見つけた。

PHPerは叫んだ。

  このサイトはPHPで書かれてるに違いない! 世の中すべてPHPで動いてるん
  だもの!

Rubyistがたしなめていった。

  まぁ確かにPHPも多いが、フツーに考えればPerlだろうね、うん。

そして最後にJavaneseがこう呟いた。

  どこのフレームワーク使ってるのかな?

--

http://www.dm4lab.to/~usa/ruby/d/200510c.html#id20051026_P1

ありがとうございます。勉強になりました。

--

つもり日記かよ! こ、腰から力が抜けていく (笑)。

本家Permlink


2005年10月26日2

『ソース・コードはボトムアップで読む』というのは慧眼です。でも、ソース・
コードというのは玉ねぎみたいなところがあって、いくら剥いてもまた皮だっ
たということも多いんですね。

ちょっとわざとらしい例ですけど、JavaのSwingで書かれたアプリがあるとし
ましょう。まずアプリのコードを読みますよね。で、ちょっと分からないとこ
ろがあって、Swingのコードを読みます。さらにAWTのコードを読みます。それ
でもまだ分からない。ところが、ここから先は皮が厚くなるんですね。AWTと
ネイティブなGUIライブラリとの結合部は黒魔術みたいになってて。で、それ
がようやく剥けると今度はXの皮が出てくるわけです (自分はLinuxですから)。
これもまたブ厚そう。さらに今度はXの下にあるOSのコードを読みます。

そんなことをやってたら時間がいくらあっても足りません。SRAの青木氏じゃ
ありませんけど、『知りたがり』だと、アプリからOSの層にたどり着くまで何
年かかるか分かったもんじゃありません。まぁ、フツーはどこかで諦めます。
自分はヘタレですから、AWTあたりまでで挫折します。

結局何がいいたいかというと、特にこれといってないんですけどね (笑)。グ
チです。

自分は読むことより書くことのほうを重視しますけど (だって、そっちのほう
が何倍も楽しいから)、読まなきゃ始まんないってことも多いわけで。やっぱ
り読む技術はある程度身につけておかないとダメなんですよね。

本家Permlink


2005年10月26日1

extconf.rbっていうかmkmfは、MANIFESTとかdependとか関係なく、ファイル名
の拡張子が.cなら何でもSRCSに突っ込んじゃうもんですか?

--

ID2SYM(rb_intern("foo"))

これを一発でやるマクロはありますか?

--

http://d.hatena.ne.jp/sumim/20051026/p1

さすがSmalltalkといったところ。フツーの感覚だったら:

  '10/25/2005' asDate

はイヤだと思うでしょうね。実際イナモデでも:

  Date.parse('10/25/2005')

にしてくれって書かれてましたし、そう思う人は多いんじゃないですかね。

まぁ、それはそれで当たり前の話だとは思うんですよね。easy-to-use APIと
いっても、誰を対象にするかで変わってくると思いますから。ある程度経験積
んだプログラマだったら、parseという言葉に馴染もあるでしょうしね。

本家Permlink


2005年10月26日

http://www.tokyo-np.co.jp/00/sei/20051026/mng_____sei_____003.shtml

  総会で委員の一人が「たばこ税は(欧米より)安すぎてみっともない。(税
  を)高くすれば医療費も削減できる」と指摘した。

出たよ、『みっともない』。

見栄や外聞で税制を決めるな、このバカヤロー!

ほんっとにバカが多いな、この国は。

--

酔鍵。酔えば酔うほどキーを叩くのが速くなる。

--

http://jdmc.k-of.jp/program.html.ja

あれ? これ、Yendotに載ってた?

行きたいけど行けるわけねぇわな。

--

http://jimweirich.umlcoop.net/index.cgi/Tech/Programming/TestVSBehavior.red

TDDとBDD。どうなんすか? BDD、読むだけだと間違っていないように感じるん
ですけど。角谷さんが詳しそうなんだけど、書いてくれてないし へっへ。

それと、最後にあるMockとnon-Mockの対立っていうのがちょっと意外でしたね。
やっぱりモック・オブジェクトに対する否定的な意見もあるんですか。何度も
書いてますけど、自分が持ってるモック・オブジェクトに対する懸念は『並行
する継承階層』だけなんですね。それが存在していいのか、必要悪なのか。そ
れには誰も答えてくれてない。でも、モック・オブジェクト使いますけどね。

--

シンボルの一番いいとこは楽なところだ! とebanさんならいうはず。

だって、文字列なら1回余計にタイプしなきゃいけないし、しかも二重引用符
使ってる人だとシフト・キーまで押さなきゃなんない。

まぁ、一般的には、シンボル同士の比較は文字列同士の比較と比べてメチャク
チャ速いってのが一番だろうけど。

本家Permlink


2005年10月25日1

全国八千万のハードウェア・ハック愛好者のみなさん、いかがお過ごしでしょ
うか? あれほど暑かった夏もどこへやら。最近はすっかり秋めいてまいりま
した。

秋といえばやっぱり読書の秋でございます。ハードウェア・ハックの友、『ラ
ジオライフ』の12月号が発売されております。その『ラジオライフ』に待望の
iPodの改造記事が掲載されております。題して『iPodShuffleでトイレハッキ
ング!』。iPodShuffleを改造して、『音姫』を作るという企画でございます。

『音姫』をご存知ない? そんなあなたに記事を引用しましょう:

  音姫とは、主に女性の方が排泄する際に生じる音をごまかすため水を流すと
  いう行為で水道水が浪費されるのを防ぐために開発された、トイレ擬音装置
  のこと。

そしてハックするものは:

  センサー部に手をかざすと、録音された「トイレの水を流した音」が再生さ
  れる仕組みになっています。

というシロモノ。普段ハードウェア・ハックに夢中になって家族サービスを怠
りがちな世の旦那様方、このハックで奥様や娘さんが泣いて喜ぶことは間違い
ございません。是非!

--

もう、ほんとに、これが日本の``Make:''かと思うと情なくって涙が出てくらぁ。

http://makezine.com/

--

もちろん嫌いじゃないけどな。いいから買っとけ、ラジオライフ。

--

getopt_long、まさか自分で使うとはな。いや、自分で使うために書いたんだ
けど。

NetBSD (またはOpenBSD) のコマンドすべてをRubyで書き直すっていう野望は
とっくの昔に諦めてるんだけどさ。

何しろdiffがほしかったんだよな。RAAにあるライブラリみたいなのじゃなくっ
て、ほんとにdiffそのものが。今でもほしいんだけど。getopt_longはその第
一歩だったわけ。

最終的にはshもRubyで書き直してさ。でも、RubyBSDがほしいとかじゃなかっ
たんだよな。Rubyの中で再利用できるコマンドのオブジェクトがほしかったわ
けで。

find('.', :name, '*.[ch]') | xargs(:grep, 'foo')

みたいな? そういうのがRubyの中でできたら楽だと思ったんだな。今でも思っ
てるけど。石塚さんのshell.rbっていうのもあるんだけどさ。

Shell.run('find . -name "*.[ch]" | xargs grep foo')

とかさ。

Makefile書いてると思うんだけど、やっぱshサイキョーと思うわんでもないん
だよね。楽だから。だからMSの新しいシェル? あれはいいと思うんだよね。
あそこまで自分は深く考えてなかったんだけど。

やりたいことはいっぱいあるんだよね。SmalltalkみたいなGUI環境作りたいと
かさ。Eclipseみたいな開発環境作りたいとかさ。Programmableなブラウザ作
りたいとかさ。でも、どうにもこうにも実力不足でただの夢想に終わっちゃっ
てるもんな。我ながら情ない。

--

はじめてlib*-dbg.debの使い途が分かった。

本家Permlink


2005年10月25日

http://www.minix3.org/

``MINIX 3''を名乗るくらいなんだから直系ってことでしょうね。whoisで引い
てもA.Tanenbaum先生の名前出るし。

MINIX3で教育用OSから実用OSに方針を変えるっていってますね。ってことは、
MINIX本の第3版は出ないってこと?

--

http://zunda.freeshell.org/d/20051024.html#p03

「どれもこれも網羅的に」っていうと、いらないものも含んじゃうニュアンス
がありますよね。

だから、lastの「leaving nothing more to be said or done」っていう意味
は、『もう消しようがなくって残ったもの、本当に必要なもの』ってことにな
るんだと思うですよ。

--

ご冗談を。仮想機械を趣味で作ってて、専門はモノホンのCPUじゃないですか。

いや、逆か? 専門が仮・・・

きっかけは、さるとさんの『普通の奴らの下を行け』だったかな? この話に
もukaiさん出てくるし (笑)。

shiroさんも好きなんですよね。ささださんにいろいろコメント寄せてくれま
すし。自分には、年季の入ったLisperは下の話が好きな印象があります。

Smalltalkerもそう。青木さんとか結構バイトコードの話しますよね。

まぁ、『本物のハッカー』っていうより『本物のプログラマ』みたいな話になっ
ちゃいましたけど。例外はないわけじゃないですけど。たとえば、まつもとさ
ん (笑)。下の話を聞いた覚えがありません。まぁ、でも、これは宗教上の理
由でしょう。下の話だけに。

--

http://japan.zdnet.com/news/ir/story/0,2000054251,20089449,00.htm

ちょっと気になってたんだけど、これ、まだ具体的な動きになってないのかね。
言うだけ言っとけ!みたいな感じか。

--

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?JAOO2005

  他に特筆すべきことといえば、マイクロソフトの連中が直面している問題が
  あるということだ。その問題とは、「どうして悪の帝国で働いているの?」
  と子供たちに質問されたときにどう答えるかというものだ。

あははは。W.Cunningham氏がMSから離れたのも示唆的ですな。でも、この問題、
もう10年前くらいから続いてないか? まぁ、MSで働くような人はストームト
ルーパー並みに面の皮が厚いから気にならないんでしょう。

話は前後しますけど:

  パネルでは、Bedarra社のDave ThomasとBrian Barryが、「現状のようなオー
  プンソース開発の大量発生は、そう長くは続かないと思う」と言っていた。

大企業の支援がなくなったら (それは近い将来起こりうることで)、オープン・
ソースも厳しい時代に入るだろう、という予想。

(この話ついてはM.Fowler氏はコメントは避けています。)

でも、どうなんすかね。上の2人にいわせりゃ、今がバブルってことでしょ?
そうなんですかね? そんな感じ、全然ないんですけど。

そういえば:

http://www.itmedia.co.jp/enterprise/articles/0510/24/news080.html

というのもありましたよね。MSも本格的にオープン・ソースに足を踏み入れよ
うとしてるんでしょうか。

--

ruby.netって度々話題になってたのねぇ。カネ持ってそうなヤツじゃなきゃ門
前払い? (笑)

本家Permlink


2005年10月24日1

いや、やっぱ本物のハッカーは脳内アセンブラが装備されてるんですよ、絶対。

これは半分冗談だけど半分マジ。結構、機械語とかバイトコードの話好きなん
ですよね、そういう人たちって。オレは大っ嫌い (笑)。

--

へー、意外。まつもとさんが『DIコンテナってあまり好きになれない』とは。
MatzDIはルンルンで書いたのかと思ってました (笑)。

でも、『将来のコストを今払えというのがイヤ』っていうのがよく分かりませ
ん。モデルとモックの切り替える仕組みっていうのは、fine-granularityのユ
ニット・テストがやりたいっていうことのへのコストだと思うんですけど。テ
ストしやすさっていうのは将来のコストじゃなくって今のコストなわけで。

--

あ、『勉強不足でした』ってのはeasy-to-use APIと全然関係ありません。

そういえば今朝ruby-list見てビックリ。まさかこんな話になってるとは (笑)。
ウェルカムですよ。

--

http://c2.com/cgi/wiki?TeachingSimpleVsComplexSolutions

ちょっと気合いを入れて読んでみた。問題は『ある設計が過剰に複雑である』
ということをどうやって知るか?

それに対するK.Beck氏の答えが一番下にある:

  It doesn't help to teach simple without teaching how to go from
  simple to more complex when you need to. I put in extra complexity
  when I am afraid I can't put it in later. So, I think teaching
  simplicity has to go hand in hand with teaching refactoring and
  testing. -- KentBeck

『リファクタリングとテスティングを繰り返さないとダメでしょ』という身も
フタもない結論 (笑)。

さらにページの中ほどにもK.Beck氏は書いてて:

  You can do the same thing with a design. You have some test
  cases. Erase (by inlining, for example) everything you can without
  violating the following rules:

    * Say everything once - you can't erase the last expression of
      some interesting or useful thought

    * Say everything only once - you can't have duplicated code

  What you have left is the minimal design. Are there other rules?
  --KentBeck

要はonce and only onceだと。でも自分は``once and only once''という1つ
の熟語として覚えていたんで、まさかonceとonly onceが別物だったとは考え
てもいなかったことです。

K.Beck氏の英語は、いわゆる技術英語じゃなくって難しいことが多いんですけ
ど、これも例外じゃなくって悩みます。

第一のルールは『あらゆるものは一度は現れる』といったことでしょうか。
『何らかの有益/有用な考えを表すものは消せない』といった感じ? ``last''
が重要な意味を持つと思うんですけど、それがどんな意味なのかよく分かりま
せん。最後の表現? ナニそれ?

第二のルールは『あらゆるものは一度だけ』。コードの重複は許されないとい
うヤツで、once and only onceっていうと自分はコレのことだと思ってました。
だから自分はonce and only onceはDRYと同じだと思ってました。

でも、ちょっと違うみたいですね。第一のルールがあるから。第一のルールが
いわんとしているのは、『一回しか現れなくっても、それが価値あるものなら
許そう』っていうことですかね。この第一のルールがないと、長いメソッドか
らextract methodするのはナゼ?ということになりかねません。重複してもい
ないのにメソッドを切り出すのはナゼ?という疑問への答えですね。

--

``last''ってのはやっぱ『残ったもの』っていう意味なんだろうな。いらない
ものを消してって残ったもの。

``once''はニュアンス的には、『必要なものは必ず一回は現れる』ということ
なんじゃないか? 必要なものが一回も現れなかったらシステムとして不完全っ
てことになるから。

だから、``once and only once''は、逆をいえば、不必要なものは存在しない
というニュアンスも含んでいるんじゃないか? 必要なものは一回は現れる。
不必要なものは消す。なおかつ、必要なものもその一回しか現れない。

そんなわけで、DRYよりは含む意味が多そうだ。

--

オレもほんとつまらんこと書くなっつーの。

本家Permlink


2005年10月24日

ぐえ。Rubyにもアノーテーション入るのか。

Traitsについて:

http://sumim.no-ip.com:8080/wiki/818

--

ん〜、多重下請け構造は自然と崩れていくと思うんですよね。ノーテンキすぎ
ますかね?

結局、下請けだとスピードが出ませんから。

まぁ、スピードが要求されない仕事っていうのもこれからもなくならないでしょ
うけど。たとえば公共事業みたいなノンビリしたのもなくならないでしょうけ
ど。それに、そうした公共事業こそが多重下請け構造の発生源なんですけど。

だから、やっぱり官に頼ってるようじゃダメね。ノンビリしたとこには市場か
ら圧力がかかると思いますよ。

それと、下請けがなくなるってことは、今の一次請けも技術者を抱えないとい
けなくなるってこと。今も抱えてはいるんだろうけど、現場にはいないんじゃ
ないの? ま、研究は研究で大事だけど、現場の、いわゆるプロパーと呼ばれ
てる人たちって技術者じゃないよね。管理者ばっかりで。

ま、下請け構造崩すためにagile、agile騒がないとね。あんまり楽観視してる
と日本が沈没しちゃうから。

--

http://kmuto.jp/d/index.cgi/computer/20051023.htm

  特許にされてそうだなぁと思ったんだけど、やっぱりはてなが出願して特許
  公開されてますな。2005−202895。つかこの詳細の請求項すごい
  な。どうやっても引っかかりそうで素人にはなす術がない。やめた。

--

スターバックス、もうみんな飽きちゃったのね。

--

いや、メールは基幹では? だって、メールなければ論文送れないじゃないで
すか? (笑)

--

30cmゆーたら丸坊主ですやん?

本家Permlink


2005年10月23日1

ブホッ! 百円? 単勝百円だったの?

しかし、JRAの実況は聞きにくい声だな。

本家Permlink


2005年10月23日

そうそう、akrさんの資料にもあったけどさ、Test::Unitはさ:

require 'test/unit'

class TestFoo < Test::Unit::TestCase
  def test_foo
    flunk('out!')
  end
end

って書いて:

$ ruby test.rb

ってやればテストが走るわけじゃん。TestSuite.add(TestFoo)とか書かなくて
済むわけじゃん。

これって動的言語ならではだし、静的言語だとアノーテンキなんていうのでや
んなきゃいけないわけじゃん? ダッセー、チョーダッセー。

いや、それがいいたいことじゃなくってさ、Railsもやろうとしてることは変
わんないんじゃないの?ってこと。easy-to-useでしょ? Pythonとかじゃ
easy-to-useは絶対じゃないのかもしんないけど、Rubyじゃゼッタイなの。
それがRubyの思想というか哲学というか文化なわけ。

でもさ、easy-to-useはRubyに限らず、これからのLLのキーになってくと思う
んだよね、自分は。これまではeasy-to-useっていうとエンド・ユーザしか対
象としてなかったんだけど、それをプログラマも対象にしましょうってことだ
し、それは悪くないんじゃないの? easy-to-use UIとeasy-to-use APIは根っ
こはおんなじだしさ。まつもとさんは『言語はUIだ』って何べんもいってんじゃ
ん。

大げさにいえば、easy-to-useの思想はHLからLLへと移る民族大移動のきっか
けになると思うんだわ。

PHPだってそうだし、もっといえばVBだってそうだった。でも、そいつらは、
いってみればエンドユーザが対象だったわけで、プログラマは対象としてなかっ
たわけじゃん、ぶっちゃけいって。言語自体の幅をわざと狭めて、初級〜中級
しか集めようとしなかったわけじゃん。

でも、これからはそれが変わる。あらゆる言語がeasy-to-useを意識せざるを
得なくなる。

--

観察重要。

本家Permlink


2005年10月22日1

勢いだけで書いちゃったけど:

posixconf

自分でも使う機会はなさそう (笑)。

それにしてもPOSIX周りのことはよく分からないですね。POSIXの資料はWebじゃ
公開されてませんし。代替はSingle UNIX Specificationってことになるんで
しょうけど:

http://www.opengroup.org/platform/single_unix_specification/

上のは表玄関で、左にあるメニューのオンライン・ストアをクリックすると:

http://www.opengroup.org/bookstore/catalog/un.htm

にドキュメントが並んでいます。無料なんですけど、個人情報の登録を要求さ
れます。

www.unix.orgのほうにも入口はあるけど結局同じ。

まぁ、規格書読んだからっていって理解できるもんじゃないんですけど。


本家Permlink


2005年10月22日

会長! ruby.netが売りに出されております!

--

やっぱり定義を実行で決めるっていうのは強力なんですね。これのせいでクラ
スとインスタンスの境界が曖昧になります。

まだ公開してないんですけど、今自分が書いてたコードの一部です:

class PosixParam
  @@classes = []

  def self.instance(param_name)
    return choice_class(param_name).new(param_name)
  end

  def self.choice_class(param_name)
    return @@classes.find{|ech| ech.param_regexp =~ param_name}
  end

  def self.add_class(klass)
    @@classes << klass
  end

  # ...
end

class SysconfParam < PosixParam
  def self.param_regexp
    return /^_SC/
  end

  # ...

  PosixParam.add_class(self)
end

SysconfParamの定義の最後でPosixParam.add_classを呼んでいますよね。これ、
最初は:

class PosixParam
  MODULE_NAME = 'mPosixConf'

  def self.instance(param_name)
    return choice_class(param_name).new(param_name)
  end

  def self.choice_class(param_name)
    case param_name
    when /^_SC/
      return SysconfParam
    when /^_PC/
      return PathconfParam
    when /^_CS/
      return ConfstrParam
    else
      raise 'unknown type: ' + param_name
    end
  end

  # ...
end

ってやってたんです。でも、これだと、PathconfParamとかConfstrParamとか
を追加してくたびに、PosixParam#choice_classをいじらなきゃいけない。そ
れがイヤだと感じたんですね。PathconfParamとかConfstrParamとかを追加す
るんなら、そいつだけを書けばいいようにしたい。PosixParamじゃなくってね。

クラス定義が実行のコンテキストで行われるからPosixParam.add_class(self)っ
ていうのをSysconfParamの定義時に呼べるわけですよね。クラスとインスタン
スの境界があやふやになってます。

いわゆる生成に関するパターンなわけですけど、そういう狭い話じゃなくって、
やっぱり動的ウンヌンの話だと思うんですよ。静的な言語じゃどうやっていい
かちょっと分かりませんから。何か設定ファイル使うのもイヤじゃないですか。

もちろん、解は1つじゃないですし、設計が違えばこういう解にはならないの
かもしれませんけどね。

あ、今気づいたけど、こんなのClass#inherited使えば、add_classなんて呼ぶ
必要ないのか。なぁんだ。まぁ、でも、いいか。

本家Permlink


2005年10月21日1

すみません。勉強不足でした。

本家Permlink


2005年10月21日

http://headrush.typepad.com/creating_passionate_users/2005/10/the_best_thing_.html

学習を助けるにはどうすればいいかという話。『教える』話じゃないところが
ミソ。

--

easy-to-use APIの話。だから:

2005.10.21.friday?

みたいなAPIじゃないとダメなんだなぁ。まぁ、今までのプログラミングの慣
習を無視するから、そんなに賛同は得られないだろうけど。でも、これを実現
できるような言語にしてかないと。

たとえば:

Number.extend(Time) do
  2005.10.21.friday?
end

みたいな?

まぁ、今でも、

Year(2005).Month(10).Day(21).friday?

くらいは可能か。

--

http://c2.com/cgi/wiki?TeachingSimpleVsComplexSolutions

何か大事なことが書かれているような気がするんだけど、今は気力が落ちてて
英語が読めん。代わりに読んどいて。

--

深キョンが! イケメンと!

これ電車の吊り広告で見落としてたな。

--

いや、その『陰口をいう人たち』を変えないと組織が変わっていかなかったり
するわけですよ。だから、『価値観の違い』で片づけるのは思考停止に近い。
結局、組織が変わっていくには異なる価値観をすり合わせてかないとダメなん
ですから。自分もこの『すり合わせること』を積極的にやってなかったので反
省しているところです。

--

ピキーン来た。

Note.c.d.e.f.g(2)  # ドレミファソ〜

ストトン表記のパクリかよ (笑)。でも、これがRubyのinner DSLでできるわけよ。

--

http://www.joelonsoftware.com/articles/fog0000000018.html

ぶっちゃけ、『アナリシスパターン』は自分にはArchitecture Astronautの作
品だったんですよね。まぁ、あれでもまだまだ酸素は濃いほうだったんでしょ
うけど。

やっぱり自分は抽象より具体なんですよね。抽象化よりもメタファーや例示の
ほうが分かりやすい。パターンだけ先に示されてもピンと来ない。それが実際
に使われてるとこを見たりしないと。

--

ほんとにがっかりだな。昨日紹介した中島常幸のインタビュー、はてなブック
マークに全然載ってない。

--

アスクルはアサマシをやるべきだ!

本家Permlink


2005年10月20日2

darcs おせー。

本家Permlink


2005年10月20日1

infoってエントリがないとman開くのな。

$ info fork

--

最近、『やさしくしないで!』(松山花子) が面白くってさぁ。

前からそれなり面白かったんだけど、最近になってキレが出てきた感じ?

前はやさしさが裏目に出て『ひどい!』っていわれるようなパターンが多かっ
たように思うんだけど。ここ最近、ブラックなほうに裏目に出るっていうか、
救いようのないほうに裏目に出るっていうか。

今月号の『まんがくらぶオリジナル』でいえば、最初のヤツとか次の『化粧』
とかが以前よくあったパターン。最近面白くなったっていうのは『賛辞』とか
『メガネチェーン』とか。『相手の気持ち』も面白い。

一方、残念なのは『ハルコビヨリ!』が最近つまんなくなってきたこと。面白
いのもあるんだけど、全体的には平凡な4コマになっちゃってる。

あと、みずしな孝之が好調だよね。『けものとチャット』と劇団のヤツ (名前
忘れた (笑))。オデンのやつ (これも名前忘れた (笑)) のときはもうダメか
と思ってたけど。

--

勘違いしてほしくないのは、『素早い == 低品質』ではないということ。その
2つをどう両立させていくかがagileの取り組んでいる課題の1つでもある。

素早く行動することと高品質を維持することとの両立は、スポーツの世界では
ごく当たり前に行われている。いや、それがあらゆるスポーツの目標の1つと
もいえる。

スポーツの場合、実戦 (試合) とトレーニングとがきっちり分かれていて、な
おかつトレーニングの時間が多いという特殊な事情がある。一方、我々の場合、
実戦とトレーニングの区別が曖昧で、極端な場合、トレーニングにまったく時
間を割かないことすらある。

『きちんとトレーニングしているからこそ、実戦で何も考えずに身体が動く』
というのはスポーツでよく聞く話ではある。では、トレーニングのためだけに
時間を割けない我々はどうすべきか。実戦の中でも常にトレーニングを意識す
るしかない。

ここで『トレーニングとは何か』という問題になる。agileの目標の1つが『素
早く、かつ高品質に』ということであれば、まず作業のリズムを少しでも早く
していこうとする努力がトレーニングの1つとなろう。そして、品質を高める
ための努力もトレーニングとなろう。そう、プロセスを良くする努力こそが我々
のトレーニングなのだ。

プロセスを良くしていくためには考えなければならない。しかし、考えるため
だけに多くの時間は割けない。なぜなら素早さを失なってしまうからだ。それ
は『素早く、かつ高品質に』という目標から外れている。考えることさえも素
早さが要求されるのだ。走りながら考えなければならないのだ。

agileは走り続ける勇気を試される。その道のりは過酷ではあるが楽しくもあ
る。一旦走り出し、その疾走感を味わってしまうと、立ち止まっているのが退
屈に感じられるものだ。

さぁ、重い荷物を捨てて、走り出そう。

本家Permlink


2005年10月20日

『見える化』じゃなくって『見えてる化』を目指す。

見えてる化、メーテル化、メーテライズ。

--

そういえば昨日はスルーしちゃいましたけど、OpenBSD、10周年でしたね。大
抵の成功したオープン・ソースはそうなんですけど、Theoもよくもまぁ、それ
だけ長い間1つのものに手をかけていますよね。自分なんか飽きっぽいからダ
メですね。自分の古いコードには見向きもしませんからね。まぁ、実際は他の
ものにもいろいろ手を出してるんでしょうけど。

--

AppleのノートPC、最近よくぶっ壊れたって話を聞くけど。

それがAppleクオリティってヤツ? ケッケッケ。

--

|# ... #| ってカッコワル!

--

http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Gauche%3a%a5%e1%a5%e2%a5%ea%a5%ea%a1%bc%a5%af

そういえば、w3m界隈で『Boehm GCは回収しねぇ!』っていう評判が上がって
るって噂、ほんとなんですかね? 事実上、GCライブラリってBoehm GCしかな
いんで、それがダメダメだといろいろと影響がデカいように思うんですけど。

ついでに:

http://c2.com/cgi/wiki?GarbageCollection

--

いや、だから言語だけで生産性云々してもしょうがないでしょう。JavaかRuby
かなんてドメインによっても変わる話でしょうし。

人員確保ということであれば、確かにJavaは有利でしょう。でも、クズ集めたっ
てしょうがないわけですし。S/N比でいえばRubyのほうが高いわけでしょ?
Javaには豊富なライブラリもあるし、今現在デファクトのOOPLといっていい強
みはありますけどね。ただ、標準に近ければ近いほど競争相手も増えるという
ワナもあります。

だから、自分からいわせれば、言語による生産性の違いなんてのは、コードの
行数と同程度に無視できる誤差なんですよ。どういう開発プロセスを選ぶかが
一番大事であって、それにJavaが合うのか、それともRubyが合うのか、そうい
う話じゃないとおかしいでしょ? いっつもいってるように、部分だけで語っ
てもしょうがない。

--

オレがPHP嫌いなのは生産性とかそんなマヤカシな基準じゃなくって、もっと
感情的なもんなんだよ。この感情は生産性とかよりもずっと具体的なもので、
それだけでPHPを選ばない理由には十分なり得るものなんだよ。

技術を好き嫌いで語って何が悪い。どうせオレはその程度の技術者さ。

--

http://radar.oreilly.com/archives/2005/10/new_source_licenses_from_micro.html

  Based on a quick read, the non-limited versions of these licenses
  look like they might well be able to meet with OSI approval as open
  source licenses.

マジ?

--

http://www.sharp.co.jp/ws/function/spec.html

マジ? Zaurusしぼんぬ?

--

http://news19.2ch.net/test/read.cgi/newsplus/1129774138/7

あははは。2行目。リトル・・・

--

ほら、見ろ、トミーもいってる:

http://nikkei.hi-ho.ne.jp/sports/nakajima/index.html

  プレイ中、最も理想的な状態というのは、ギャラリーの声も聴こえる、周囲
  の様子もよく見えている、だけど何ひとつ邪魔にならず、自分がやるべきこ
  とに集中できる・・・そういう状態です。

トミーゆうてもヘブライちゃうど。その耳栓外せってんだよ。音楽聞いてんだ
かなんだか知らねぇけど。

  どんなスポーツ選手もイメージトレーニングを行って試合に臨むと思います
  が、実戦ではイメージとは掛け離れたことが起こります。そのときに、その
  状況に合わせられる人は強い。

ほれみろ。準備も大事だけど、現実に適応することが強さだっていってるじゃ
んか。

  うーん、過去の成功体験にすがりたがるのは人情だと思いますが、その時々
  に得たつもりの「真髄」や「方程式」というのは、あとになったら通用しな
  いことが多いんですよ。時は移り変わりますし、周囲も環境も自分自身も、
  決して同じところに留まっていてはくれませんから。ですから「そんなもの
  (真髄や方程式) はない」と知ることのほうが、もっと大事なような気がし
  ます。

そう、JavaもRubyも絶対ではない。ましや方程式でもない。あるのはembrace
changeという覚悟だけ。道具よりもスウィングのほうが大事だし、スウィング
よりもコース・マネージメントのほうが大事なのは当たり前。

インタビューの最後、新幹線に映る顔の話、いい話です。

--

弘法筆を選ばず的なことをいいたいわけじゃない。物事の順序をいってる。道
具選びも大事だ。当然、道具が発達すれば、コース・マネージメントにも影響
が出るし、両者の関係をあんまり分けて考えるのは危険だというのはいわずも
がな。

本家Permlink


2005年10月19日2

darcs、なかなかラクチン。ラクチンというか、気軽さでいえばmonotone以上
で、RCSが分散化された感じ。

ただ、気軽さは、裏を返せば、素朴ということでもある。scpを露骨に使った
りとか。ssh-agentなしでは同期は事実上ムリ。

Emacsインタフェースついては:

http://darcs.net/DarcsWiki/CategoryEmacs?highlight=%28emacs%29

にまとめられている。Emacs VCのバインディングがあるのはちょっとうれしい。

でも、本命はdarcsumなのかな? VCというのが近代的なSCMにそぐわないよう
になってる。VCはバッファ単位でコミットするRCSとかには便利なんだけど、
複数のファイルの変更を1つにまとめて扱うのが最近のSCMの傾向だし。VCにも 
C-x v dっていうのはあるけどね。

ただ、このdarcsumがさっき書いたread-directory-name使ってる。ところで、
さっきは『woodyの弊害〜』なんて書いたけど、sidも事情は同じだった。だか
ら、sidだろうがdarcsumは使えない。どうなってんの?

darcsの話に戻すと、sidとsargeでのバージョンの違いは、今のところ問題に
ならないみたい。

それから、いわれてるように確かに遅い。ローカルはそうでもないけど、同期
が。ま、自分の接続状態が悪いっていうのもあるんだろうけど。

遅さに関してはdarcs-gitを使えば解決するのかも? svkがSubversionの上に
あるように、darcs-gitはgitの上にあるdarcsらしい。darcs-gitは今は
darcs-unstableに取り込まれてるみたい。

darcsに関してはそんなとこ。しばらく使ってみる。

--

あー、やっぱCMSは分散じゃないとダメだわ。考えてみれば当たり前のことな
んだ。

集中型だと中途半端なコミットというものができない。当たり前だ。そんなこ
とをやったらビルドで失敗しちまう。

けど、ビルドできようができまいが、個人 (あるいはペア) の都合でコミット
したいということもある。なぜなら、足場を確保しておきたいから。足場を確
保して好き勝手やって、あとでrevertして戻れるようにしておきたい。

自分の場合、そんなときはRCSを使ってた。チーム全体ではCVSを使ってたんだ
けど、個人的な実験をやるときはRCSで足場を確保してた。だから、作業ディ
レクトリにはCVSディレクトリとRCSディレクトリが同時置かれてることになる。
Emacs VCはRCSを優先するから、これで問題はなかった。

けれども、やっぱCVSとRCSの併用は面倒だし、問題も多い。だったら、最初っ
から分散SCMを使えばいい。考えてみれば当たり前のことだ。

チームとペアとじゃリズムが違う。2つを比べればチームのほうがゆったりし
たリズムだ。集中型だと、そのゆったりしたほうのリズムに合わせなきゃいけ
ない。それじゃぁ忙しいほうのペアはたまったもんじゃない。忙しいのにCMS 
の助けが得られないんだから。

本家Permlink


2005年10月19日1

http://d.hatena.ne.jp/hyoshiok/20051018

47歳デビューの吉岡さんの日記。

アンテナに登録しようとして、すでに337人も登録している人がいることを知
ってビビる。

--

本文とは関係ない写真にプギャった。

--

む。YARVでbitblt?! 期待していいの? RubyネイティブなGUIフレームワー
ク期待しちゃっていいの?

--

http://www.toolshed.com/andy.html

Andyの顔は初めて見た気がする。

--

http://www.ebcvg.com/press.php?id=1761

こっちで炎上しとるな。

http://www.theserverside.com/news/thread.tss?thread_id=37121

--

クソッタレが。そのうちIBMにカネ出させてぇよな。

--

『なるべく早く』と答えさせるような質問をしちゃダメだ。つまり:

  いつまでに書類をお送りすればよろしいでしょうか?

ではダメ。

  来週月曜に書類をお送りすればよろしいでしょうか?

とたずねないとダメだ。この『来週月曜』というのはテケトーでいい。自分の
勝手な見積もりでいい。具体的な手がかりがないから『なるはや』とか話を進
めようのないワケわからん答えが返ってくるんだ。『来週月曜』という具体的
な手がかりがあれば、そこから『もうちょっと早くできないか』とか、『今週
中に』とか、話が進む。

もちろん、マナーとして『いつまでに〜』とたずねることはアリかもしれんが、
自分はそんな儀礼は求めていない。

--

sargeのemacs21-el.debってムチャクチャ古いのな。ってことは、emacs21自体
もムチャクチャ古いってことか。

とあるelが動かない原因を調べてみると、read-file-nameっていう関数が定義
されていないせいだと分かった。最初はXEmacs専用なのかと思ったけど、どう
も違うようだ (XEmacsだとminibuf.elに定義されてる)。

GNU Emacsの最新のinfoなんかを調べてみるとfiles.elに定義されてあると分
かった。もちろんfiles.elは標準ライブラリで、sargeのemacs21にも含まれて
いる。でも、問題のread-directory-nameは定義されていない。

このread-directory-nameをsavannahで調べてみると、2002年の5月に追加され
たことが分かった。

今何年? 2005年だ。何月? 10月だ。ってことは、まるまる3年以上古いEmacs 
を使わされてるわけだ。ちょっとひどいな。woodyが難産した弊害がここにも、
か。

--

え? 期待しちゃダメなのぉ。がくっ。

--

http://www.itmedia.co.jp/enterprise/articles/0510/19/news006.html

  同氏はまた、後にExtreme Programming(XP)として確立された人気ソフト
  開発メソドロジーの共同開発者でもある。これは、開発プロセスの迅速化・
  簡素化を目指すアプローチ。

『人気』はどこにかかるんだ? 『人気ソフト・開発メソ〜』なのか、『人気・
ソフト開発メソ〜』なのか。

まぁ、ITmediaでこのニュースが取り上げられるとは思ってもみなかったわけ
で。

本家Permlink


2005年10月19日

自分は今大部屋にいて、左右はもちろん、対面にも人が座っています。今自分
の目の前がどうなっているかというと、手前にキーボードがあって、その向こ
うに液晶モニタがあります。で、そのさらに向こうがちょっとした棚になって
て、その上に書類が立て並べてあります。ちなみに、この書類は自分が管理し
ているものではありません。

上から見た図:

=|||====  ← 棚と書類
  ====    ← 液晶モニタ
   ==     ← キーボード

自分目線で見た図:

||||||||| ← 書類
||||+------+
----|モニタ|----
    +------+ (モニタの後ろの棚)
      ====   ← キーボード
================

日本ではそう珍しい光景ではないでしょう。でも、このファシリティ、キュー
ビクルの次くらいに悪い。つまりほぼ最悪。

自分の右左は様子を知ることができますが、対面の動きが書類に遮られて知る
ことができません。

そういえば、前いた作業場所では島を本棚で分けていました。今思えば、あれ
も良くなかったですね。

実際、書類や本の置き場には困るとは思いますが、それがコミュニケーション
の妨げになるなら何であれ排除しないといけません。

仕事場に大量の本を持ち込む人は、この業界では珍しくありません。けれども、
自分はやりません。travel light。それに、やっぱり本というのは置き場に困
ります。まさか本がコミュニケーションの障害になるとは誰も思っていないで
しょうけど、上のように実際にそういうこともあります。

--

http://www.tokyo-np.co.jp/00/detail/20051019/fls_____detail__002.shtml

む〜ん。あんまり神経質になられてもなぁ。いや、あれは明らかにパクッてた
けど。

ただ、ストーリー全体がどうなのかとか、そういうことはあの『検証画像』じゃ
わからないからなぁ。上の記事には『構図盗用』ってあるけど、それってストー
リー全体としては末次の創作物として認められるってことだろうし。

いや、だから、あれは明らかにパクッてたけど。だから、音楽にしたって裁判
になったら『何小節同じだから』とか、そういう基準になっちゃうでしょ?
それってなかなか難しいじゃん。

まぁ、でも、なぁ。もうちょっと作る側のことも分かってほしいよなぁ。模倣
と創作の差なんて紙一重だろ。大目に見ろとはいわないけど、過激に反応しす
ぎなんだよなぁ。

自分の愛読する『ケロロ軍曹』、『うる星やつら』とかのモチーフがよく出る
じゃん? あれはいいわけ? ケロロの人、高橋センセに筋通してるとも思えな
いけど? でも、構図のパクリはダメなんだ。その判断基準は何? 構図よりも
ストーリー性をパクった (パロった) ケロロのほうが罪は重くないのか?

まぁ、作るほうももっと腕を上げろってことか。

--

ぐえ。スラド。WardがMS辞めてEclipseに一枚噛むだって。

--

というか問題視したいのは近くにロッテリアが1つもないこと。

--

http://www.atmarkit.co.jp/fdotnet/nagile/nagile01/nagile01_01.html

GJ。

やっぱりXP (例によって自分はXPしか知りませんから、あえてXPと書きます) 
の取っかかりは*Unitであることが多いと思うんですよね。そこでXPのリズム
というものを知る。そこで結果がすぐ見えることの大切を知る。そして、そこ
が自働化の始まりであり、チームを変えていく出発点であることを知るわけで
す。

--

ドラスティックな改善を求める人は、『カイゼン』を怠りがちだ。

--

http://home.att.ne.jp/sigma/satoh/diary.html

2005年10月18日の項。これは『クソッタレ!』の婉曲な表現ですか? (笑)

でも、自分の巡回先 (失念してしまいました) で、佐藤さんの話を聞いて『は
じめてエージェント技術が役に立つものと思えた』と書いてる人もいましたよ。

つか、講演やるなら日記で予定書いてください。

--

http://d.hatena.ne.jp/hyoshiok/20051018

47歳デビューの吉岡さんの日記。アンテナへ。

--

しかし、そんなに『ここだけの話』って面白いのか?

本家Permlink


2005年10月18日1

svkのスライド見ました。グラッと来ましたね。

ただ、個人的には『あるものは何でも使う』っていうのがいいことかどうかの
判断ができないでいます。

『あるものは何でも使う』っていうのは一般にはいいことのようにいわれてま
すけど、裏返せば、それだけコントロールの外にあるものに依存しちゃうって
ことで。そういうのは基盤のツールになればなるほど恐い。

試しにsidのdselectでsvkを選択してみると、数えるのがイヤになるほど他の
パッケージに依存してます。ちょっとヒきます。

とはいえ、そういう面倒な依存関係を解決するために*.debシステムがあると
もいえるわけで。実際にはそういう依存関係が問題になることはないだろうと
は推し量れます。

ま、とりあえずdarcs入れてみますわ。遅いっていうならイヤでも使わなくな
るでしょうし。そしたらsvkに移ると。

ああ、これは、自分がSubversionを使ってないから出せる結論でしょうね。
Subversion使ってたら一も二もなく飛びついてたかもしれません。

--

そうなんだなぁ。ようやくテクノロジーにも、作り出す側の論点と、それを利
用する側の論点とが対峙できる時代になったんだなぁ。

これまでは作り出す側の論点ばっかりで、それって結局は囲い込みにしかなら
なかったんだ。でも、今は利用する側も主張できる。選択できる。

技術的には最善でなくても広まってしまうテクノロジーの現象っていうのは今
までにもあった。これからはそれがより頻繁に起きるんじゃなかろうか。結局、
ウケるテクノロジーじゃないとテクノロジーとは呼べないんだ。ウケないテク
ノロジーはただの技術に過ぎない。いや、逆に、最善の技術がウケるテクノロ
ジーになる可能性のほうが高くなってるのかもしれない。

次世代DVDの争いとか、ちゃんちゃらおかしい。利用する側の論点がまったく
欠けているんだから。ようやく最近、『やりすぎの著作権保護は良くない』な
んていい出してるみたいだけど。

なんでこんなことを書いたかというと、河を渡らなくても、テクノロジーにつ
いて語ることのできる土俵ができたんだなぁと思ったから。作り出す側と、そ
れを利用する側との間に流れる河。土俵というのはブログとかそういうことじゃ
なくって、人の心の中の空間のこと。

アルファ・ブロガと呼ばれる人は、この河を渡る人が多い。でも、ビジョナリ
(visionary) と呼ばれる人は、この河を渡ることはない。

便宜上、作り出す側を『あっち側』、利用する側を『こっち側』としよう。で、
この河を挟んだ対峙というのは奇妙な関係で、あっちからはこっちのことがよ
く見える。でも、こっちからあっちはよく見えない。あっちからこっちはよく
見えるんだけど、こっちの動きはすっごく気紛れで、作ったものを渡してもポ
イ捨てされることが圧倒的に多い。

で、visionaryというのは、こっちにいるんだけどあっちもよく見える人で、
なおかつ、こっちの気紛れな動きもある程度は読める。で、あっちとこっちを
合わせた全体的な動きをある程度読んで、それを言葉にする。そうすると、そ
の言葉にあっちもこっちも引きずられる。

いってみれば、visionaryは観客の代表。

今までにも観客みたいな人はいたんだけど、正確には観客と呼べるものじゃな
かった。enthusiast。それは、極端にいっちゃえば、作る側の手先。本人が意
識してるかどうかは別にしてね。

河を渡ることでしか語ることのできないこともある。でも、河を渡ってしまう
と語ることができなくなることもたくさんある。

visionaryが出てきたことが観客の成熟を物語っている。あっち側とこっち側
の力のバランスが取れているときこそ時代が面白くなる。だから今が面白い。

--

オレ? オレは今溺れてる最中。。。・゜゜゜(←泡)

本家Permlink


2005年10月18日

http://www.tokyo-np.co.jp/00/spo/20051018/mng_____spo_____002.shtml

1敗したとき『3タテするしかなかったんじゃねぇの?』と思って、2連敗して
『ほ〜ら』と思ってたんだけど、よくまぁ勝ったもんだ。
 
--

http://www.tokyo-np.co.jp/00/sya/20051018/mng_____sya_____009.shtml

川崎、そしてネットカフェ。どこかで聞いたシチュエーションだ。

--

http://sourceforge.jp/projects/inamode6/

ふへ。SourceForgeか。

--

書かない勇気。

--

え? 和也死んじゃうの? マジ?

--

好き放題書いていいなら沖縄とか書くぞ。行かないけど。

--

おい、みんな、今日はオレのライフ・ハックの話を聞いてくれるか。

ウンコするとき、ズボン降ろすよな。その前にベルトを外すわけだ。

そのベルト、オレのはちょっと長いんだ。ズボンを降ろすと、その長いベルト
が床についちまうんだ。便所の床に。

それがちょっとした悩みだった。

でも、今はその悩みが解決されたのさ。オレのハックでね。

ズボンを降ろす前、ベルトを外すだろ。そうしたら、そのベルトの先をポケッ
トに入れちまうんだ。そしてズボンを降ろす。あ〜ら不思議、ベルトが床につ
かなくなるって寸法さ。

これがオレのちょっとしたライフ・ハックってやつさ。

Happy hack! And Happy shit!

--

svkはノーケア。オススメですか?

--

書かない勇気 その2

--

そうそう、ease-to-use APIなんですけど、英語圏の人は『英語のように読み
下せる』ことを重視しますよね。日本人はそうでもないんですけど。

--

akrさんのPDF、del.icio.usもはてなブックマークも淋しぎるくらいマークさ
れとらんな。世の中めくらばっかりや!

--

http://itpro.nikkeibp.co.jp/article/OPINION/20051017/222923/

『今さらニッケーがそういうこという!』って思いっきりケリ入れたくなった。
マジで。てめぇらが今こうなってる状況へと仕向けたんだろうが! 少なくと
も片棒は担いだんだろが!

--

[ruby-list:41324]、期待アゲ。

--

上の人にいいたんだけどさ。それってハックじゃなくってバッドノウハウじゃ
ん。ベルトが長いんだったら切りゃいいじゃん。え? 切れないベルトだって?
じゃあ、適当な長さのベルト買いなよ。それが富豪のソリューションってもん
だろ。クラーク先生も『十分に発達したハックは資源のムダづかいと区別でき
ない』っていってるぜ。

--

FirefoxでURLが表示されなくなるという怪現象。

--

Yendotのリンクをコピペして獲物に貼って取り込もうとしたとき、Yendotから
のリンク先がhttpsだと起きる現象。つまり:

http://ukai.org/mu/go...

から

https://members.fsij.org/...

にリダイレクトするとエラー。

/usr/lib/ruby/1.8/open-uri.rb:177:in `open_loop': redirection forbidden: http://ukai.org/mu/go?url=https://members.fsij.org/trac/summerdojo2005/wiki/FinalReport -> https://members.fsij.org/trac/summerdojo2005/wiki/FinalReport (RuntimeError)
        from /usr/lib/ruby/1.8/open-uri.rb:135:in `open_uri'
        from /usr/lib/ruby/1.8/open-uri.rb:526:in `open'
        from /usr/lib/ruby/1.8/open-uri.rb:86:in `open'
        from bakanoemono.rb:78:in `read_title'
        from bakanoemono.rb:73:in `extract_title'
        from bakanoemono.rb:57:in `add_new_emono'
        from bakanoemono.rb:30:in `main'
        from bakanoemono.rb:242

httpsのリンク先を直接取り込むことはできます。

何が起きてるんでしょうか?

--

ああ、それと、今度はease-to-use APIをease-to-use UIにつなげていく話が
読みたいです。ムリですか。産総研には増井さんもいることですし。

本家Permlink


2005年10月17日1

むぅ。メソッドごとに名前空間を指定するのは粒度が細かすぎて面倒な気が。
いや、だからselector namespaceっていうんでしょうけど。1つのオブジェク
トが複数の名前空間にバラまかれたメソッドを持つっていうのは、やっぱおか
しいんじゃないですかね。何か自分が勘違いしてるのかな。

--

ダメだ!

monotone syncできねぇ!

以上!

ではあんまりなのでもうちょっと書く。

書くんだけど、書けることは少ない。

クライアントとサーバの両方で最初っからデータベース作り直してみたりもし
たんだけど。

最初のsyncはうまくいく。でも、サーバを一回止めるとおかしくなる?

serveの前にdb rebuildやるとうまくいくこともあったけど、うまくいったの
は一回だけ。

今回はクライアントのIPアドレスは全然変わってない。

サーバ止めるといかんのか? んなわきゃない。

多分載っけても大丈夫だろうから載っけときますか。まずサーバ側:

$ monotone --db=~/lostway.db serve lostway.org org.lostway.monoroot
monotone: beginning service on lostway.org : 5253

で、クライアント側:

$ monotone --db=~/lostway.db sync lostway.org org.lostway.monoroot

一回syncに成功しているから単に``monotone sync''でもいいはず。で、これ
を実行するとサーバ側にこんなメッセージが出る:

monotone: accepted new client connection from 218.41.164.58:10126
monotone: warning: denied 'fcd@fudou.lostway.org' read permission for
'org.lostway.monoroot' excluding '' because of branch
'org.lostway.monoroot'
monotone: warning: error: access to branch 'org.lostway.monoroot'
denied by server
monotone: fd 5 (peer 218.41.164.58:10126) write failed, disconnecting

このメッセージを読む限り、globがマッチしてないっていってるように読める
んだけど、おんなしや!ってツッコみたくなる。

パミッションで蹴られてるというのはないはず。だって何回かは成功してるし、
monotonercは変えてない。

サーバはsarge、クライアントはsidなんだけど、どっちも謹製の0.23の*.deb
が入れてある。

ん〜、今度は蹴られることはなくなったけど、syncしてもクライアント側の変
更がサーバに反映されない。そのときのコマンドは:

server$ monotone --db=~/lostway.db serve lostway.org org.lostway.
client$ monotone --db=~/lostway.db sync lostway.org org.lostway.

これは多分globがダメっぽい。でも、他ので通るglobといえば``org.''くらい
のもの。何より``org.lostway.monoroot''っていう、どう見たってマッチすの
がマッチしないんだからワケわからん。

パミッションに関してはチュートリアルにあったとおりの関数をほぼコピペし
たから、ブランチに関係なくアクセスできるはず。

--

ダメだ。やっぱあきらめた。ググッても手がかりないし、問題が起きてるのは
自分のとこだけっぽい。

monotoneはしばらくはケン (見)。見捨てるには惜しいからときどきはチェッ
クするかも。

かといってSubversionじゃなぁ。グローバル・サーバへの負担がが不安。この
サーバ、メモリ割り当ては64MBしかないし、頻繁にコミットするときはイライ
ラしそう。やっぱり分散のほうがいい。

DarcsかCodevilleか、はたまたgit系か。

Darcs。Emacsのインタフェースがある。

Codevilleにはないから、Codevilleは落選。

gitは今の状況がよく分からない。ちょっと手を出しにくい。

Darcsはsidにもsargeにもパッケージが用意されている。いるんだけど、やっ
ぱり微妙にバージョンが違う。依存ライブラリでそれほど珍しいものはない。
cURLライブラリくらいなもの。もちろん、コンパイルするにはGHCがいる。で
も、./configureで一発っぽい。とはいえ、とりあえずはパッケージで入れて
みるか。

--

そうなんだよな。今一番ハッタリの利く言語ってHaskellなんだよな。ハード
ディスクの肥やしにするにはもってこい。

  『うそ?! GHC入れてんの?!』

  『うん、Darcsビルドすんのにいってさぁ、へへ』

本家Permlink


2005年10月17日

軍曹といえばトンプソン、トミーガン。ガンプラじゃねぇんですよ。

--

うお。w3m、URLじゃない引数取るようになってる!

$ w3m www.google.com

前はこれ、ダメだったんですよね。

--

うほ。結城さんが入門書を! (既成事実化)

--

https://members.fsij.org/trac/codefestkyoto2005/wiki/oxy

T-Engineという言葉を見て驚く。

--

肝腎 → 肝心

--

http://itpro.nikkeibp.co.jp/free/NIP/NIPCOLUMN/20041125/153063/

『不可能を可能にする』ですか。そうそう奇跡は起きませんよね。

  当初計画の数倍の時間がかかり,会社の歴史に残る大きな赤字案件となった。
  (中略)
  経営層は「チャレンジ精神を発揮して無事カットオーバーできた」,「プロ
  ジェクト・マネジメントの貴重な経験を積めた」と“前向き”に評価した。

技術側と経営側とでこうした断絶がある限り、どうしようもありませんよね。

でも、経営側が下した判断はやっぱり間違いでしょう。だって、お客さんが迷
惑するんですから。最初っから断わったほうがお客さんの被害も少なくて済む
じゃないですか。

結局、できないことをできるといって引き受けるのは、お客さんをだますこと
になるんですよね。それで会社が儲かったならまだ理解できなくもないですけ
ど、赤出してちゃぁどこにも救いがない。

『次があるから』っていうんですよね、経営側は。まぁ、デカいとこならそう
した余裕ぶっこいてられるでしょうけど、それに付き合わされる下請けはたまっ
たもんじゃないですし、実際に倒れちゃいますよね。

あれ、これ一年前の記事でしたか。moleskinさんもよく知ってるなぁ。

--

ささださんはIRCの住人だからなぁ (笑)。

まぁ両方やってる人も多いだろうけど、自分はIRCは全然です。

--

だから、Nano-ITXとか小さめのPCでもDVI付けてくれよ。そうしたら買わんで
もないんだから。

--

あっれぇ。open-uri、https行けるのかぁ。libopenssl-ruby.deb入れてたんだ
けどなぁ。

--

http://cvs.m17n.org/~akr/pub/rubyconf2005-presen.pdf

Rubyに関係なく読んでほしい資料。design easy-to-use API。

こうしてakrさんが表舞台に立ったことをうれしく思います。

--

ああ、自分が書くようなことじゃないですけど、誤解してる人が多いみたいで。

akrさんはNet::HTTPを否定してるわけじゃないんですよ。Net:HTTPはプリミティ
ブで、それを何にでも常用するのはおかしいだろといってるわけです。実際、
open-uri.rbの中ではNet::HTTP使われてますし、open-uriじゃPOSTできないっ
てことも言及してますしね。

--

可換もクソも、ステージに向いてるか、それともステージに背を向けてるかの
違いで、音楽そのものが変わってるんじゃないんですから、気になったら試し
に後ろに振り返ってみれば? それで何か変わるようだったら左右入れ替える
と。

さらに、もともと音質にこだわらないというのであれば、片方のイヤホンをブ
チ切るとか?

--

だからパブリック・ドメインだっていってるじゃん。(C) 1905。著作権が切れ
てますよということ。さらに、もし切れていないとしても、故意に誤表記して
いるのだから裁判などで権利の主張はできませんよということ。

最初はシャレでいってたんだけど誰もやらないから自分でやり始めた。結局の
ところ、著作物に自動的に著作権が発生し、それを放棄できない日本ではこう
するしかパブリック・ドメインにする方法はない?

--

ああ、 自分もRubyのADTはアクセスできたほうがうれしいクチです。というか、
インタプリタならできて然るべきだとさえ思っています。互換性とかは全然無
視で構わないんで。

``^''が『ちょっとλに見える』ってのはいくらなんでも (笑)。

--

く。早速誘致合戦か。ま、フツーに考えたら東京でしょ。といいたいけど、そ
んな先のことは分かりません。

--

http://dev.ariel-networks.com/blog/index.php?itemid=671

パブリック・ドメインにするとキチガイ扱いですか。そんなもんですか。

--

http://tagoh.jp/b/notes/d

おっと、アンテナ一番乗り。

本家Permlink


2005年10月16日1

http://www.sra.co.jp/people/aoki/SuperAsciiJ/SAscii07.html

  同じオブジェクト指向を推進する仲間として、欧米の方々をうらやましく思
  うことがある。その方々の間では、すでにパラダイムシフトは起こってしまっ
  た。クーン流に表現すれば、もはや「オブジェクト指向」は「通常科学」に
  なってしまっている。

これが書かれたのは1990年代初頭。でも、そのとき本当に欧米でもパラダイム
シフトは起こっていたのでしょうか。

自分はXPをもって初めてパラダイムシフトが本格化したと考えています。

ちろん、パラダイムシフトというのは一気に起きるものではなく、徐々に移り
変わっていくものでしょう (歴史的には一気に起きたように思えても)。そし
て、XP以前のOOA/OODといったものは、XPによって起きた本格的なパラダイム
シフトへの序章に過ぎなかったと考えています。

パラダイムシフトというからには開発プロセスを大きく変えるものでなければ
ならないはずです。OOA/OODは、プロセスのごく一部を変えただけで、全体と
してのプロセスはそれほど変えることはありませんでした。分析/設計/実装
という、上流から下流へのプロセスというものは、古典的なプロセスと変わり
ません。OOA/OODは、古典的なプロセスの質を高めたに過ぎず、プロセスを大
きく変えるものではなかったのです。

青木氏も薄々そのことは気づいていたはずです。『オブジェクト指向の開発プ
ロセスは、スパイラルでもなく、ピンボールのようになる』と述べられたこと
があるくらいですから。

XPはオブジェクト指向とは直接的に関係ないというのが表面的な見解です。し
かし、リファクタリングや継続的な統合などは、OOPなしではほぼ不可能な実
践です。XPはOOPなしには生まれなかったでしょう。

そう、OOA/OODというものはテクニックに過ぎなかったのです。開発プロセス
そのもののように語られることが多かったのですが、実際にはプロセスのごく
一部でした。計画を立てから出荷するまで、あるいはチームの育成方法といっ
たことは視野には入ってなかったのですから。

XPの登場によってプロセス全体を視野に入れることの重要性が認識されるよう
になりました。これこそがパラダイムシフトです。チームとしての生産性をど
う上げていくか。いかに価値の高いソフトウェアを作るか。そういったことに
焦点を当てたとき、OOA/OODなどの話は枝葉になります。プロセスにおける価
値基準が変わるからこそパラダイムシフトといえるわけです。青木氏の言葉を
借りれば『コト』から『モノ』へ移ったということです。

--

もちろん、OOA/OODがどうでもよくなったというつもりはなく、より本質的な
問題に目を向けるようになったために相対的に価値が下がったといっているだ
けです。そういう意味ではリファクタリングすら枝葉の話です。

--

ちなみに:

http://www.sra.co.jp/people/aoki/SuperAsciiJ/SAscii02.html

は興味深いです。チーム活動のシナリオは、継続的な統合そのものです。『ラ
イブラリアンはチーム内で持ち回り』というのもXPを思い起こさせます。

--

ああ、ちょっとおかしいかな。構造化手法からOOA/OODへの移行よりも、構造
化手法からXPへの移行のほうがパラダイムシフトと呼ぶにふさわしいというこ
とをいいたかったわけです。

ここでいうXPは、正確にはXPに代表される手法、あるいはXPが引き起こした波
をかぶった/かぶる新しい手法といった意味です。それにはネオ重量級なんか
も含みます。

--

ぐえ。monotoneでsyncできなくなった。クライアント側のIPアドレス変わっちゃ
ダメなのか? それくらいしか思い当たることがない。

ブランチのglobがマッチしないみたいなこといわれるけど、コピペやっちゅー
ねん。'*'でもマッチしないしな。

分から〜ん。

本家Permlink


2005年10月16日

http://www.cca.org/vector/

Tektronixがオシロスコープとかの計測機器作ってる会社ってことは知ってま
したけど、端末も作ってたんですね。自分は古いUNIXのことは本でしか読んだ
ことがなくって、いわゆる『端末』というハードウェアがどういうものかよく
分かってないんですけど。

上にあるのはTektronixのvector graphics terminalを紹介したページです。
で見つけました。

--

Tektronixのことをもうちょっとググッてみたら:

http://fukumori.org/diary/Oct2003.html

今をときめく『やさぐれ日記』が。やっぱりかなり古くからTektronixは
Smalltalkに手を出していたんですね。今はどうか知りませんけど。

『なぜSmalltalkが広まらなかったか?』については、こないだ獲物で紹介し
ましたけど:

http://c2.com/cgi/wiki?WhyIsSmalltalkDead

でも考察されています。中にいた人が書いてるみたいですから真実味はありま
す。

でも、SqueakのおかげでSmalltalkが生き返ったのはうれしいことです。少な
くとも昔自分がSmalltalkに感じたワクワク感というものはSqueakにはありま
すから。

--

やさぐれ日記読んでて思ったんですけど、ほんとに日本はSmalltalk系の思想っ
ていうのが根づかなかったんですね。いや、福盛さんが、というわけじゃなくっ
て、UMLにまつわる話とかそういうのを読んでて。

Smalltalk系の思想を知らなかった人、つまりほとんどの人たちは、いきなり
XPが出てきた感じで『なんだなんだ?』って戸惑ってるんじゃないですかね。
XPはSmalltalk系の思想の延長線上にあるもので、それを知ってる人にとって
は意外なところは少ないでしょう。

たとえば、CRCカードにしても日本で話題になるなんてことは滅多になかった
し。Rebecca Wirfs-Brock氏を尊敬してるといってたまつもとさんなんて珍し
いほう。SRAの青木さんすら傍流ですからね。み〜んな3amigos系。OMT、ユー
スケース、UML、RUP、そんな流れ。まぁ、米国でも似たような事情なんでしょ
うけど、ちょっとね。

--

『近代麻雀』って、今は月2で出てるんですか。でも、『アカギ』は月1っぽい (笑)。

--

http://www.ltsp.org/

Linux Terminal Server Project。何がすごいってハードも売ってる:

http://www.disklessworkstations.com/

--

sidにはruby1.9が入ってたんですね。

X抜きならsidでもいいんですけどねぇ。今までの経験からいって、sidで立ち
上がらなくなったってのはないですから。Xがダメになることはあったんです
けど。

本家Permlink


2005年10月15日1

monotone、やっぱいいですね。簡単なのが何より。tla archはやっぱ複雑で、
導入のとこからウンザリしちゃうとこがあったんですけど、monotoneにはあり
ません。

その代わりmonotoneは、大規模というか、集中的なリポジトリの管理には向い
てないかもしれませんけど。たとえば、rubyの管理に使えるかっていったら、
ちょっと厳しいかも。やってみないと分かりませんけどね。でも、少なくとも
自分一人のソースの管理にはピッタリです。

ひとつ気になったのは、自分の調査不足かもしれませんけど、グローバル・サー
バがないとダメかも?という点。リポジトリの同期にネットワークが必須っぽ
い。たとえば、職場と自宅でコード・ベースを管理したいようなときは、職場
と自宅が直につながらないと同期が取れません。直につながらないとなると、
ハブとなるグローバル・サーバがいります。ファイルでexport/importってい
うのがありません。データベース・ファイルをサイト間でコピーしても、パス
の情報なんかも入っているのでうまくいきませんでした。

確かに世の趨勢はSubversionで決まりなんですけどね。でも、monotoneが入り
込む隙間はありますよ。小規模だったら全然イケます。簡単ですもん。

本家Permlink


2005年10月15日

今日から『つもり日記』にする。

激震にゆれるプロ野球界の話を書いたつもり。

本家Permlink


2005年10月14日2

http://rubycn.ce-lab.net/

本家Permlink


2005年10月14日1

http://c2.com/cgi/wiki?DynamicLanguagesAndLargeApps

自分がいいたいことをいってくれてる。自分は静的な型の一番の目的は最適化
だと思ってますし、そう思ってる人は多いはず。クチじゃあ型安全うんぬんい
うんだけど、決まって最後には『でも遅いし・・・』になる。

『Yahooは全体として見れば1つのアプリ/システムじゃないのか』というのも
鋭い。今どき、大規模だっつって一枚岩で作るバカはいない。サブシステムの
間はDBだったりネットワーク (つまりはテキストだ) でつながってることのほ
うが多い。

確かに、DLでDB実装するなんてのはバカげた話です。でも、それは特殊な例で
あって、ほとんどはDLでいけるくらいにはヌルい最適化でオッケーだし規模で
しょ。

大体、言語で大規模プロジェクトの問題が解決するくれぇならデスマーチなん
て生まれねぇって。

週末だし、ダラダラ書く。

自分だって静的型、嫌いじゃないですよ、そんなには。静的型で育ったし。で
も、今の『DLはビジネスには使えない』なんて風潮があるのはバカげた話で
しょ。そういうのが気に喰わないわけ。さもしたり顔しやがってさ。VBだから
とか、PHPだからとかいった理由で単価が決まったりさ。バカだろ、それ。ソ
フトウェアの価値で対価は決まるもんだろ。なんでたかが言語でもらうカネ決
められなきゃいけねぇんだよ、クソッタレどもが。大体、ネットなんてCで書
かれたもんがほとんどだし、Cなんて型安全なんてありゃしねぇし、高級アセ
ンブラなわけで、そんな言語が今あんたらが見てるネットを支えてるっていう
事実に目ぇつぶって、『静的型じゃないと大規模は無理』とかワケ分かんねぇっ
て。ヘソ噛んで茶ぁ沸かしてろって。

本家Permlink


2005年10月14日

「全員がグレイシー」な一家。当たり前か。

--

http://itpro.nikkeibp.co.jp/article/OPINION/20051012/222660/

だから、こんな特殊な事例を取り上げてどうすんの? フツー、一ヶ月も考え
ることだけに集中できるプロジェクトなんてねぇじゃん。

っちゅーか、『あらゆる事態を想定して』なんて、すっげぇウソっぽいんだよ
な。いや、天才だったらできるんだろうけどよ、オレぁ凡人だからよ。

だから、そんな時間的に余裕があったり、天才しかマネできないような事例を
取り上げて一体どうすんの? ニッケーさんよ。

お、ちょうどいい。あんまり関係ないように見えるけど:

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?FivePoundBag

何度もいうように、先の見えてることなら自動化してしまえばいい。プロマネ
なんていらねぇんだよ、先が見えるんなら。先が見えないからこそプロマネが
いるんであって。だから『適応』することが大事なんだよ。準備することは大
事だ。計画ってのは準備することなんだから。でも、プロジェクトが始まる前
に仕事が終わるなんてのはバカも休み休みいえといったところ。

--

いやぁ、かたじけない。多くの人に『今実行中のメソッドを知るには?』を答
えていただきました。

それにしてもナニですな、String#[regexp, n]はもうデフォなんですな。scan
は古いと。

でも、この表記法考え出した人は頭いいですな。

いやいや、そうじゃなくてそうじゃなくて。だから、実行中のメソッドを返す
ような仕組みを標準で入れてほしいという、迂遠な表現だったのですよ、あれ
は。callerがあるんならcalleeがあってもええじゃないかと。

そんなに需要ないですかね。

--

東芝も何やってんだかな。race conditionって厄介なもんだけど、予約システ
ムなんかだと、それが起きそうなところはハッキリしてるわけだから、そこで
ミスってるってのはかなりレベルが低いってことだろ? オレならともかく (笑)、
東芝の看板背負ってそれじゃダメだろ。例によって下請けか?

--

いいんだよ。オタクなんてみんな理系なんだから。だからオームがそこに突っ
込むのは全然矛盾してない。

--

そうなんだよな。モチオ流にいうなら、ASCIIなんてのは向こう側に行けるチャ
ンスがいくらでもあったのに、わざわざこっちに留まろうとしたわけなんだよ
な。単なる出版社としてデカくなりたかっただけって感じで。その望みは半ば
かなったのかもしんないけど、紙の出版業界はこれからは落ちる一方なんだか
ら、その選択は間違ってたろうって話。

--

http://www.oreillynet.com/pub/a/network/2005/10/07/open-source-and-web-20.html

T.O'Reilly氏とSunのJ.Schwartz氏の丁々発止の議論が面白い。

Schwartz氏にいわせると、『オープン・ソースがすごいんじゃなくって、タダ
なのがすごいこと』という身もフタもない話に。まぁ、それも実際大きいだろ
うし。

あと、1枚目の最後にSchwartz氏が:

  everything Sun does will be open sourced. Everything.

なんていってる。

--

昨日の話に戻りますけど、だからこれからはアーキテクチャとか甘っちょろい
話だけじゃなくって、プロセスも含めてコードに落とさないとフレームワーク
と呼べなくなるんじゃないですかね。Railsがagileの考え方をコードを落とし
たように、MSがSoftware FactoryでMSのプロセスをコードに落とそうとしてい
るように。結局、総合的に考えないと生産性なんて上がるわけないし、再利用
性なんて生産性のごく一部でしかないということ。

本家Permlink


2005年10月13日2

『電車でD』、ワロタ。

--

こんなネタ引っぱってもしょうがねぇんだけどよ。やっぱ、O'ReillyとASCII 
の差ってのは絶望的なくらい広がっちゃったわけじゃん? まぁ、ASCIIと
O'Reillyを比べるオレのほうがキチガイなんだけどさ。でも、おかしいじゃん、
それ。そんなに差が開くってのは。

週刊アスキーじゃねぇだろ? いや、そういうことがやりてぇのかもしれんけ
ど、そんなのオレが望んでることじゃねぇし、そんな先細りすんのが目に見え
てるもんばっかやっててどうするよ?

てか、もうASCIIにはテクノロジーを広めるとか、そういう気概は皆無なんだ
ろ? もうASCIIじゃねぇけど、ファミ通にしたってさ、もっと開発寄りの雑誌
出すとかさ。ゲーム大国日本を少しでも支えようとか、そういうことは考えねぇ
のか? 何かとクローズドなゲーム業界に風穴開けてやろうとかさ。『ゲーム
批評』なんかはっきりいってカスだよな。チョーチンしなけりゃいいってもん
じゃねぇだろ? 面白くねんぇんだもん。まぁ、ゲー評はどうでもいいや。

O'Reillyにしても、Timさん一人で持ってんのかもしんないけどさ。あまりに
も才能がなさすぎだよな、ASCIIは。いや、ASCIIに限ったこっちゃねぇかもし
んないけど。実際よ、yendot とかでASCIIんとこにリンクなんて張られねぇだ
ろ? 前はちょっとはLinuxやってたからあったけどもさ。最近見た覚えなんか
全然ねぇよ。

まぁ、ASCIIみたいなデカイとこ、あーだこーだいっても変わるもんじゃねぇ
んだろうけどさ。だったらさっさと潰れてヨシだよな、うん。

--

そういえば、こないだの公園で、オームの人が『Railsの本は出さなくちゃい
けない本です』って力強くいってくれてましたよ、ええ。オームのほうに期待
したほうがいいね、これからは。みんなも出たら買ってやってください。たの
んます。

http://www.ohmsha.co.jp/information/ORJ/10th_ANNIVERSARY/

だから、どうしてこういうことが知られてないのかなぁ。

トップページもパッとしないし。

大体:

http://www.ohmsha.co.jp/ohmgrp/greeting.htm

これ、ダメでしょ。社長の写真くらい載っけなよ。パリッとしたヤツ。

"21世紀に求められる理工学専門出版社の役割"なんていうなら、もっとネット
活用しないと。そこにお客がいるんだから。だって、専門書なんでしょ? 専
門書なんて、今どき本屋ウロウロして買うもんじゃないでしょ。ショッピング
だけじゃなくってさ。大体ショッピングなんてAmazonで買うんだから、みんな、
今は。紹介するほうもAmazonじゃねぇとアサマシになんないんだし。もっとお
客さんに手を届かさないと。いろいろな面で。

ま、オレはマーケティングなんて知らないからバカなこといってるかもしんな
いけど、とにかく頑張ってくださいよ。Timさんだって紙の本の将来を楽観視
してるわけじゃないんだし。共立出版みたいにだけはなってほしくないですか
ら。

--

そうだよ、新刊のお知らせくらいRSSに載っけてほしいよな。

オームの社長もPodCastingやりゃいいんだよ (笑)。

--

今、ncursesのハッカーズ・ガイドをチラ見してたんですけど、K.Beck氏がXPE
の中でいってた、プロジェクトの最後に書くドキュメントってのはこういうの
なんじゃないですかね。

Debianのsidなら、libncurses5-dev.debを入れて:

/usr/share/doc/libncurses5-dev/html/hackguide.html

がそれです。

--

ようやくMeadowのフォントの設定の仕方が分かりましたよ。

NetInstallで開発版のほうを入れて、dot.emacs.jaを$HOMEにコピって、その
ケツに:

http://www.meadowy.org/meadow/wiki/%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%81%AE%E8%A8%AD%E5%AE%9A#TrueType%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%82%92CJK%E3%81%AB%E9%81%A9%E7%94%A8

のコードを貼っつけて、さらにそのケツに:

(set-default-font "Sans Serif 14")

を書き加える、みたいな感じ。これ付けないと、Meadow立ち上げるたんびにフォ
ント選ばなきゃいけなくなる。もちろん、``Sans Serif 14''は自分の好みで
選んだだけで、上のコードの中で定義されてるものならどれでも大丈夫のはず。

これデフォにしてほしいよなぁ。16ポイントは止めてほしい。初めてMeadow入
れた人に印象悪いし。

本家Permlink


2005年10月13日1

ん〜、Railsのことはよく知らないんですけど、『使いやすさのための苦労は
買ってでもしろ』なんでしょう。フレームワークの場合、ユーザがプログラマ
という特殊な事情があるんですけど、それでもそのユーザであるプログラマが
使いやすいものを提供したらああなったっていうことなんじゃないでしょうか
ね。で、それと『RailsでWebアプリを作るとUIが悪くなる』っていうのは別の
話でしょう。プログラマは一般にUIのデザイン能力がないといわれてますけど、
そんなことはこれからはいってられない時代でしょうし。

そもそもRubyなんだし、裏が見たければソース読めばいいだけですし。オート
マがいいかマニュアルがいいかはやっぱ議論を呼ぶところであって。

--

http://www.rubyist.net/~nobu/t/20051013.html

何やってるかサッパリ分からん (笑)。

いや、何を責めてるのでもなく、責めているとすれば自分のDateの知識のなさ
なわけですが。

おお、分かった。lastってselfの月の前の月の最後の日ですか。

それが分かれば満足。2行目も分かんないけど、もういいや (笑)。

--

オレの読解力なんてそんなもんです。

--

ああ、Rubyもセミコロンで行を終わらせることはできますよ。フツーはやらな
いだけで:

class Foo; def doit; puts(:doit.to_s); end; end
Foo.new.doit

クラス定義ってnil返すんですね。知らんかった。

--

今実行中のメソッドの名前は単純には知ることができないんですよね?

class Foo
  def doit
    begin
      raise StandardError
    rescue StandardError => e
      puts(e.backtrace.join.scan(/`(.*)'/)[0][0])
    end
  end
end
Foo.new.doit

self.methodの引数なしは実行中のメソッド・オブジェクト返してくれたらい
いんですかね。

本家Permlink


2005年10月13日

MSがSoftware Factoryなら、IBMはEclipse + RUPで対抗するってこと?

--

extract methodするのは、まず第一に意図を明確にしたいからです。once and
only onceからextract methodすることも多いんですけど、extract methodの
一番の効能は意図が明確になること。再利用は二の次です。

Forthでは関数はワードと呼ばれています。ですから、Cのプログラムが関数の
集まりになるのと同じように、Forthのプログラムはワードの集まりになりま
す。プログラムを形成するワード群は1つの語彙といえます。語彙が豊かにな
れば、1つの概念を短かい言葉で記述できます。『すべてのプログラムはDSLに
なる』といわれているのはそういうことです。

ですから、意図が明確にするためならば、メソッド呼び出しが1つしかないコー
ドをextract methodすることもあります。extractする対象が短かいとか長い
とか、再利用されそうだとか、そういうことよりも、そのコードを1つの意図
として表現したほうがいいかどうか、語彙が豊かになるかどうかでextractす
るかどうかを決めます。

--

『インターフェイスの街角』読んでるんですけど、ちょっと後悔してます。
UNIX MAGAZINE、読んでないんですけど、街角だけは立ち読みだけでもやっと
けば良かったかなって。

UNIX MAGAZINE読んでないってのは、はっきりいってつまんないし、Linux、と
いうかオープン・ソース全般に対して冷淡だったってこともあります。まぁ、
クローズド・ソースが悪いってわけじゃないですけど、あれだけLinuxが盛り
上がってたのにドシカトでしたからね。そりゃムカツキましたよ。

--

あははは。多分シャレでいってるんでしょうけど。BSDからcsh取ったらBSDじゃ
なくなりますやん。B.Joyに祟られますよ。って、まだ生きてますけど。

--

そうそう、昨日、書泉グランデ行ったんですけど、Winnyの本、売り切れだっ
て。版元のほうにもないらしくって、今週末? 来るとかいってた。

しかし、書泉グランデもナマクラになったもんだなぁ。

--

Rails入れていい? ダメ?

irb, ri, pdumpfs

の3つ? 実はriは使ってないけど。使うのは自分で書いたもんが圧倒的に多い
からなぁ。しかもどれもマイナーだし (笑)。

--

http://www.asahi.com/culture/nikkan/NIK200510120015.html

なぜasahi.com?

本家Permlink


2005年10月12日2

誰だよ、ebanさんが恐いなんていってるのは。

オレはいってねぇですよ。ほら、bakaid=20051011。

--

日記に卑怯もクソもない!

日記じゃないけど。

--

viでよく分かんないのが、挿入モードのときに、行頭の空白をBSで消せない場
合があることなんですよね。実装のせいか設定のせいか分からないのも悩ませ
るとこで。そもそも、なんでそんな仕様なのかがよく分からない。

本家Permlink


2005年10月12日1

monotone.el、revert使えないってどゆこと?

--

個人的にはOmotiさんみたいな人は大事にしたいんですけど、ぶっちゃけ、何
にRubyを使いたいかが分からないんですよね。

はっきりいえば、Rubyでゲームを作るのは相当難しい。HSPでサクッと作れちゃ
うようなゲームは現状ではムリです。

Rubyの得意分野といえばテキスト処理とかCGIとか。いってみれば地味なとこ
ろなんで。WindowsだったらExcelと一緒にゴニョゴニョとかもできるんでしょ
うけど、それでも地味っちゃぁ地味。

ハデなことがやりたいんであれば、HSPでもいいですし、Flashもオススメです
よね、やっぱ。Flashはお金出さないといけませんけど、悪くないと思います
よ。

『それでもRubyがいい!』っていうなら、近道はないとしかいえないですね、
残念ながら。

いろんな言語を試してみるのは悪くないと思いますよ。楽しむことのほうが大
事ですし、そのためにはやりたいことがサクッとできたほうがいいわけで。

--

29かよ! 上の記事、訂正しちゃおっかなぁ (笑)。大体ブログのほうでRubyの
エントリないじゃんか。

--

あれ? よく見たら、sargeのパッケージが用意されてる。

http://www.venge.net/monotone/downloads/monotone_0.23-0sarge1_i386.deb

本家Permlink


2005年10月12日

まぁ、でも、専門学校が吹き溜りと化してたのは、自分らのころもおんなじで。
だから、20年くらい前にはもうそういう状態だったと。

結局、高校出てからすぐ働く場所がないし、高校出てからすぐ働いてもいいと
いう社会的な認識もないわけで。実際、この業界なんかは高卒の受け皿なんか
用意してないみたいだし、せめて専門卒みたいな感じ?

--

--- file.c	2005-10-12 10:42:00.000000000 +0900
+++ file.new.c	2005-10-12 10:42:40.000000000 +0900
@@ -3018,7 +3018,7 @@
  *     ?d  | boolean | True if file1 exists and is a directory
  *     ?e  | boolean | True if file1 exists
  *     ?f  | boolean | True if file1 exists and is a regular file
- *     ?g  | boolean | True if files has the \CF{setgid} bit
+ *     ?g  | boolean | True if file1 has the \CF{setgid} bit
  *         |         | set (false under NT)
  *     ?G  | boolean | True if file1 exists and has a group
  *         |         | ownership equal to the caller's group

--

へー、/.jでLisp取り上げるなんて、どういう風の吹き回し?

そういや、昨日、c2.comで:

http://c2.com/cgi/wiki?LispLacksVisualCues

というのを見かけてね。全然読んでなくって獲物にも載せなかったんだけど。
これ、結構量があってさ。米国じゃ今でもLispは議論の対象になる言語なんだ
なぁって思ってさ。日本なんかじゃLispなんか存在しないも同然だもんな。

しかし、このセミナー、聞きたいと思わせるのは``On Lisp''の話だけだし。
まぁ、オレはLisperじゃないし、Lisperから見たら違うのかもしんないけど。

そうそう。そりゃFranzがやってんだからしょうがねぇんだろうけど、SLIMEと
かやんねぇとダメなんじゃねぇの?

--

http://www.meti.go.jp/press/20051011003/20051011003.html

松下の人が入ってるのはイジメか? (笑)

--

みねろうさんですか? いくらviだからって、カラー・シンタクスは使ったほ
うがいいんじゃないですか? まぁ、viならしょうがない気もしますけど。ち
なみにEmacsなら:

(global-font-lock-mode t)

を.emacsに書いておけばオケです。

--

もちろん皮肉です。

--

アメリカン・ジョークでお悩みの貴兄に、久々のアメリカン・プログラマズ・
ジョークを。

ウチのワイフがいうのさ

  あんた、ルビーだルビーだって騒ぐけど、たまには本物よこしなさいよ

ってね

そこでオレはこういってやったのさ

  おまえにはパールが一番似合うのさ

てね

もちろん、その後の言葉は飲み込んだけどね HaHaHa

--

む。なひさんはLet's Noteですか。

本家Permlink


2005年10月11日1

もちろん、無駄を省くことで早くするというのは間違いではありません。でも、
一番大事なことではありません。

早くするということそのものが一番大事なことです。早くする中で無駄を省く。
無駄を省くために遅くなってしまうのでは本末転倒です。

早いリズムで活動する。拙速を尊ぶ。それが基本線。それがagileということ。

ただし、大きな目標は常に心のどこかに留めておく必要はあります。

--

え? 極端なXPerってオレのこと?

PragProgsはXPerじゃありませんけど、『assertは出荷時でもONにしとけ』と
いってましたね。それはそれで極端ではありますけど。

--

テストが失敗したら音が鳴ってもいいんじゃないか? 失敗したとき:

  たらり〜ん はなからぎゅ〜にゅ〜

本家Permlink


2005年10月11日

http://pcweb.mycom.co.jp/articles/2005/10/07/lw2/

なんや、これ。翻訳記事か? 読んでてチンプンカンプンやないか。

--

sargeのmewって3系なのか。で、mew-betaっていうのが入ってるけど、これは
4.0。www.mew.org見ると最新の正式版は4.2。そんなもん?

スパムフィルター噛ますんならやっぱ4系のほうがいいらしい。とりあえず今
後の課題ということで。

--

monotoneはSQLiteも使うみたいね。チュートリアルにもSQLのインタフェース
が用意してあるって書いてあった。

ぐえ。sargeのmonotoneには.elが入ってないの?

う〜ん。monotoneみたいな若いプロジェクトをsargeというstableな環境で使
うのもどうなんだろうか。.debは0.18なんだけど、ソースは0.23が配布されて
る。若いだけに、ちょっとのバージョンの違いでも、大きく変わっている可能
性がある。

試しに0.23をconfigureしたみたけど、Boostが古くてダメ。こりゃ諦めるか。

--

『某ゲーム』じゃ日記分けた意味がありません。

--

http://ameblo.jp/singbrain/entry-10005011399.html

ん〜、そういうことを考えてもあまり意味がない。いいものは長く残るという
事実に頼るしかないんじゃないですかね。大体、いい悪いの判断なんて個人差
が激しいし。だからバンバン突っ込んじゃっていいと思うんですよ。まず量が
大事だから。

ちなみに、獲物は一応目を通して面白いと思ったものを載せてますけどね。
だから最近del.icio.usのほうは『あとで』に使うことが多いです。

--

自分、人をURLで覚えるタチなんで、三木星さんだと思ってましたよ (笑)。か
んさんとは別人かと。

--

スポンサーを見つけるのが大事ということであれば、企業がその活動の一環と
してOSSプロジェクトを立ち上げるっていうのは最近増えているわけですけど。
でも、そういうところもいつまでもプロジェクトの面倒見れるわけじゃなかっ
たり、もともと外部の力をアテにしてる (要は人手や資金が不足している) と
こもあったりで、事情は様々でしょう。

もちろん、個人がいわゆる内職で始めるパターンも依然として多いでしょうし、
そういう場合はスポンサーを見つけるなんてのは大変です。

すべてがすべて外部の力をアテにしなきゃなんないほど大きいプロジェクトじゃ
ないでしょうけど。

OSSのいいところはオープンであることであって、それは音楽が『誰かが作っ
てくれるもの』という現状とは対照的なものであって。あなたの送ったパッチ
が、あなたの書いたドキュメントが、製品の一部として頑然として組み込まれ
るという事実。

そういう意味では企業もボランティアも同じ土俵に乗ってるんだし、企業なら
企業でその土俵でどう相撲を取るか考えればいいし、ボランティアもボランティ
アなりに相撲を取ればいい。両者が対峙したときは、当然、体力ある企業のほ
うが強いけど、技が決まれば小兵が勝つ余地は十分あるし、土俵は広いからハ
ナッから対峙することを避けることもできる。

--

ぐえ。写真NGかよ! 目棒入りでいいから写真載っけてほすい。

ぐえ。大学4年ですか。むぅ。

ああ、自分の場合、前田さんといえばmonitor.rbです。

いやいやいや、オレはどうでもいいから (汗)。でも、ebanさんは自分が尊敬
するハッカーの一人であることに間違いはないですよ。

  飛びつくけどさあ、でも飛びついたっきりでそのまますぐに他行ってしまう
  しね(笑)

だから、それがミーハーというか、ニュータイプというか、の特徴なわけで (笑)。

  最近はそうでもないね。

最近じゃないときは四六時中ハックしてたんですか。

  うん、だから生では見ないんだよほとんど。裏で撮っておいて違うものを見
  るっていう。

ある意味、Ruby界のナンシー関? それから、やっぱりモヲタなんですね (笑)。

しかし今回のインタビューは明星みたいになっとるな (笑)。飄々とした人物
像は伝わってくるけど、ebanさんの凄みというものが伝わってこない。ちょっ
とツッコミ不足か。まぁ、ebanさん優しいし、しょうがないんだろうけど (笑)。

--

             _____
 f`xヘ,   r〜ー、,   |   エーイ、
 ,.'⊥_  'l!-n、ァ  <   バカハイイ !
'" t'ヽ、‐io、'レ'^i´`ヽ.  !  ebanヲウツセ !!
  T'‐<`'‐-' ィ   ヽ ‾‾‾‾‾
____!_l___┬‐'"ニヽ   ',
‾‾‾‾‾l!‾L.-‐ィ
          l!   | 〃


(やっぱPタグで囲まないとダメね)

本家Permlink


2005年10月10日

午後は○○おもいッきりDebian!

といっても今はもう夕方なんですが。メール端末として使っているノートPCを
woodyからsargeに上げることにしました。まずはwoodyを最新に。と思ったら、
hold連発でニッチモサッチモ。ドステーブル (英語でいえばvery stable) な
のにそりゃないよ。

holdはどうにも解決できそうもないのでほっとくことにして。とりあえず資料
探し。こんなときは:

http://debian.fam.cx/

で、sargeのリリース・ノートを読めと:

http://www.debian.org/releases/sarge/i386/release-notes/

んで、書かれてるとおりにやってみる。作業も終盤に差しかかったときに、イ
ヤなメッセージが。『PCMCIAモジュールどないすんの?』

忘れてた。このノートPC、ネットワークはPCカードだったんだ。

なんでsshで作業し始めたのかな、オレも。バカすぎる。

しょうがないので、PCMCIA関係はスルーすることに。無理矢理突っ込んでも大
丈夫かもしれんけど、カーネルがフリーズするなんて脅されたら腰引けるっ
ちゅーねん。

それ以外は滞りなく移行終了。で、リブート。案の定、ネットワークはダメ。
PCMCIAドライバがないいわれる。

困った。いろいろ困った。PCMCIAドライバをどうするか。これは
kernel-pcmcia.debをインストールすればいいんだろう、多分。

kernel-pcmcia.debをダウンロードしてきた。で、これをどうやってノートPC
にコピーするか。このノートPC、1 スピンドルなんだよねぇ (w。

幸い、kernel-pcmcia.debは小さくてフロッピーにも収まることが判明。押し
入れからゴソゴソとUSB FDを引っぱり出す。.debをWinでフロッピーにコピー
して、ザクッとな。さすがにUSB FDはLinuxでもサックリ認識してくれた。

ほんでもって、dpkg -i。リブート。ping。おっけー!

--

ついでに:

http://www.debian.org/releases/sarge/i386/release-notes/ch-information.ja.html

にも目を通す。

  5.4 Transmeta Crusoe システムと X Window System

ぐえ。モロCrusoeやっちゅーねん。

--

tla GNU arch が orphan になったらしく (本当?)、また、それほど使いこん
でいたわけでもなかったので、おくじさんオススメの monotone を試してみる
ことにしました。

sarge にはパッケージが用意されていて、自分のところでは依存するライブラ
リは Boost のいくつかしかありませんでした。ドキュメントはこれ:

http://www.venge.net/monotone/docs/index.html

これにはチュートリアルも含まれていて、ザッと目を通したところ、結構簡単
そうです。tla arch だとドキュメントを読むときから長い名前 (とその慣習) 
に悩まされるんですけど へっへ monotone にはそうしたことはあまりないよ
うです。

で、気になるのは Emacs インタフェースです。.deb をインストールすると、
/usr/share/doc/contrib に monotone.el.gz と monotone-nav.el.gz という 
2 つの .el が見つかりました。とりあえず monotone.el のほうをチラッと試
してみたんですけど、通常の VC と違ってクセがあるんですけど、それなりに
使えそうな印象。クセというのは、キー・バインディングが独特な点や、コマ
ンドがデフォルトでは作業コピー全体に対する操作になるといった点です。

そういえば、monotone にはバージョン (リビジョン) 番号という概念はない
ようです。Subversion にはリポジトリに対する番号はありましたけど、そう
いうのもないみたいです。もちろんタグはありますけど。

--

ノノノ
すっす
  ー

む。やっぱ『へっへ』はすでにあったらしい。『すっす』もあるのか。

--

http://www.hyuki.com/kakera/?mycmd=search&myword=%83X%83k%81%5B%83s%81%5B

『です』がスヌーピーに見えるってのもスゴイな。フツー見えないよな。

本家Permlink


2005年10月07日1

月イチ連載で『巨大な城が・・・ 崩壊っ・・・! 砂塵にかえるっ・・・!』
じゃねぇって (笑)。

・・・

ほれ見ろ。波留師匠もいってるぞ。『複雑だからこそ省きが重要なんだ』って。

本家Permlink


2005年10月07日

http://www.tokyo-np.co.jp/00/sya/20051007/mng_____sya_____010.shtml

  判決理由で塚原裁判長は、見出しの著作権について「創作的表現であるかど
  うかで個々に判断すべきだが、本件の各見出しの表現には著作物として保護
  される創造性があるとはいえない」として一審同様、侵害を認めなかった。

  しかし「見出しは、多大な労力、費用をかけた報道機関の活動が結実したも
  ので、デジタルアライアンス社の行為は読売新聞の法的保護に値する利益を
  侵害した」と判断した。

よく分からん判決。『(本件の) 見出しには著作権がない』と上ではいってい
て、でも『法的保護に値する利益』ではあるって何か矛盾してないか? 著作
権以外にどんな法的根拠のある『利益』なんだろうか?

ああ、/.-jのほうに詳しい情報が載ってますね。読売のがいいかな:

http://www.yomiuri.co.jp/national/news/20051006it11.htm

  デジタル社の事業について、〈1〉見出しが作成されて間もない、情報の鮮
  度が高い時期に、複製利用している〈2〉営利目的で反復継続している -- 
  などの点を挙げ、「原告の法的利益を侵害している」と結論付けた。読売側
  の損害は月に1万円とした。

要は『やりすぎ』ってことか。まぁ、常識的な落としどころかな。

でも、その後の読売のセリフがまたアレだ:

  読売新聞東京本社広報部の話「記事見出しの無断使用は違法となることを認
  めた初の司法判断で、インターネット上のニュース配信の指針となる意義の
  大きい判決と考えます」

『記事見出しの無断使用は違法となることを認めた』というのは言い過ぎだろ。
『違法となり得る』といっているわけで、当然ながら、創造性の認められない
見出しなら無断使用はOKだろ。もちろん、そこには『やりすぎはいかん』とい
う注意書きはつくけど。

おっと、これがベストかな:

http://www.yomiuri.co.jp/national/news/20051006ic27.htm

ま、ブログで使うとかはまず大丈夫でしょう。常識の範疇で、ということ。

--

ん〜、何も仮想世界と現実世界とのギャップを埋めるための存在はSNSに限っ
たことじゃないでしょう。アサマシなんかもその1つといえるでしょうし、は
てなの投げ銭とか?もそうでしょうし。自分はSNSに取り立ててギャップを埋
める力があるとは思ってないんですよね。まぁ、誰が見てるか知りたい人は
SNSやればいいし、もっとマスを相手にしたいんならSNSやらなければいいって
だけで。

--

http://c2.com/cgi/wiki?RubyIsSmalltalkMinusMinus

あははは。

まぁ、でも、他の言語を叩いて自分のほうに引き込もうとするのは良くない。
自分もPHPのことを悪くいいますけど、だからといってRubyにしろってわけじゃ
ないんですよ。いや、ほんとに (笑)。

本家Permlink


2005年10月06日2

う〜ん。自分の場合、前ほどEmacsを主張しなくなりましたね。とにかくElisp 
がダメ。あまりにも古臭い言語で現状の要求に合ってない。Elispのせいで
Lispがダメだと思ってる人も多いんじゃないかと訝しむくらい。

Eclipseの現象を見ると、やっぱり言語はその言語による開発環境持たないと
ダメなのかなと考え込んでしまいます。MSがVisualStudioに力を入れているの
もそれだけ開発環境が大事だということの現れでしょうし、Software Factory
なんかもその流れが加速したからこそ生まれたもんでしょうし。

UNIXの思想がパイプに縛られているのと同じように、UNIXでの開発思想は
Emacsやviに縛られてるんじゃないんですかね。

--

ああ、でも、新山さん絶賛のSLIMEって、Elispのモードだったんですか。

http://common-lisp.net/project/slime/

がんばるなぁ。

--

今、新山さんが紹介してたSLIMEのデモ・ビデオ見てるんですけど、自分がいっ
てた『操作を録画すると同時に音声も録音したい』っていうのは、こういうこ
とがやりたいからなんです。どうやってるんですかね?

ああ、SLIMEってネットワーク バリバリ使うんですか? 自分、Elispが嫌いな
理由の1つがネットワーク回りが異常に弱いからなんですけど、SLIMEの人はが
んばっちゃうんですね (笑)。

ああ、やっぱ『イーマクス』なんですね、発音は。

あははは。やっぱヒアリング全然ダメだわ。

あははは。典型的なハッカー・スタイルの開発だ。TDDなんて知ったこっちゃ
ねぇって感じ。これはこれで悪くないんだよな (笑)。

iBookかPowerBookでデモやってんだけど、iBook、ってかMac全般的にタルいマ
シンだよね? x86に比べたら。それでも結構サクサク動いてるのね。

ああ、やっぱ見といたほうがいいね、これは。これをマネろとはいわないけど。

本家Permlink


2005年10月06日1

http://d.hatena.ne.jp/backbeat/20051005#p5

あー、これは上の記事の批判とかじゃなく、単なる感想というかそんな感じで
す。

やっぱりウォータフォールっていうのは、工業製品の生産というメタファーな
んですよね。工業製品の開発じゃなくって、あくまでも生産。ベルトコンベア
に乗ってからの話。

でも、工業製品の生産をソフトウェアに当てはめちゃうと、家内制手工業にし
かならないんですよね。成果物といわれるものは人間が作るしかないわけで。
成果物を増やそうとしたら人間を増やすしかない。

その成果物というもの。開発側から見れば、それなりに仕事の成果ということ
になるんですけど、顧客から見たら全然そんなことない。開発の成果というの
はソフトウェアの価値で計られるべきで、それは、そのソフトウェアがどれだ
け顧客のビジネスに価値をもたらしてくれるか/くれたかという観点でしか計
れない。これまでは、いわゆる成果物というものでその辺をゴマカしてたんだ
けど、そんな甘いことはもういってられないでしょ。

ベテランの話になりますけど、自分は前からベテランの人たちに期待してるん
ですね。トヨタ方式という思わぬとこでベテランの力を再認識することになっ
たわけですけど、ソフトウェア開発のほうからもそういうのが出てきてほしい。
もちろん、それはagileであることを期待してるわけですけど。で、重量級やっ
てたベテランも、agileと出会ったら、ひょっとしたらまた元気になって現場
に帰ってきてくれるかもしれないと期待してるんですよ。プロマネやってゴネ
ゴネネゴネゴばっかやってねぇで、いっしょにコード書きましょうよってこと。

--

http://www.yomiuri.co.jp/main/news/20051006it11.htm

むむ。

本家Permlink


2005年10月06日

http://www.zdnetasia.com/news/hardware/0,39042972,39273933,00.htm

あのDellが、Winの入ってないPCを売るそうな。しかも、FreeDOSのCDが付いて
るらしい。

でも、相変わらずオンライン・ストアでFirefoxは弾かれるし。

結局ポーズだけなのか、Dellっつーのは。

--

増井さんは若手じゃないだろ、フツー。

でも、POBoxやQuickMLがきちんと評価されたのは喜ばしい。

--

http://d.hatena.ne.jp/korin/20051005#1128518446

ありがとうございます。

新山さん、こういうのも作ってたんですね。いや、どっかで名前見た覚えがあ
るんですけど、操作を録画するツールとは思ってませんでした。

そうなんですよね。これに音声かぶせればいいわけなんですけど。

ん〜、でも、デモで使うなら、音声より字幕スーパーみたいなほうが親切なの
かなぁ。

--

http://www.ecareer.ne.jp/itm/campaign/

だからクソダセーソニーのオークマンなんざ誰もほしがらねぇだろ?

--

http://znz.s1.xrea.com/t/?date=20051005#p01

ありがとうございます。早速入れ替えたところ、落ちることはなくなりました。

--

http://www.sponichi.co.jp/baseball/flash/KFullFlash20051006000.html

アスレチックスのモッカ監督が辞めたそうな。『マネーボール』でビリー・ビー
ンGMにアゴでコキ使われてた人。いや、コキ使われてたというか、『何もする
な』といわれてたといったほうがいいのかな (笑)。でも、優れた監督である
のは間違いなさそう。広島に来るんですかね?

--

いや、別に『優秀な人を雇うのが恐い』なんて珍しい話じゃないでしょ。『優
秀』の基準なんて曖昧だし、学歴なんてのも優劣の判断基準になり得るわけだ
し、そうしたら『恐くて雇えない』っていうのも分からない話じゃない。たと
えば、フツーの営業職募集するつもりだったのに院卒とか来たら戸惑うでしょ? 
それから、人材募集で年齢制限設けるのはごくフツーにやられてるけど、それ
も一種の『優秀な人を雇うのが恐い』なんじゃないの?

本家Permlink


2005年10月05日1

いやぁ、こういうネタには気ぃ使うよな、やっぱ (笑)。

--

sargeの風博士、タブが1つも表示されてないときにHomeボタンを押すと落ちる
みたい。ブランクでも何でも、タブが開かれているときにHomeを押しても問題
ない。だから、Newボタン押してからHomeボタン押せば落ちない。

風博士の話は置いといて。風博士がなんで落ちるのか分からなかった間、
Epiphany使ってたんですよ。そしたら、これがまたダメなインタフェースで。
タブの耳にあるタブを閉じる×マークと、隠れている右のタブを表示させる三
角マークが異様に近い。ちょっと考えればダメなデザインだって分かりそうな
ものなのに。不思議でしょうがない。

それから、Galeonもこのダメなデザインなんですよ。もう呆れますよ。いくら
OSSはダメUIが多いっつったって、もうちょっと考えてくれと。

あ、風博士もこのダメなデザインだったのか。風博士の場合、タブが右端まで
一杯に広がってないから気づかなかった。

なんでダメなUIかなんて書かなくっても分かると思いますけど、×と三角が近
いと、三角を押そうとして×を押してしまう危険性が高くなるということ。こ
れ、自分は実際にやったことはないですけど、もしやったらキレますよ、マジ
で。

Firefoxは×ボタンしかないから、こうした誤操作とはハナッから関係ない。

--

Sunはひょっとしてthin client捨ててないんですかね?

--

ぐえ。風博士、中クリックすると落ちる。

--

だからって本当に刺すなよ。一応いっとくけど (笑)。

本家Permlink


2005年10月05日

浪花のゴジラ、バファローズか。まぁ、しょうがないこととはいえ、ガッカリ
だよな、ガッカリ。『野球小僧』読んで楽しみにしてたんだけど。

大学行くよりはプロに行ったほうがいいとは思うけど。それだけ早くメジャー
に行けるから。

それにしてもなぁ、バファローズかよ。

--

http://www.atmarkit.co.jp/farc/special/auto/auto01.html

期待アゲ。人月制度にまで触れている点に好感が持てる。

MSが推し進めるところのSoftware Factoryというのは重量級的な発想ではある
んですけど、agile方面でも生産性を上げる鍵はコード生成になると考えられ
ていて、そのあたりは重量級もagileもクロスしていますよね。

ただ、こうした流れが加速すれば、自動化されてしまうようなところで作業し
ている人たちはいらなくなってしまう。それはそれで業界の正常化になるから
いいんじゃないかというのがartonさんの意見で、自分も同感です。もちろん、
自分も淘汰される可能性が高いわけですが、それはそれで仕方ない。

--

親バカ、犬バカ、世の中バカばっか。

--

  酷い扱いをされたうえ、使い捨てにするような会社には
  故意に複雑化したソースを納品する予定です。
  親会社は技術力を蔑ろにするようなところですので
  気づかないでしょう。

プロが自らプロとしての誇りを捨ててはいかんよ。技術というものはいいほう
にも悪いほうにも転ぶのだから、技術者というのは職業倫理が何よりも大切な
んだ。

腹が立ったなら、きれいなコードを納品した上でナイフか何かで刺せ。それが
プロの技術者というものだ。

--

ソフトバンクの編集会議にカヘー編集長が参加していいの? (笑)

--

こないだWinkっていうPCの操作を録画するソフト紹介しましたけど、ああいう
感じで操作者の音声も同時に録音できたら素晴らしいんですけど、そういうソ
フト、どっかにないっすか?

本家Permlink


2005年10月04日1

http://c2.com/doc/oopsla89/paper.html

なんや。最初の論文にHyperCardのこと、書かれとるやないか。不勉強すぎ。

本家Permlink


2005年10月04日

特許は消尽されるのに、特許と同じ知財の著作権は消尽ないのか。なんかへん
な話だ。

--

そういえば、Googleはプライベートなブログは禁止ってわけじゃないんだな。
それとも、そのへん、契約でゴニョゴニョできるのか。

--

JavaScriptがGUIのDSLになるか。

いや、佐藤さんとこの話とか、GoogleとSunが協力するとか、そういうことを
考えてて。で、以前、sheepmanさんが『JavaScriptはアセンブリ言語になる』っ
ていってたのもありますし (記事見つからず)。

でも、その割にはJavaScriptの進化はのろい。のろすぎる。Ajaxが急だったせ
いもあるんですけど。これなんか、MSに無理矢理標準化された弊害だと思うん
ですよ。もちろん、ECMA Scriptという標準化がすべて悪いとはいいませんけ
ど。自分は、SunがJavaを標準化しようとしないのは正解だと思ってますから。

Tcl/TkっていうのはよくできたGUI DSLだと思うんですけど、それに比べたら
JavaScriptはまだまだ全然。言語の素性は数段上ですけど。

--

20年後だと現実味がありすぎて、逆に思考がちょっと制約されちゃうかも。
100年後だったら、どう考えたって当たりっこないから気楽。たとえば、それ
こそ自然言語がそのままプログラムになるとか。方言といった表記の揺れも許
容したり、あるいは逆に意味を持ったりとか。少なくとも100年後にはコンパ
イラはなくなっていてほしいなぁと。

本家Permlink


2005年10月03日1

なんなんだ、匿名文化って。CD買うのに一々名乗るか? 名乗らねぇだろ。だっ
たら、エーベックス買い支えてんのは無数の匿名者じゃねぇか。でもって、そ
うした無数の匿名者相手にアコギな商売はしねぇだろ? それと変わんねぇよ、
なんにも。

--

む。One-Click-Installer、まだ新しいのは出てないのか。ま、入れちゃうか、
古いのでも。

本家Permlink


2005年10月03日

http://domani.shogakukan.co.jp/magazine/index.html

次は『カッコイイ化』らしいぞ。

--

http://www.sanspo.com/golf/top/g200510/g2005100301.html

いや、記事じゃなくって、こんなとこにも``Ads by Google''があるんだなぁ
と。新聞といえば大手広告代理店とベッタリだと思ってたけど、そうでもない
んですかね。それから、サンスポみたいなデカイとこも、そこらへんのブログ
と同じようにGoogleでアサマシやってるわけで。やっぱり紙とは違う世界なん
だなぁと。

--

『厳格』でgrepかけたて見つかったのは2つだけです:

200509281, 200509291

多分前者の記事でしょうね。

自分でも改めて『厳格さ』というものを考えてみたんですけど、それは工程が
きっちり分けられていることだろうと。分析/設計/実装といった工程に分け
られていて、その各工程の終わりでは成果物を検査するという。

こうした厳格なやり方が『安全なシステム』を生むために必要なのかどうかは、
正直いって自分には分かりません。

--

マジでC++、流行ってるの?

--

だからニューヨーク行ってまでなんで吉牛なんですか (笑)。しかも2日連続。

--

だから、週末なんだから情報断食しないさいって。こんなページ見てないで。

大体、最初にサンプルのためのサンプルって書いたじゃんか。もちろんコード
なんて走らてせませんよ、ええ。

20051002

直しました。

--

respectの訳語は『敬意』だと思うんですけど?

--

  (俺の研究は Ruby ではない)

な、なんd

--

http://satoshi.blogs.com/life/2005/10/xavixport.html

essaさんとこから。ここで紹介されてる『新世代株式会社』っていうのは独立
系らしい。株主見ても銀行かVCくらいなもん。ちょとびくり。

本家Permlink


2005年10月02日1

昨日、『リファクタリング』が見つからなくって部屋中ひっくり返してたら、
``Kent Beck's Guide to Better Smalltalk''が見つかって。積ん読だった1冊。

で、CRCのところを拾い読みしてるんですけど、興味深い記述がありました:

  It all started in the Computer Research Lab at Tektronix in Portland, OR.
  Ward Cunningham and I had been working together for about two years, he
  as the master, I as the student, in the mysteries of Smalltalk and object-ori-
  ented thinking. We developed a very productive collaborative style sharing
  a single computer, keyboard, and mouse. We were able to program as fast as
  we could come up with new ideas. In other words, programming was no
  longer the bottleneck in our research; thinking was.

ペア・プログラミングと思しき記述がありますよね。K.Beck氏がTektronixを
去ったのは1987年と書いてあり、上のようなペア・プログラミングが行なわれ
ていたのは1985-1987年ごろということになるでしょうか。

ところで、XPの始まりといわれているC3プロジェクト。ちょっと正確なところ
は分からなかったのですが、Webでは1996年という数字が見つかりました。と
いうことは、TektronixにおけるWardAndKentのペア・プログラミングと、C3と
の間で10年くらいの時間差があることになります。

K.Beck氏がTektronixを去ってからもペア・プログラミングを続けていたかど
うか。多分やってたんじゃないですかね。Tektronixを去った後も、K.Beck氏
はW.Cunninghum氏と一緒だったみたいですし、それに『非常に生産的なスタイ
ル』を捨てるとは思えませんから。ということは、XPの実践の1つとしてペア・
プログラミングが注目を集めるまで、10年間、その生産性の高さというのが検
証され続けていたと。ペア・プログラミングにはそれだけ歴史があるのだと。

XPは割と新しい方法論なわけですけど、その個々の実践というのは、上のペア・
プログラミングのように、それなりに時間の責めに耐えてきたものばかりなの
だということを再認識させられましたね。

--

もうちょっと読み進めたんですけど、また興味深い記述が。

  During 1988 Ward was still at Tektronix, consulting with a group working on
  a Smalltalk-powered oscilloscope. He had just gotten Hypercard, so he wrote
  a stack for desinging objects. Each object had its own card. The name of the
  object went in the upper left corner, the responsibilities down the left, and the
  collaborators on the right. Typing in a new collaborator would create a card
  for that object, if necessary. Clicking on it would take you to that card.

CRCカードの原型がHypercardのスタックだったということにまず衝撃を受ける
わけですが。今じゃCRCカードは紙のほうが一般的 (というか、使いやすいと
いうのが常識) ですから。

で、よく読むと、このスタックがまたWikiの原型を思わせるものなんですね。
Wikiに詳しい人にはよく知られてる話なのかも知れませんけど、Wikiの源流が
CRCカードにあったというのは、これまた衝撃的です。

--

HyperCard (正しくはcamelCaseです) のことを知らない人のために書いておく
と、stackというのは、キューとかのデータ構造のスタックじゃなく、
HyperCardのプログラムのことです。HyperTalkという言語で書かれたプログラ
ム。カードの束になるからスタックというわけ。

ちなみに、HyperCardの作者は最近話題になってるBill Atkinson氏です。

--

http://diary.cgiboy.com/ko529/index.cgi?y=2002&m=8

なんと2002年にはすでにいわれていたのか。

本家Permlink


2005年10月02日

自分が一番よくやるリファクタリングといえばextract methodです。で、そこ
から継承がらみのリファクタリングにつなげることが多いです。たとえば
extract superclassであったり、pull up methodだったり、さらにはform
template methodへとつなげたり。

こないだ、フと、これはマズイんじゃないかと思いました。このやり方だと、
継承の呪縛が強まるばかりです。最初のうちは、once and only onceを守れて
いるのですけど、段々と苦しくなってきます。

こうした状況でonce and only onceを守ろうとすると、さらにpullup method 
を繰り返すことになり、スーパクラスも肥大化していきます。あるいは、
extract superclassを繰り返して、継承階層が非常に深くなってしまいます。

当然ながら、良い設計とはいえません。どこかで継承の呪縛を断ち切らないと。

継承の呪縛から逃れる術としては、委譲が最有力の候補でしょう。リファクタ
リングでいえば、replace inheritance with delegationがあります。

# なお、ここでは委譲と合成をほぼ同じ意味で捉え、継承パス (path) を共有
# しないオブジェクトによって実装の共有を図るテクニックを指すものとしま
# す。

実は、この記事を書くに当たって『リファクタリング』を調べたのですが、意
外なほど委譲に関するテクニックは少ないことに気づきました。replace
inheritance with delegation以外にはないといってもいいくらいです
(replace type code with state/strategyなどを除けば)。

『リファクタリング』がダメなら``Smalltalk Best Practice Patterns''
(SBPP) があります。SBPPでは、委譲について割と紙数が割かれています。ポ
イントとなる部分を引用します:

  Inheritance is the primary build-in mechanism for sharing implementa-
  tion in Smalltalk. However, inheritance in Smalltalk is limited to a single
  superclass. What if you want to implement a new object like A but also like B?
  Also, inheritance carries with it potentially staggering long-term costs. Code in
  subclass isn't just written in Smalltalk. It is written in the context of every
  variable and method in every superclass. In deep, rich hierarchies, you may
  have to read and understand many superclasses before you can understand
  even the simplest method in a subclass.
  (Delegation)

Smalltalkは単一継承であることがまず一点。そのため、実装を共有するには
委譲に頼らざるを得ない場面があります。そして、それよりも重要なのが、継
承には長期的なコストが隠されているという指摘です。

委譲 (あるいは合成) については『デザイン・パターン』でも詳しく論じられ
ています。

# ちなみに、『デザインパターン』では合成と委譲を区別していますが、SBPP
# ではdelegationの枠で一くくりにしています。

『デザインパターン』での結論をいえば:

  クラス継承よりもオブジェクトコンポジションを多用すること。

そして:

  我々の経験からすると、設計者は再利用技術として継承を使いすぎである。
  設計は、オブジェクトコンポジションに依存すればするほど、より再利用可
  能で簡潔なものとなる。デザインパターンでは、オブジェクトコンポジショ
  ンがさかんに適用されている。

あちこち飛び回りましたが、結局、結論はこれでしょう。extract methodの次
につなげるべきは、extract superclassではなく、extract componentといっ
たものでしょう。そうすればState/Strategyパターンの抽出などにつなげるこ
とも容易でしょう。

--

サンプルのためのサンプルで申し訳ありませんが、単純なWebアプリケーショ
ン・フレームワークを考えてみましょう。まず、Webアプリケーションの土台
となるスーパクラスを定義します:

class WebPage
  def initialize(cgi)
    @cgi = cgi
  end
  attr_reader :cgi

  def process
  end
end

そして、セッションを使ったWebページがほしくなったとしましょう:

class SessionPage < WebPage
  def process
    exit(1) unless cgi.session['authorized']
    process_session
  end

  def process_session
  end
end

これが継承を使ったやり方です (ほんとにバカなサンプルですみません (笑))。
もうちょっと賢くやると:

class WebPage
  def initialize(cgi)
    @cgi = cgi
  end
  attr_reader :cgi

  def main
    preprocess
    process
  end

  def preprocess
  end

  def process
  end
end

class SessionPage < WebPage
  def preprocess
    exit(1) unless cgi.session['authorized']
  end
end

といった感じです。preprocessを切り出して、それをスーパクラスに引き上げ
たわけです。これが自分がよくやるパターンです。

でも、これが良くないことは学習しました。ではどうするか?

class WebPage
  attr_accessor :preprocessor

  def initialize(cgi)
    @cgi = cgi
  end
  attr_reader :cgi

  def main
    preprocess
    process
  end

  def preprocess
    preprocessor.doit if preprocessor  # thanx to 171 and sheepman
  end

  def process
  end
end

class SessionChecker
  def initialize(cgi)
    @cgi = cgi
  end

  def doit
    exit(1) unless @cgi.session['authorized']
  end
end

これが委譲を使った答えです。preprocessを切り出して、それを委譲するため
のクラスを切り出します。

実際にこのフレームワークを使うサンプルを考えてみましょう:

class HelloPage < WebPage
  def process
    cgi.out{'<p>hello, world</p>'}
  end
end

超テキトーです (笑)。でも、これでこのHelloPageは、セッション管理のある
なしに関係なく利用できます。セッション管理がなければ:

HelloPage.new(CGI.new).main

で終わりですし、セッション管理が必要なら:

cgi = CGI.new
app = HelloPage.new(cgi)
app.preprocessor = SessionChecker.new(cgi)
app.main

となります。

--

なんでこんなことをダラダラ書いてきたか分かってもらえましたか? そう、
DIにつながる話なんです。

フレームワークっていうとTemplate Methodパターン使いまくりというのが自
分の中であったわけですけど、それがDIによって委譲でもいけるんだと気づか
されたわけです。

『委譲 (あるいは合成) は継承より大事だ!』って何回もここで書いてたんで
すけどね、ほんとに (笑)。

--

ところで、『デザインパターン』で取り上げた結論のちょっと前にこんなこと
が書かれています:

  合成の際には、オブジェクト同士がお互いのインタフェースを考慮すること
  が必要となる。言い換えれば、1つのオブジェクトを他の多くのオブジェク
  トとともに使えるように、注意深くインタフェースを設計することが要求さ
  れる。

これ、動的な言語だと、それほど神経質にならなくてもいいでしょうね。

SBPPのSimple Delegationには次のように書かれています:

  Here's an example -- a Vector that holds only Numbers. We could
  implement it by subclassing Collection, but there are likely to be
  many messages that don't make sense for a Vector. Rather than
  subclass Collection and block out scads of messages, we can sub-
  class object and delegate only those message we want.

これは今風にいえばDuck Typingです。サンプル・コードをまとめると:

Vector
  superclass: Object
  instance variables: elements
Vector class>>new: anInteger
  ^self new setElements: (Array new: anInteger)
Vector>>setElements: aCollection
  elements := aCollection
Vector>>do: aBlock
  elements do: aBlock

となっていて、VectorのスーパクラスはObjectになっています。(だから、上
の引用の終わりのほうにある``sub-class object''っていうのは``sub-class
Object'' が正しいはず。) そして、実装しているメソッドもnew:,
setElements:, do: の3つだけです。

『リファクタリング』に委譲関係のテクニックが少ないのも、Javaが使われて
るからかなぁ、なんて思うのはうがち過ぎでしょうね (笑)。委譲するたびに
interfaceくくり出すなんて面倒ですもんね。

そういう意味でも、動的言語使ってるなら継承より委譲を使うべきなんでしょ
うね。委譲のコストが低いわけですから。

--

数時間かけて書いても読むのはアッという間だな。

--

おお、スターバックスのラテ、買えたよ。夜更かしはするもんだ。

--

ああ、上のpreprocessみたいなのは今だったらAOPでやったほうがいいでしょ
うね、多分。

--

こないだの話をぶり返しますけど、あそこの『バカはほっといて』の『バカ』
は、るびまを『雑誌ごっこ』呼ばわりしたヤツのことで、UCDとは全然関係ねー
ですから。

このページ、一見さん向けには書いてませんから。『--』の間で話はバンバン
飛ぶし、元ネタへのリンクを張らないのも当たり前です。現に今も『あそこの』
で済ませてるし (笑)。

いうまでもなく、『バカが征く』の『バカ』はこのオレですから。そこんとこ、
夜露四苦!

--

SKKも夜露四苦ぐらい変換しろっつーの。

本家Permlink


Copyright © 1905 tko at jitu.org

バカが征く on Rails