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

ホーム

2006年05月31日

このバカタレが。

Wikiは結構使われているのだ。

確かにスパムは問題だ。
でも、スパムに悩んでいるのはメールだって
同じだ。そして、メールの便利さを疑う人は
今はもういない。

だいたい、ノーツをネットに公開する
バカがいるか? スパムと戦う気があるなら
Wikiは公開できる。

何しろ、オープン・ソースで作られているものが
多いし、いじろうと思えばいじれる。
特にWikiのようなものは、組織の用途に特化
させたいことが多いから、これは大きな
メリットだ。

--

CygwinのX11/Intrinsic.hを見ると、
XtAppAddInputは次のように宣言されている:

extern XtInputId XtAppAddInput(
    XtAppContext       	/* app_context */,
    int 		/* source */,
    XtPointer 		/* condition */,
    XtInputCallbackProc /* proc */,
    XtPointer 		/* closure */
);

一方、このXtAppAddInputの第三引数として渡す
conditionは次のような定数が用意されている:

typedef unsigned long	XtInputMask;
#define XtInputNoneMask		0L
#define XtInputReadMask		(1L<<0)
#define XtInputWriteMask	(1L<<1)
#define XtInputExceptMask	(1L<<2)

gccでコンパイルできねぇっつの。

error: invalid conversion from `long int' to `void*'

それともオレの読んでる本が古いのか?

本家Permlink


2006年05月30日

ああ、やっぱりK.Beck氏はこういうよね:

  Hiring for XP teams can differ from existing hiring practices. XP
  teams put much more emphasis on teamwork and social skills. Given
  the choice between an extremely skilled loner and a competent-but-
  social programmer, XP teams consistently choose the more social can-
  didate. The best interviewing technique is to have the candidate work
  with the team for a day. Pair programming provides an excellent test of
  technical and social skills.

  == XPE2, The Whole XP Team, Human Resources

だから、best and brightestじゃなくって、
competent-but-socialなんだと。いや、
賢くって社交的な人もいるんだけど、
まぁ、フツーはそこまで高望みしない。

だから、Googleには負けるわけにはいかない。
まぁ、もうすでに負けてるんだけど、
いつか一発かましてやる
という気持ちを持つことが大切なんじゃ
ないでしょうか (笑)。

best and brightestってのは、いってみれば
巨人のやり方なわけだ。自分とこで人を
育てず、高いカネで優秀な人を
引っぱってくる。それはそれでペイも
するし成功もするんだろうけど、長期的に
見てどうよ?とか、ファンはそれで満足
なの?とかそういう話だ。

--

続いてRoleから:

  Roles on a mature XP team aren't fixed and rigid. The goal is to have
  everyone contribute the best he has to offer to the team's success.

前にも書いたと思うんですけど、昔ほど
『アーキテクト』といった呼称を敵視する
ことはなくなりましたよ (笑)。

このRoleのちょっと前にそのものズバリの
Architectsってのがあって、そこで
アーキテクトについて触れられてますけど。
そういうのだったら全然問題ないですしね。
アーキテクトが『プログラマの本懐』とか
いわれると『バカ?』とかいっちゃいます
けど。

プログラマの本懐ってのは、素晴らしい
プログラムを作ること。それ以外に
何がある?
そのためにはコードをゴリゴリ書くこと
もあるだろうし、アーキテクトみたいな
役割をすることもあるだろうし。

たとえていえば、それは『ピッチャーは
野球選手の本懐だ』といっているのと
おんなしじゃん? それってすっげぇ
狭い見方じゃん? だったら、4番バッター
だって野球選手の本懐ということもできる
じゃん?

野球選手だったら、素晴らしい試合を
することでしょ、その本懐ってのは。
チームのメンバそれぞれが自分の役割を
十分に果たして、なおかつ、プロ野球
だったらお客さんも喜んでくれるような
試合をすることじゃん?

プログラミングを単なる仕事としか
捉えていないから『アーキテクトが
プログラマの本懐だ』なんて
バカなことをいうんだろ。
PG → SE → アーキテクトってか?
出世魚かっつーの。
こういうスキルバカっていうか
キャリアバカっていうのはどうにか
してほしいね。

本家Permlink


2006年05月29日2

今朝の話の続きなんですけど、XPE2には
プログラマの役割が次のように書かれて
るんです:

  Programmers on an XP team estimate stories and tasks, break stories
  into tasks, write tests, write code to implement features, automate
  tedious development process, and gradually improve the design of the
  system. Programmers work in close technical collaboration with each
  other, pairing on production code, so they need to develop good social
  and relationship skills.

  (The Whole XP Team, Programmer)

一応説明しとくと、ストーリーというのは
個々の要件に当たります。タスクというのは、
要件を満たすための作業です。テストという
のはユニット・テストと受け入れテストの
両方。受け入れテストにはテスタがいる
場合もありますけど、そうでなければ
プログラマが書きます。開発プロセスの
自動化と、システムの設計を徐々に改善
していくというのが目を引きます。
そしてペアを組むから社会的なスキルと
人間関係上のスキルも必要だと。

巷でPG (ピージー)と呼ばれている
人たちのイメージとはかなり違うことが
わかるでしょう。
だから、自分はPGという言葉が
大嫌いです。

--

それと、以前、『オープン・ソースは
不連続な進化に向かない』という
話があったんですけど。

これはそのまんまXPにも当てはまり
ます。XPは『不連続な進化はしない』
というのが1つの価値観になってますから。

これも今朝書いたように、一歩一歩の
歩幅は狭くっても、それを素早く
繰り返すことで、外からは飛んでいる
ように見えると。

--

XPE2は、XPE1と比べて、ずいぶんと
変わりました。結構戸惑うことも多い
んですけど。

自分なりに考えてみると、この
大きな変化を解く鍵は
Self-Similarityにあるんじゃないかと。

XPはもともと小規模向けっていわれて、
実際、XPE1でもそう書かれてたはずです。
でも、その制約を取っ払って、
規模が大きくなっても適用してみよう
じゃないかと。
そうすることで、XPの原則とか
実践とかの抽象度が上がったと。
そういうことなんじゃないかと
思うわけです。

このSelf-Similarityは、
変化の速度にも関係しているように
思います。規模が大きくなったときにも
効果があれば、スピードを感じるはず
ですから。

Self-Similarityも一種の
インクリメンタルな変化といえなくも
ありませんよね。

本家Permlink


2006年05月29日1

このページで度々『コード・レビューは嫌い』
とか『コード・レビューって効果あんの?
(あるわけねぇ)』みたいに書いてますけど。

いや、効果がないわけないですけどね。
OpenBSDの品質の高さはコード・レビューに
よって支えられてるんですよね、確か。
(もちろん、コード・レビューだけじゃない
でしょうけど。)

でもね、まつもとさんだって:

  書籍に載っているサンプルプログラムや、オープンソースソフトウェアのソー
  スコードなど読むことのできるプログラムはたくさんあります。ただ、漠然
  と読むのは難しいですし、興味を維持することができませんから、知りたい
  ことを調べるために読むという目的意識が必要でしょう。

                (『オープンソースマガジン』、『ハッカーズライフ』より)

っていってるわけですよ。

だから、少なくともプログラマじゃない
人がコード・レビューに参加したって
意味ないし (なぜかよくある)、
まったく関係ない人がコード・レビューに
参加したって時間喰うばっかりだし、
そんなにみんなコード読むの好きか?
『仕事だろ?』っていわれたって、
ツマンネーもんはツマンネーし、
ツマンネーから身が入らないし、
だったらペア組んだほうが楽しいじゃん?

てか、ペア・プログラミングしてるのに
そんなにコード・レビューが必要になる
ってのは、何かがおかしいんじゃないか?

オレだってsprintfを目の前で使われて
ても黙ってるしな。気分悪いんだけど。

大体、オレはほんっとにフォーマッティングに
うるさいから。気に喰わないフォーマッティング
見ると気分悪くなる。

if(var)
  ...

とか見ると、『予約語の後ろはスペース
つけるだろ!』とか、そういうのが
気になってしょうがない。だから
レビューなんか真面目にやったら
指摘個所が百や二百じゃ済まねぇっつの。

コード・レビューさせるんなら
せめてまともにコード書いてからに
してくれっつーの。
まぁ、まともに書けたらレビューする
必要なんてそもそもねぇんだろうけど。

--

『sprintfとか使っててもバッファ・
オーバーフローしないじゃん?』

っていうんだろうけど、それはgood
なシステムであってもexcellentな
システムじゃないんだな。
オレが目指してるのはexcellentな
システムで、バグがチョー少ない
システムなんだな。

snprintfを使うことで、そこに意思が
込められる。

『バッファ・オーバーフローなんか起こすか、コノヤロー!』

っていう意思が込められる。そういう
意思の伝わってくるコードが
excellentなシステムであり、
talking programじゃないのかね。

--

とかいいつつ、ソース・コードを読む
ためにプリンタを買う気になってる。
仕事抜きの話なんだけど。

キヤノンもエプソンもGPLあたりで
ドライバを配ってるんだね。知らなかった。

前、ブラザーの評判がよかったのを
覚えてるんだけど、今はどうなんだろ。
4万でPostScriptプリンタってのは
魅力的なんだけど、でも2万でレーザー
ってのも魅力的だ (笑)。
む。ドライバはDebianのパッケージも
用意されてるのか。ポイント高い。

本家Permlink


2006年05月29日

http://www.atmarkit.co.jp/aig/04biz/cellproduction.html

佐藤先生のとこで話題になってたセル生産方式。
書いてあるように、トヨタの多能工の発展形かな。

これ、すでにXPでは取り入れられてますよね。
少なくとも、サインした人物が分析から実装まで
責任を引き受けることになってますから。

本家Permlink


2006年05月28日1

http://www.opengroup.org/openmotif/

知らなんだ。Debianにもいつの間にか
libmotif3なんていうパッケージが用意
されてるし。

lesstifはもうお役御免ですかね。

--

XPE2, ``Baby Steps''より:

  I often ask, "What's the least you could do that is recognizably in
  the right direction" Baby steps do not justify stasis or glacial change.
  Under the right conditions, people and teams can take many small steps
  so rapidly that they appear to be leaping.

  私はしばしば尋ねる。

    『正しい方向に沿っていると知ることのできる範囲内で、あなたができる
    最小限のことは何か?』

  ヨチヨチ歩きは、停滞や氷河のようにのろい変化を肯定するものではない。
  条件が整っていれば、人々とチームは、小さな段階をたくさん踏むことがで
  き、それはあたかも飛び跳ねているように見えるだろう。

焦るな。少しずつ段階を踏んでいこう。
それが結局は光速の開発への一番の
近道なのだから。

本家Permlink


2006年05月28日

こないだ硬い言語のユニット・テストにAOPが
使えるんじゃないかと書いたんですけど、
やっぱり間違いですよね。

--

今から思えば・・・というのはズルイんだけど
今から思えばAntは失敗作なんだな。

makeほど手軽でもないし、rakeほど柔軟でもない。

makeの手軽さは、UNIXが後ろに控えているせい
だから置いとくとしても、柔軟性のなさには
ウンザリさせられる。

それだったら、Groovyでも何でもいいから、
そういうのでrakeみたいなのを作ったほうが
よかった。

結局、Javaの硬さはXMLでは解決できない
ってことだろう。

--

当たり前の話だけど
XPっていうのは悪意が
存在してないことが
前提になってる。

仕様が頻繁に変わっても
納期やスコープなどが
変わらなければ、
そこには悪意がある。

ペア・プログラミングにしても
お互いを監視するという面が
強く出すぎたら息苦しい。

でも、悪意があったら
成立しないのは、どんな
ビジネスでもおなじじゃ
ないだろうか。

悪意にはペナルティで報いる
というやり方もある。
でも、それはコストが非常に
高い。

XPE2の``Real Customer Involvement''より:

  "The sausage factory" is another objection to customer involve-
  ment. "If the customers knew how messed up software development
  was, they'd never trust us." Are you sure they trust your now? Software
  reflects the organization that builds it. The customers are already using
  the software so they already know a lot about how you develop. If they
  don't yet, they will soon. When you act trustworthy and have nothing
  to hide, you are more productive. (Think of all the time you no longer
  have to spend hiding or covering up.) When you are ready with accu-
  rate estimates and low defect rates, including customers in the develop-
  ment process fosters trust and encourages continued improvement.

  顧客の関与については、『ソーセージ工場』という反対意見もある。

    『もしも顧客が、ソフトウェア開発がいかに混乱するものかを知ったら、
    顧客は我々を決して信頼することはないだろう。』

  あなたは今、顧客が自分たちを信頼してると断言できるだろうか? ソフト
  ウェアは、それを構築する組織を写し出す。顧客はすでにそのソフトウェア
  を使っていて、あなたたちがどんなふうに開発しているかをすでによく知っ
  ている。まだ知らなくても、すぐに知るようになるだろう。

  信頼されるように振る舞い、何も隠すことがなければ、あなたはもっと生産
  的になれる。(隠したりするのに一体どのくらい時間を費しているだろうか。) 
  正確な見積もりと低い欠陥率をすでに達成できているなら、顧客を開発プロ
  セスに巻き込み、信頼を育み、継続的な向上を奨励しよう。

本家Permlink


2006年05月27日1

次のコードは、g++ 4.0だと
コンパイルできなくって、
g++ 4.1だとコンパイルできる。
そんなこともあるのか。

g++はなかなか枯れないねぇ (苦笑)。

#include <stdexcept>
#include <string>

class Assert {
public:
    Assert() {}
    virtual ~Assert() {}
    virtual void assert(bool actual, const std::string& what);
};

void
Assert::assert(bool actual, const std::string& what)
{
    if (!actual) throw std::logic_error(what);
}

int
main()
{
    Assert assert;
    assert.assert(false, "oops");
    return 0;
}

--

C++の初歩なんだろうけど:

void doit(string& str) { cout << str << endl; }

だと文字列リテラルを渡せない。つまり:

doit("hello, world");

はエラーになる。でも:

void doit(const string& str) { cout << str << endl; }

とするとエラーにならない。

でも、ちょっと考えてみると
怪しげだ。
だって、引数は参照のはずで、
その実体であるstringオブジェクトは
どこにあるの?

これが参照でなかったら、
オブジェクトが複製されるっていう
のはすぐにもわかるけど。

まぁ、そういう仕様ということで
納得するしかないんだけど。

--

へー、マックなの? ああ、そう、マックなんだ。

--

あれ? ostringstreamにはclose()が
ないっていわれるんだけど?
そんなことある?

今、Dinkumwareで調べたら、
close()は持ってないみたい。
そんなことがあるのか・・・

--

いろんな人がいるんだねぇ。

プログラミングなんて
会社に入る前に基礎は
終わってるもんだと思ってたけど。

まぁ、ここでいう『基礎』っていうのは、
あくまでもプログラミングの初歩のことで、
職業プログラマに必要な『基礎』という
意味じゃないけど。

半年どっかでJava勉強して
職業プログラマになりたい?
しかも26?
頭大丈夫か?

いや、止めはしないけど。
そういうバカは好きだし。

そういうバカを拾ってくれるとこは
確かに東京のほうが多いかもしんない。
まぁ、絶対的な量が違うからね。
トチ狂った会社もそれだけ多いってこった。
オレもそんなとこに拾われたクチだし。

--

よく話が見えてないんですが。

継承は、それが必要になったときに
使えばいいんじゃないですかね。
その『必要なとき』っていうのを
見つける指針の1つが
once and only once (あるいは
DRY) ですよね。

でも、once and only onceは
必ずしもExtract Superclassを
暗示するものじゃありませんよね。
重複を取り除くリファクタリングは
他にもあります。

once and only onceを信用できない
っていう話はたまに見るんですが (笑)、
これは開発の進め方とも
関係してるんじゃないでしょうか。
incremental designだと
どうしても重複が生まれやすく、
だから、それを取り除くのが
比較的重要になると。

最初っからドカンと設計しちゃう
んなら、重複なんて生まれない
でしょうしね。

それに、once and only onceの
一番の目的は再利用じゃないですよね。
再利用は二の次。
『いいたいことを1回だけいう。
0回でもなく、2回でもなく、
ただ1回だけいう』ことで
コードの意図を明白にする。
何にもいわれなければ意図は
伝わりませんし、あちこちで何度も
同じことをいわれても混乱する。
だから、一度だけいう。

再利用は工学的な問題になるかも
しれませんけど、
コードの意図は人間的な問題です。
そして、いつでも自分は
PeopleMatterMostです。

本家Permlink


2006年05月27日

Firefoxでさぁ、*.cとか*.hとかへの
リンクを開こうとすると、
それを開くアプリを聞いてくるじゃん?

あれ、止めてくんねぇかな。

Firefoxで見たいんだけど、それが
できないんだよな。

わけわからん拡張子のヤツだったら
そのまんまFirefoxが開くのにさ。

--

仕様が変わるのはなぜか?
いくつか理由があるが、
理解が深まったから
というのが一番よくある
話ではないだろうか。

理解というのは、通常は、
時間をかけなければ
深まることはない。
そうでなければ、その問題は
非常に単純であるか、
もともと静的なものであるか、
いずれにしても魅力的な
ビジネスのネタにはなりにくい
ものだろう。

ということは、仕様が
変わるということは
避けられないということだ。
避けられないものに対して
いいも悪いもない。
仕様は変わる。それが事実なら、
開発側はそれに合わせるまでだ。

逆に、仕様は変わるという事実を
無視すれば、ビジネスが痛むだろう。

XPでは、先のことは予測できないから
先のことは予測しない。
そして、将来を予測できないのは、
開発側だけの話ではない。
顧客も将来を予測できない。
将来を予測できないから、
理解が深まったときには
仕様を変えなければならない。

ただそれだけだ。

本家Permlink


2006年05月25日

結局、改善のカギは観察しかないんじゃないか。
『気づき』と言い替えてもいいけど、
気づくには観察するのが手っ取り早い。

なぜ年配の人はプロジェクター・スクリーンから
離れて座るんだろう?
イスをワザとスクリーンに近づけておいても、
わざわざイスを動かして離れたところに座る。
老眼だからだ。
じゃあ、それに合わせてイスを並べよう。

違和感、実験、結論、行動。
そんな感じかな。

まぁ、『5回のなぜ』のほうが
直接的ではあるんだけど。
『老眼ですか?』
なんて聞けるかよ (笑)。

本家Permlink


2006年05月24日

やめやめ。自分語りはやらない。

本家Permlink


2006年05月23日

やっぱbashに戻すかも。

いやね、これまでzsh使ってみて
『やっぱzshだぜ!』
みたいに思えたことがなくってね。

逆にM-bとかの挙動とかが
ビミョーに違ったりとか、
『なんでヒストリに残ってないの?』とか、
そういうのがあってね。

オプションの補完もエディタも
使わないんだな、これが。

--

なぜ立って朝会をやるかといえば、
早く終わらせる工夫だ。

PXPより:

  We've found that short daily meetings are invaluable for giving
  everyone an idea of what other people are doing. However the empha-
  sis is on short. If the daily meetings ever start dragging, you'll run into
  trouble.

  我々は、毎日短い会議を開くといいということに気づいた。他の人たちが何
  をやっているかを誰もが知っていることになる。しかし、短いこと
  が肝要だ。毎日の会議が長くなりだしたら、災難に見舞われるだろう。

  (中略)

  The purpose of the stand-up is to communicate problems, not to
  solve them. Keep the meeting brief. The usual stumbling block is when
  somebody says, "I implemented some code to the floop the foobar,"
  some else says, "I did something like that last month," "Oh, I
  needed a triple axel," "You can do that by modifing the config file."
  Suddenly it's on the way to being a long conversation. At this point you
  suggest, "Maybe you should get together this morning and talk about this."
  Anything that requires anything more than a brief announcement
  should be shunted off to another session where only those who are
  interested need to attend.

  起立会議の目的は、問題を伝えることにある。問題を解決することでは
  ない。 
  よくある失敗は、誰かがこういい出す:

    『floopにfoobarっていうコードを実装したんだけど』

  すると他の誰かがこう返す:

    『似たようなことを先月やったよ』

    『おお、オレはトリプル・アクセルが必要なんだ』

    『それなら設定ファイルをいじればいいよ』

  といった具合に突然、長い会話が始まってしまう。ここであなたがいうべ
  きことは:

    『多分、この問題については今朝2人一緒にやったほうがいいんじゃないか』

  だ。
  手短な伝達よりも時間がかかるものは、別の時間に関係者だけを集めてや
  るべきだ。

会議はコードを生まない。

詳細が知りたければペアを
組めばいい。だからペアを
回すことが大事になる。

--

こないだ
『競争心でEnergized Work!』
みたいに書いたんですけど。

でも、競争心の制御は難しい
ってことはよくいわれてて。
どの本で読んだか覚えてないんですけど、
チーム・スポーツにあるレギュラー争い
みたいな競争心は、少なくとも
ソフトウェア開発には相応わしくない
といわれてるんですよね。

で、相応わしいのは
オーケストラやバンドの
メンバ間の競争心だろう
っていわれてるんでしたよね。

たとえば、ジャズのライブで、
ギターが素晴らしいソロを披露したら、
それに負けじとピアノも素晴らしい
演奏をして、その相乗効果で
バンド全体としても素晴らしい
音楽になっていくような。

だから、プロ・スポーツでよくいわれる
ような『仲よし子よしはいらない』って
いうのは、少なくともソフトウェア開発には
相応わしくない。
いや、『仲よし子よしじゃなきゃダメだ!』
っていってるんじゃなしにね。
そんなことを意識する必要はないっていうこと。

でも、仲がいいに越したことはない。
前にも出しましたけど:

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

とか見たらね、『仲よし子よしはいらない』
なんていわないでしょ?

だいたい、『仲は悪くてもプレイは別物』
なんてのは、相当なレベルじゃないと
できない芸当でね。口でいうほど
簡単じゃないよ、そんなもん。
だいたい、1日8時間、5日ぶっ続けで一緒に
いるわけだ、こっちは。
たかだか2、3時間の試合とごっちゃにする
ほうが無理がある (まぁ、スポーツ選手も
練習があるから、もっと長い時間一緒に
いるだろうけど)。

でもね、露骨に競争心を煽ってもいい
場合もあって、
それが競争相手なわけ。
メンバ同士で競争してるわけじゃないでしょ?
競争相手は外にいるでしょ?
YahooだったらGoogleとか、
MSだったらAppleとか、
そういう外部の競争相手だったら、
『負けるかよ、このクソが!』
くらいいっても全然オッケーでしょ。
『アイツらをブッ潰す!』
くらいいってもね。

P.Graham氏の『ハッカーと画家』の
中で、『Lispだったから、競争相手の
新機能をわずか3日で実装できたぜ!』
って自慢してるところがあったでしょ?
ああいう競争心は絶対必要なのね。

本家Permlink


2006年05月22日2

あははは、TKのオカン、サイコーッ!

kamiproで高阪選手の特集が組まれておりまして。
本人のインタビューの他にもご両親の
インタビューなども載っておりまして。
これがもう、笑えるし、泣けるしで、
もうサイコー。

自分の中では日本人のトップは
高坂選手でしたから。
藤田でもなく、小川でもなく、吉田でもなく、サクでもなく、
世界のTKですから。

ここ数年、試合運に恵まれてなくって、
それでいきなり引退ということに
なってしまって。
それでその試合が最高の内容で、
でも負けちゃったんだけど。
でも、やっぱり世界のTKですから。

なにはともあれ、ごくろうさまでした。
あんど、ありがとうございました。

--

なにあれ? コメントしないといけないの?

オレはRubyっていう製品を信頼してるし、
そのRubyを長年に渡って維持してる
まつもとさんを信頼してるし、
そのまつもとさんを助けながら
Rubyを支えている人たちを信頼してるし、
それ以外に何がいる?

--

ああ、K.Beck氏は自分がいいたかった
ことをもっと的確にいってくれてますね:

``Architects''より

  Making big architectural changes in small, safe steps is one of the
  challenges for an XP team.

これがこないだいってた
『時間軸を考慮に入れた設計活動』
ということです。

それと、同じく``Architects''より:

  The architects help choose the most appropriate fracture lines and
  then follow the system as a whole, keeping the big picture in mind as
  the groups focus on their smaller sections.

K.Beck氏の英語は難しくて、
これもよくは理解できてないんですけど:

  アーキテクトが手伝うのは、
  もっとも適切な切れ目を選び、
  システムが全体として大きな絵に
  ハマっているように注意しつつ、
  グループが自分たちの小さな
  セクションに集中できるように
  することだ

といったところでしょう。これが
『刹那的、局所的でありながらも
長期的、大局的視点を忘れない』
ということです。

本家Permlink


2006年05月22日1

なんか最近、つまんないことばっか書いてんな。

本家Permlink


2006年05月22日

プログラミングやりたくて
プログラミングできてないんだったら、
転職するしかねぇじゃん?
そんなもん、迷うまでもない。

大手にいる安定とか引越しとか、バカか?

本家Permlink


2006年05月21日1

xmanpages-jaはあるけどxmanpagesはない。
でも、xmanpages-jaはxmanpagesをsuggestする。

それは置いといて。

XOpenDisplayのmanpageはあっても、
XtOpenDisplayのmanpageがないのが解せない。
xorg-devに入ってると思ったんだけど。

--

Rakefileで:

require 'rake/clean'

CLEAN.include('foo.o foo.so')

とやってハマる。正しくは:

CLEAN.include('foo.o', 'foo.so')

メッセージが:

rm -f foo.o foo.so

って出るから『何で消さないの?』と
悩んだ (笑)。

--

なんかXのフォントがぶっ壊れてる
みたいなんですけど。
Emacs立ち上げると:

Warning: Cannot convert string "-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*" to type FontStruct
Warning: Cannot convert string "-*-helvetica-medium-r-*--*-120-*-*-*-*-iso8859-1" to type FontStruct

なんていうメッセージが出て、
infoマニュアルの見出しとかの
文字がトーフになっちゃう。

xfontselでcourierとかhelveticaを
選ぶと固まるし。

dfontmgrを立ち上げると:

 The font "-adobe-helvetica-medium-r-normal--14-100-100-100-p-76-iso8859-1,
                  -ricoh-ms mincho-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0,
                  -misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0,
                  *-r-*" does not support all the required character sets for the current locale "LC_CTYPE=ja_JP.EUC-JP;LC_NUMERIC=C;LC_TIME=ja_JP.EUC-JP;LC_COLLATE=ja_JP.EUC-JP;LC_MONETARY=ja_JP.EUC-JP;LC_MESSAGES=ja_JP.EUC-JP;LC_PAPER=ja_JP.EUC-JP;LC_NAME=ja_JP.EUC-JP;LC_ADDRESS=ja_JP.EUC-JP;LC_TELEPHONE=ja_JP.EUC-JP;LC_MEASUREMENT=ja_JP.EUC-JP;LC_IDENTIFICATION=ja_JP.EUC-JP"
  (Missing character set "ISO8859-1")
  (Missing character set "JISX0208.1983-0")
  (Missing character set "JISX0201.1976-0")

なんていわれるんですけど。
adobeとかricohとか
なくて当たり前ですよね?
なんか余計なパッケージまで
入れちゃったんですかね?

本家Permlink


2006年05月21日

前にも書いたけど、
トヨタの大野氏が
『ムダの徹底排除』っていってるのは
利潤追求のためだけじゃないわけ。
第一に働きがいを高めるためなわけ。

働きがいっていうのは
つまんないことはやりたくない
っていう単純な話なわけ。

つまり、労働者と企業との
利益が一致してるわけ。
それがMutual Benefitってもんだろ。

だいたい、ソフトウェア開発なんて
コスト下げるには
人を減らすか
時間を減らすか
のどっちかしかないじゃん。
フツーの製造業と違うんだから。
そこへもってきて
『Ix Designerを加えれば
コストが下がります』
ってのはナンセンスじゃん。

だから、Ix Designerが必要だと
いうんなら、それは
『Ix Designerが加われば
素晴らしい製品ができて
ジャンジャン売れますよ、シャチョー!』
っていう話にならないと
ダメじゃん。

だから、何度も書いてるけど、
オレは人のクビを切りたくて
プログラマやってるんじゃないわけ。
新しい価値を生み出して
新しい仕事を生み出すために
プログラマやってるわけ。
Ix Designerの人は違うのかも
しらんけど。

本家Permlink


2006年05月20日1

最近自分の考えが変わったことがあります。
前は『XPはむつかしい』って考えてました。
でも、今では『XPはむつかしくない』と
考えています。

組織を変えるのがむつかしいのは
XPであろうとなかろうと同じです。

でも、XPは自分一人でもはじめられるんだし、
自分一人を変えるんなら、そんなに
むつかしい話じゃないでしょう。

いや、『自分を変えるのだって
むつかしいじゃん!』っていうのは
アリですけど、話の都合上、
今はナシということで (笑)。

だから、XPっていうのは、excellentに
向かう過程のことを指すのだということ。
excellentになった状態のことを
XPというのではなしに。
そう思えば、今が不完全であっても
全然オッケーですよね。問題なのは、
今改善しようとしてるかどうか
ということなんですから。

--

プロレスには『巡業』っていう興行形態が
あるんですけど。地方を転々と回って
各地で試合をやってお金をもらうっていう。

この巡業の道程を決めることを
『コースを切る』というんだそうです。
で、このコースの切り方に上手下手があって、
上手い人だとスムースに移動できたり
するんだそうです。

自分が知りたいのは、この『コースを切る』
っていうことなんです、いってみれば。

どういう順番に実装していけばスムースに
開発が進むのか。時間軸を考慮した開発の
進め方ですね。

これには様々なレベルがあって、
大きくはマイルストーンの設定だったり、
小さくはTDDのToDoリストだったり。

このコースの切り方っていうのは、
XPだとかなり変わってくるんです。
だって、その都度、システムが動かないと
いけないし、しかも、動いたシステムが
価値を生まないとけないんですから。

これまでのやり方でも時間軸を考慮
することはあったんですけど、それは
単にスケジューリング目的でしょ。
そうじゃないんです、自分がいってるのは。
自分がいってるのは設計という活動の
一部として時間軸を考慮に入れたい
ってことなんです。

--

もうコストを下げるための活動とかにはウンザリ。

どうしてそんなビンボーな発想しかできないの?
バブルが弾けてやる気までしぼんじまったの?

価値を生むための活動をしようじゃないか。

Interaction Designerが必要だというのなら、
それがコストを下げるからなんじゃなくって
より価値を生むから必要なんだろう。

もう『負けない発想』にはほんとウンザリ。

競争相手が自分の3倍売ってるってことは、
こっちだってあと3倍売れる可能性があるって
ことだろ?
どんなに市場が飽和してたってだぜ?

戦う前から負けること考えるヤツがいるか! (by 猪木)

# でも、戦う前から負けることを考えるのは大切だけどな (笑)

本家Permlink


2006年05月20日

まず、XPとオブジェクト指向は直接的には関係ない。
ただ、ストーリーという細かい単位で顧客の
要求をさばいたり、リファクタリングしたり
しなきゃいけないから、どうしたってモジュール化の
技術は必要になるけど、それが具体的にOOPである
必要はない。

もちろん、これは歴史を無視した話なんだけど、
XPがSmalltalkerから生まれたという歴史は、
今のXPを実践するのに知っておく必要はない。

『匠の世界』について。
確かに、XPは古き良き実践や慣習を集めて
再構成したものだ。
でも、XPが目指すのはそこじゃない。
スーパー・プログラマを育てるのが目的じゃない。
目指しているのは、あくまでも組織や集団の向上だ。
そのためには、誰か1人がスーパーに育つよりも、
5人、10人のメンバがちょっとでも育つほうが
好ましい。
さらに、この『育つ』という意味は、
単純に生産性を上げるといったものではなく、
『人間的な成長』という意味も含まれる。

本家Permlink


2006年05月19日1

もしあなたが迷っているのなら
XPE2の中からこの言葉を贈ろう。

  Change always starts at home. The only person you can actually
  change is yourself. No matter how functional or dysfunctional your orga-
  nization, you can begin applying XP for yourself.

己を変えることができなければ
組織を変えることなどできはしない。
己を変えることができれば
組織すら変えることができる。

己を変える意思があるのならば、
XPを実践している組織に参加する
ことにも意義がある。
けれども、己を変える意思を持たずに
XPに参加しても、それほど高い効果は
望めない。

本家Permlink


2006年05月19日

XFILESEARCHPATHと似たような環境変数に
XUSERFILESEARCHPATHがある:

$ XUSERFILESEARCHPATH=./%N ./hello

効果は同じようだ。

エンドユーザーはXUSERFILESEARCHPATHを
使えということなのだろう
が、こういうのはXのやりすぎの
一面だろう。
XFILESEARCHPATHだけで済ますほうが単純だ。

ちなみに、X/Cygwinでのリソース・ファイルは
LFのみで改行しなくちゃいけないようだ。
また、リソース・ファイルに記述するパスは:

Hello*exitButton.labelPixmap: c:/cygwin/usr/include/X11/bitmaps/xlogo64

のように指定することができる。
``c:/cygwin''の部分はなくても補完される。

本家Permlink


2006年05月18日1

前から気になってたんだけど、
ケロロ軍曹がいう
『オレのレイヤー』
って、layerの使い方間違ってるよね。

それをいうなら
『オレのレルム』
っていったほうがいいんじゃない?

--

前にも書いたけど、
ユニット・テストは
仕様をコードにする
のだけが目的じゃないわけ。

そんなことがいいたくって
K.Beck氏は1冊の本を書いた
わけじゃない。
それは断言しちゃう。

仕様のコード化なんてのは
ユニット・テストの恩恵の
一部であって、
プログラマにとっては
副作用程度のものにすぎない
っていうのは、さすがに
いいすぎかもしんないけど。

PeopleMatterMostが
信条なら、ユニット・テストの
恩恵として真っ先にあげるのは
自信になる。

これまで自分のやってきたことが
正しくって、
今自分がやってることも
正しくって、
これから先も正しいことを
やれるだろう
っていう自信。

もし、ユニット・テストが
仕様に過ぎないなら、
それは比較的変化が少ない
ものじゃなくっちゃいけない。
でも、大抵はゴールが見えてない
んだから、ユニット・テストですら
揺らぐ。テスト・コードと
モデル・コードが互いに
噛み合うようになっていって、
揺らぎが減っていく。

--

コンパイラがエラー・メッセージを
バラバラッと出したとき、
それをまとめて直す人がいますよね。

自分からすると、なんで1つずつ
潰してコンパイラに通さないか
不思議でしょうがないです。

コンパイラを使うなら、
コンパイラを酷使しないと
意味がない。

そもそも、コンパイラの意義と
いうものを理解してる人が
少ないんじゃないの?
コンパイラを最適化ツールとしてしか
見なしてないんじゃないの?
そんな人にコンパイラ言語なんか
使わせても宝の持ち腐れだし、
C/C++だったら百害あって一理なしでしょ。

本家Permlink


2006年05月18日

カッコを省略できるっていったって
閉じカッコの1個だけじゃん。

--

Xのアプリを作ってるとする。
コマンド名はhello。
Xのアプリ名としてはHello。

そのHelloにリソース・ファイルを
食わせたい。でも、わざわざ
/usr/lib/X11/app-defaults/
に置きたくない。

そんなときは

XFILESEARCHPATH=./%N ./hello

とやれば、カレント・ディレの
リソース・ファイルを読みつつ
Helloが立ち上がる。

%Nの他にも書式はあるらしい
んだけど、今はわからない。

本家Permlink


2006年05月17日3

const char* p;

と

char const* p;

は同じ。でも、const char*のほうがメジャー。

const char* p;

と

char *const p;

は別物。

さらに

const char *const p;

もまた別物。

const char* pは、変えられないオブジェクトを指すポインタ変数。ポインタ
変数に再代入することはできる。文字列リテラルを指すポインタとか、保護し
たいポインタ引数とかに使われる。

char *const pは、変えられないポインタ、だからポインタ定数。定数だから
再代入することはできない。でも、指されているオブジェクトの中身が変わる
ことはある。

const char *const pは、変えられないオブジェクトを指し、かつ変えられな
いポインタ定数。

ちなみに記法は『C++プログラミング言語 第3版』によるもの。

本家Permlink


2006年05月17日2

XPE2の原則でMutual Benefit
というのがありますよね。
これは直接的にはRespectという
価値を反映したものです。

でも、『尊敬』よりも
もっと相応わしい言葉が
日本語にはあるんですよね。

『思いやり』です。

『思いやり』という単語には
ぴったりとした英単語が
ないみたいですね。

辞書で引くと``synpathy''とか
``consideration''とかが出て
くるんですけど。どうも
ニュアンスが違うと自分は
感じます。

そういえば、XPE1のときに
Respectの話で出てきた
エピソードを覚えていますか?
あれにも自分には『思いやり』を
感じました。

--

自分は
このギョーカイに入ってから
今日の今日まで
『仕事がつまらないから
残業しないで早く帰ろう』
と思ったことはないんです。

いや、あったかもしれませんけど
覚えていないくらい少ないです。

これは、自分がXPEとかを読んでから
このギョーカイに入ったと
いうこともあると思いますけどね。

残業しないのは
明日また楽しく仕事をするためです。

その代わり、
8時間なら8時間
全力で走ります。

もちろん、これは理想であって、
ダラダラ残業するときもありますし、
ダラダラ歩くときもありますよ。

本家Permlink


2006年05月17日1

系実践 (corollary practices) の中でも
Pay-Per-Useに1ページほど割いているのは
意外ですね。

そういう意味では残業代もPay-Per-Use
ということになるんですけど (笑)。

--

いやはや。諸君の粘り強さは
賞賛に値するね。

けれども、その粘り強さは
もっと他のことに発揮してほしい。

viは否定しない。でも、そのviは
今のviではないし、viの中でも
最低の部類だろう。

ほんとに、与えられた道具でしか
仕事をしないなんて
私には考えられないことだ。

百万歩譲って、そのviを使うとしてもだ。
なぜリファクタリングしない?
リファクタリングすればタイプ量が減る。

--

エディタにこだわるのは、
我々プログラマの生産性の
多くが量を目安に計られるからだ。

プログラマの生産性は、その価値で決まる。
しかし、それは理想論であって、
価値というものは人によって判断が
異なる。また、金銭に換算することも
難しい。
したがって、ある程度客観的な目安
として量が重要になる。

結局のところ、
クソなエディタで満足してる
プログラマは、ゴミみたいな
量のコードしか書けないか、
ゴミみたいなコードしか書けないか
のどちらかだ。

--

xpe2.html

本家Permlink


2006年05月17日

ほしいことはほしいけど
もうPCに10万以上払う気は
しない。

本家Permlink


2006年05月16日1

Single Code Baseは結構きつい
んですね:

  There is only one code stream. You can develop in a temporary branch,
  but never let it live longer than a few hours.

ほんの数時間でもブランチで
作業することは許されません。

これはほとんど『ブランチを切るな』と
いってるのと同じですよね。
わずか数時間の作業のためにブランチを
切ろうとは思わないでしょう。
せいぜいタグです。

書くものすべてを即座にメイン・
トランクに入れると考えても
いいでしょう。
そうすると、入れるほうも考えないと
いけませんね。

  I couldn't convince the client to even try reducing from seven to
  six versions or adding the next customer as a variation of one of the
  existing versions.

K.Beck氏もそれなりに挫折を味わってる
んでしょうね。

--

XPE2では、Quarterly Cycleという
実践がprimary practicesの1つとして
あげられています。

四半期という期間を選ぶ理由は
2つあって、
1つは四季というサイクルが人間に
馴染んだものだから、
もう1つはビジネスや外部との
調整にとって都合がいいからです。

四半期の立案では次のようなことを
やります:

* ボトルネック、特にチーム外から
  もたらされるものを特定する

* 修理作業 (repair) を始める。

* その四半期のテーマ (群) を計画する。

* そのテーマに沿って四半期の
  ストーリーを選ぶ。

* プロジェクトが組織全体にハマる
  ように大きな絵に集中する。

『テーマ』というのはXPE2で
はじめて出てきた言葉です。
XPE1にもPXPにも出てきません。

(gureppu.rbにバグがあって
正確に調べられないんですけど (笑))

このテーマというのが導入されたのは、
四半期という期間だと、ストーリーと
いう単位では粒度が細かすぎるから
です。

またテーマにはマーケティングなどの
比較的規模の大きい計画を盛り込む
こともできます。

けれども、テーマは、
開発者にとっては
マイルストーンという形を
取ることが多いでしょう。

なぜマイルストーンといわないかは、
上で書いたように、マーケティングなどの
要素もテーマとなりうるからでしょう。

他にも、四半期を通じて行なわれる
プロセス上の実験といったものも
テーマとなりえます。
たとえば、ペア・プログラミングの
導入といったこともテーマとなり
えるでしょう。

--

XPでは、4つの価値と原則が
あるからこそ刹那的、局所的な
行動が可能になります。
価値と原則を無視した行動は
単なる行き当たりばったりです。

これを違った角度から見れば、
長期的、大局的な視点を
しっかり持っているからこそ、
刹那的、局所的な行動を
取れるということです。

たとえば、コードの重複を
見つけたら、それが誰が書いた
コードであろうと、即座に
リファクタリングしてしまう。
非常に刹那的な行動のように
思えても、それが長期的、
大局的な利益と合致している
のだから、ためらう理由はありません。

ストーリーにしても、
その価値がテーマの価値と
合致しているからこそ、迷うこと
なく実装に入れます。

本家Permlink


2006年05月16日

EconomyやEnergized Workの
原動力の1つになるのが
競争心ではないかと考えています。

MSは競争心が旺盛すぎる面が
ありますけど、それでもやはり
稼いでいますし、energizedな
企業の1つであることに
間違いありません。

本家Permlink


2006年05月15日1

野良犬が牙を抜かれたら終わりだぜ

本家Permlink


2006年05月15日

残業代を拒否する仕組みは今の会社には
ないそうだ。
『みんなの迷惑になるから (過少申請は) 止めてくれ』
とまでいわれた。
これ以上書くとクビになるから書かない。
バカでごめんよ。

--

ああ、もちろん、『その代わり基本給を上げてくれ』と
いった条件をつけたわけじゃない。
今の条件のままでいいから残業代はいらない
といっただけ。

本家Permlink


2006年05月14日1

新しいパッケージ入れたときは
rehashを忘れずに、と。

--

お。XPE2にはToyota Production Systemの
話が載ってるんですね。

今読んだのはShrinking Teamsなんですけど。

ただ、これはCorollary Practiceだけあって
試してみる機会は少なそうですけど。

ああ、次にはFive Whysも紹介されてますね
(Root-Cause Analysis)。
トヨタ生産方式の『5回のなぜ』。

--

そういえば、昨日金網のことを
書きましたけど。
ああいうことは、先人がいろいろと
試したんじゃないかと思うんですよね。
トヨタ生産方式がagileで再び
注目されたように、
日本の誰かがすでに解決してる
可能性もあるんじゃないかと
思うんです。
大部屋でのInfomative Workspace
っていう問題を。

本家Permlink


2006年05月14日

こないだの話ですけど、
オープン・ソースの場合、
そうしょっちゅう変更をマージする
っていうわけにはいかないかもしれません。
このあたりは自分は経験がないので
わかりません。

XPE2の``Foreword to the Second Edition''
では、Erich Gamma氏がEclipseで行われている
XPの実践について書いています:

* Testing early, often and automated -- To get a green check mark
  for our latest builds more than 21,000 unit tests have to pass.

* Incremental design -- We invest in the design every day, but we have
  the additional constraint that we need to keep our APIs stable.

* Daily deployment -- Components deploy their code at least once
  per day and develop on top of the deployed code to get immedi-
  ate feedback and to catch problems early.

* Customer involvement -- We are lucky to have an active user com-
  munity that isn't shy and provides us with continuous feedback.
  We listen and do our best to be responsive.

* Continuous integration -- The latest code is built every night. The
  nightly builds provide us with insights about cross-component
  integration problems. Once per week we do an integration build
  where we ensure integrity across all components.

* Short development cycles -- Our cycles are longer than the XP-sug-
  gested one week cycles, but the goals are the same. Each of our six
  week cycles ends in a milestone build which have become the
  heartbeat of our project. The goal of each milestone build is to
  show progress (which keeps us honest) and to deliver it with a
  high enough level of quality that our community can really use it
  and provide feedback (which keeps us even more honest).

* Incremental planning -- After a release we develop an embryonic
  overall plan which we evolve throughout the release cycle. This
  plan is posted on our website early so that our user community
  can join the dialog. The exception is the milestones, which are
  fixed in the first planning iteration since they define the heartbeat
  of our project.

``Short development cycles''のところで
述べられているように、やっぱり
オープン・ソースの場合はサイクルが
長くなるのでしょう。

それと、Eclipseは、おそらくは
半官半民というか、IBMに専従の
開発者が何人かいるはずです。
それを考えたら、他のプロジェクトでは
もっとサイクルが長くなっても
おかしくはないでしょう。

本家Permlink


2006年05月13日2

へー、cygwinの端末でstartxして
xterm上からssh -XでLinuxにログインして
emacsってやるとXのEmacsが
立ち上がるんですね。

自分はskk使ってるんで、
他のやり方で日本語入力できるかまでは
わかりませんけど。

ただ、Ctrl + 左クリックすると
落ちたりしますけどね。

ん〜、やっぱりstone使ってみたいなぁ。
ADSLモデムにルータ機能がついてて、
いろいろ設定してみたんですけど、
どうも外から入れないんですよね。
外から入れればstoneで
いけると思うんですけど。

本家Permlink


2006年05月13日1

いやぁ、テトリスに2つめのボタン(逆回転)
があるなんて知らなかったですよ (笑)。

いや、どっかのゲーセンで見たかも
しれませんけど、今まで使ったことが
なかったですよ。

で、『T-Spinってナニ?』って思って
調べてみると、パターンによっては
この逆回転ボタンを押さないと
ハマらなくって。

すっげーショック。

--

視点といえば、XPE2では
``perspective''
という言葉をよく目にします。

K.Beck氏は、XPE2の原則の1つである
Diversityを語るときに:

  Software development teams where everyone is alike, while comfort-
  able, are not effective. Teams need to bring together a variety of skills,
  attitudes, and perspectives to see problems and pitfalls, to think of mul-
  tiple ways to solve problems, and to implement the solutions. Teams
  need diversity.

と述べています。

Diversityと直接関連する実践
であるWhole Teamでも:

  Include on the team people with all the skills and perspectives necessary
  for the project to succeed.

という記述があります。

--

http://www.ddj.com/dept/architect/187200914

かなり読み飛ばして、
なおかつ結論がよくわからないという。

まぁ、自分はRubyに肩入れしてるんで、
Smalltalkは他人事になっちゃうんですけど。

でも、自分にとってSmalltalkといえば
Squeakであって
他はどうでもいいっていうのはありますよね。
これは自分がオープン・ソースに肩入れしてる
からですけど。
だから、VisualWorksとかが流行っても
全然うれしくない。

さっきもSBPPを取り上げましたけど
Smalltalkがもたらしたものってのは
やっぱり大きいわけで。
知っておいて悪いはずはありません。

そういえば
『実務に使えないSmalltalkとか勧められても』
みたいな話がありましたけど。
そう思うんなら、多分、プログラマに向いて
ないんじゃないかな。
仕事としてしかプログラミングを捉えられない
ならプログラマは辞めたほうがいいでしょう。

そういう話は話半分で聞くものです。
『Haskellいいよ!』
っていわれて、それが実務に使えると
思うわけないでしょ?
でも、『ひょっとして・・・』
って思わないと新しい言語なんて
学べないでしょ?

新しい言語を学ぶとき、
それがメイン・ストリームになってからじゃ
遅いんですよ?

--

歴史を振り返ってみると、
『教育に向いてる』っていうのは
あんまり効果ないのかもしれませんね。

こないだはPascalの話が出ましたけど。

BASICも、もともとは教育用だったのかも
しれませけど、VBなんかにそれは
当てはまらないんじゃないですかね。

本家Permlink


2006年05月13日

きれいなコードを書きたい?

だったら``Smalltalk Best Practice Patterns''を
読みましょう。

自分の感覚だけで『きれい』とか
いってるのはかなりムダ。

何度か書いてますけど、自分は:

int foo() {
    int    i;
    double d;
    ...
}

みたいな書き方は嫌いです。
これを『きれい』という人は多いかも
しれませんけどね。

あと:

int foo() {
    ...

    return result;
}

みたいに、returnの前に空行を空ける
慣習も自分にはよくわかりません。
たぶん、それを『きれい』だと思ってる
人が多いということでしょうけど。

フォーマッティングのことはともかく、
自分の考えでは『きれいなコード』と
いうのは技術であって
それがどんなものかを学べばいい
ということになります。

それを教えてくれるのがSBPPだったり、
『リファクタリング』だったりするわけです。

--

訪問営業のネーチャンに根負けして
B Flet's申し込み。

なんでそんなに熱心なのかね、NTTも。

メタルの電話をIP電話に変えると
全体の出費は抑えられるっていうから
変えたんだけど。

--

ドンキの『圧縮陳列』ってありますよね。

あれ、あんまり評判よくないかもしれ
ませんけど、
狭い空間を最大限に活用しようとする
努力の1つではあるんですよね。

日本みたいな狭いところで、
なおかつ他の部署とも同居するほどの
大部屋で、
どうやってInformative Workspaceを
実現するかってなると
ドンキみたいなやり方もアリなのかな
と。

もちろん、モノを積み上げすぎて
コミュニケーションの障害になるようじゃ
逆効果ですけど。

ただ、地震が怖いんですよね (笑)。

たとえば:

  ○    ○     ○    ○  
■■■■■■ ■■■■■■
■■■■■■ ■■■■■■
  ○    ○     ○    ○  

みたいな配置が多いと思うんですけど。
『■■■』が1つの机、『○』が人間のつもり。

このとき、対面の机との間に金網を
張ってみるっていうのはどう?
金網だから、対面の様子もある程度
見えるし、
何か貼りたかったら貼ればいい。

貼るときは上のほうに貼れば、
思ったほど視界はさえぎられないかも。

もちろん、キュービクルみたいな目的で
使う (つまりコミュニケーションを
遮断するために使う) のは御法度にする。

だったらいっそのこと、金網の形も:

|□□□□|
|□□□□|
|□□□□|
|	 |
|        |

みたいにしちゃうとか。下のほうは空いてて
モノが貼れない。

--

ここ数年の傾向なんですけど
『どうやって優秀な人を集めるか?』
っていうのが話題になることが
ありますよね。

あれ、やっぱりおかしいんですよ。
それって結局、best and brightestの
発想でしょ。

少なくとも自分の目指すところは
そこじゃないわけで。

自分の理想をいえば、
自分たちから優秀な人を外に出したい。

チームのメンバが何か避けられない理由で、
必要とされながらも
チームを離れなければならない場合も
あるでしょう。
そうやって出てった人たちが
『あの人は〜出身の人だから信頼できる』
とかっていってもらえるように
したいんですよね。

それでいて、なおかつチームの損害も
最大限に抑えたいんですけど。

もちろん、優秀な人を集めるのは
大切ですよ。
でも、それが目的じゃない。
自分らが向上することが目的なんです。
自分らが向上すれば、
自ずと優秀な人が集まってくる

というのは理想論ですか?

本家Permlink


2006年05月12日1

http://www.gnu.org/software/xnee/www/index.html

X上のユーザ入力を記録/再生するための
ツールです。

最新バージョンは2.0なんですけど、
これがまだsidに入ってないんです。
2.0になるとGUIのついたgneeという
アプリも用意されてるんですけど。
ただ、いかんせん、2.0の完成度は
低く、それでまだsidに入っていない
のかもしれません。

というわけで、わざわざ2.0を
コンパイルする必要はなさそうです。
自分はやりましたけど、そのために
かなり多くのパッケージを入れる
ことになりました。

ちょっと試してみて、使い勝手が
いいものなら、またここで紹介するか
別にドキュメントにでも書くかも
しれません。

Xの自動化ツールには:

http://hoopajoo.net/projects/xautomation.html

というのもあるんですけど、
ご覧のとおり、開発が滞ってます。

本家Permlink


2006年05月12日

「よんぶんのさん」、覚えてますよ。

自分もときどき「よんぶんのさん」と
唱えるときがあります (マジで)。

(「ついてる」はしょっちゅうです。)

自分が今でも一番好きな麻雀マンガは
ほんまりゅうの「修羅ボタル」です。
これはコミックで持ってたんですけど、
ずいぶん前、引越しのときに捨てちゃい
ました。後悔してます。

同じくほんまりゅうの「麻雀バカ物語」も
好きでしたね。

ほんまりゅうは最近じゃ時代劇コミックの
ほうで活躍してるみたい? まぁ、それは
それで合ってるでしょうね。

--

残業代が出なくっても残業したがる人が多いのに
残業代を出せば、余計に残業する人が増えるでしょう。

本家Permlink


2006年05月11日1

Incremental Deployment。
何度か書いてますけど、
このあたりの経験っていうのが
この業界的に足りない
んじゃないかと自分は思っています。

この話をするときによく引くのが
M.Fowler氏の:

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?cmd=view&p=StranglerApplication&key=vine

なんですけど。

XPE2の中では:

  Find a little piece of functionality or a limited
  data set you can handle right away. Deploy it. You'll have to find a way
  to run both programs in parallel, splitting and merging files or training
  some users to use both programs. This scaffolding, technical or social,
  is the price you pay for insurance.

って書かれてて。
この『両方のプログラムを並列に走らせる方法』の
見つけ方であるとか
『どういう筋道でレガシー・システムを
引退させていくか』とか
そういうことの経験を業界的に
積んでかないといけない。

それなのに華々しく報道されるのは
刷新システムの成功談ばっかり。
ウソクセェっつーんだよ。

--

あれ?
結婚されててお子さんがいるもんだと
思ってましたけど?

それだけでも自分より
『人生の喜び』は知ってますよ。

勉強することが多い?
幸せなことじゃないですか。

というか、どんな仕事でも
勉強することはあるもので、
それを見つけるか
それともシカトするかの
違いじゃないですかね。

インドア?
それはしょうがないっちゃ
しょうがないですけど、
今こうやって回線の向こうには
違う世界に住んでる人がいるわけで、
その世界に生身の自分を送ることは
できませんけど
こうやって文字を送れることはできる。
それはそれで1つのアウトドアと
いうこともできなくはないんじゃないかと。

本家Permlink


2006年05月11日

Dolphin Smalltalkなんてのもありました:

http://www.object-arts.com/content/navigation/home.html

へー、Community Editionなんていう
タダのがあるんですか。

http://www.object-arts.com/content/navigation/products/donations.html

そうか、こっちも結構切実なのねぇ。

本家Permlink


2006年05月10日

Rubyユーザ == DSユーザ

といっても過言ではない。

--

http://www.itmedia.co.jp/enterprise/articles/0603/03/news007.html

コメントありがとうございます。

開発ツール部門の子会社化ってことですかね?

会社の規模を小さくすれば、
結構やってけるのかと思うんですよね。

Allegro Common LispのFranz
REALbasicのREAL Software
EiffelのEiffel Software
Cincom Smalltalk (VisualWorks) のCincom
SuperCardのSolution Etcetera

・・・なんて書いてたら

DylanのFunctional Objectsが会社閉じちゃったみたい:

http://www.functionalobjects.com/shutdown.html

ここから自動的にOpen Dylan (Gwydion Dylan) に飛ばされる。

本家Permlink


2006年05月09日1

XPE2, ``Real Customer Involvement''

  When you act trustworthy and have nothing
  to hide, you are more productive. (Think of all the time you no longer
  have to spend hiding or covering Updike.)

自分はこのページでよく『マリーシア重要』と
書きますけど。
基本は、やっぱり『正直』なんです。

でも、正直だけじゃ、うまくいかなかったり
遠回りになったりするときもあるんです。
そういうときに奥の手としてマリーシアを
使いましょう
っていうことなんですよね。

まぁ、自分も結構イーカゲンで、
いつもいつも正直にやってらんない
ってのもあるんですけど。

本家Permlink


2006年05月09日

assert_equal(expected, actual, message)

と書くわけですが。
expectedを先に書くのは、
そのほうがテスト・ファーストっぽいから
じゃないんですかね?

--

LL Ring、なんかスルーしてましたよ。
Web Ringの類かなんかと思って。

ま、どっちにしろ行きませんけど。

--

Pascal、結構使われてるじゃないですか。
Delphiですけど。
いくらなんでもTurboっていうのはどうでしょう。

そういえば、Borland、開発ツール部門
売っ払うっていう話ありませんでした?

真面目な話、いろいろ理由は考えられますけど。
素人がプログラミングする機会が
減ったのが大きいんですかね。
そういう人はVBとか、HSPとかで
満足できちゃう。

あ、VBは自分は「本格的な開発環境」
だと思ってますよ。あくまでも
世間のイメージはそうなんじゃないか
ってことで。

本家Permlink


2006年05月08日1

ペア・プログラミングをしてみて
いくつかわかったことがあります。

自分は主導権を握ってなくて、
ほぼ『ゴムのアヒルちゃん』状態
なんですけど。

少なくとも、相方は、自分がこれから
何をやるかを話さないといけないわけで、
それはそれで効果はあるんでしょう。

でも、やっぱりそれだけじゃダメ
なんですね。
まぁ、自分の飲み込みが悪いっていう
のもあるんですけど。

まず、みんなタイプが速すぎ。
これは自分も反省しないと
いけないんですけど、
どうもペアを組むとエエカッコしたがりぃ
になりますね。
まぁ、それは悪いことばっかじゃないんですけど。
もっとゆっくり今何をやってるかを
相方に見せたほうがいい。
そうすることで相方が『ワザ』に
気づくチャンスも増えますしね。

それと、これは基本的なことなんですけど、
やっぱりペアの醍醐味は
対話 (dialog) だということ。
何をやろうとするかを伝え、
それについて相手がどう思うかを聞く。
一方通行のコミュニケーションだったら、
それこそゴムのアヒルでも
置いとけばいいて話になります。

その延長線上なんですけど、
みんな仕事を必死にやりすぎ。
いい大人が2人してシカメッ面で
並んでPCに向かって、
ハタから見たらマヌケですよ。
いや、仕事だから真剣さは必要ですけど、
でも、もっと楽しくできないの?
脱線大いに結構じゃないですか。
そういうとこにこそ何かの
ヒントは転がってるもんですよ。

ちょっと話が逸れますけど、K.Beck氏も:

Shared meals and coffee breaks pro-
vide an informal setting for shared reflection.

なんていってますしね。

それと、Todoリスト。
これについては項を改めます。

--

TDDといえばTodoリストですよね?
ね?
書いてます?

自分、プライベートのプログラミングでは
Todoリストを書くようにしてます。
プライベートだと時間がなかなか
取れなくって、何日か間が空いちゃう
ことがありますけど。
そんなとき、Todoリストがあれば、
次に何をやればいいかすぐに思い出せます。

で、ペア・プログラミングなんですけど、
Todoリストを書いてる人っていない
んですよね。
方針を最初に説明してくれる人は
多いんですけど。
でも、そういうのは相方からすると
すぐ忘れちゃうんです。
特に自分なんかは、まだ右も左も
わかってないですから、
すぐ迷子になっちゃいます。
そんなとき、Todoリストがあればなぁ
と思います。

紙でもテキスト・エディタでも
何でもいいと思うんです。
紙のほうがいつでも見れるから
いいかもしれませんけど。
でも、書きやすいのはエディタなんですよね。
ま、そのあたりは好みなのかも。

本家Permlink


2006年05月08日

C2Wiki見てもXPE2の話は
あんまり載ってないんすよね。

いや、これはC2Wikiに限ったことじゃなくって、
Googleで調べてみてもおんなじなんです。

なんでですかね。

いくつか理由はあると思うんですけど。

1つめは、大抵がそうであるように
第二版というのはそれほど多くは
読まれない。

2つめは、人々に受け入れられていない。
自分自身も「XPE2は抽象的すぎる」と
書いてますし、他にもXPE1のほうが
よかったと思ってる人が多いのかも
しれません。

3つめは、すでにXPEという本の役割が
終わった可能性。
まぁ、自分はこれは否定したいですけどね。
XPE1が出てから、様々なアジャイル方法論が
登場しました。
そういうアジャイルもすでに独自の
道を確立しつつあり、もうXPEを
必要としなくなったのかもしれません。

--

Primary Practicesだけですけど:

http://www.threeriversinstitute.org/Toe%20Dipping.pdf

でも、これも自分の記憶とちょっと
違うんですよね。
今手元にコピーがないんで
調べられないんですけど。

本家Permlink


2006年05月07日

Rakeとshell.rbを組み合わせて使うと警告が出る問題。

警告を出しているのはshell/command_processor.rb。

その内容は、『すでに定義されているメソッドを
オーバーライドしますよ』ということ。

なぜオーバーライドするのか。

それはRakeでmkdirやchdirといったメソッドが
すでにObjectに加えられているから。

RakeFileUtilsをトップレベルでインクルード
してるから、多分それ。

まぁ、どっちの言い分もわかりますけどね。
でも、警告はいらないんじゃないでしょうか。
でなければ、$VERBOSEを使うとか。

それと、Debianのsidなんですけど:

/usr/lib/ruby/1.8/shell/filter.rb.bak

なるファイルが入ってしまっています。

--

うわ。彼、まだいたのか。

--

XPE2 ``Getting Started: Conclusion''

  If there is one message I would like to communicate, whatever your job
  title and however your work is touched by software development, it is
  this: software development is capable of much, much more than it is
  currently delivering.
  (中略)
  When we work with human
  nature in our development process, we have the opportunity to make
  these big leaps in effectiveness.


あはは。全然進めなかった。
もちろん、テトリスのせいばっかりじゃないです (笑)。

『まえがき (To Cindee)』に『角に隠れるのは止めたよ』といったことが書い
てあるってのは前に書きましたよね。ヘンな言い方をすると、K.Beck氏、そし
てXPの目指す地平というのは、ソフトウェア開発を超えてるんですよね、多分。

もちろん、チームのやるべきことはソフトウェア開発であることに変わりはな
いんですけど。でも、ほんとに目指しているのは、ソフトウェア開発を通じて
組織、それからそれに属す人々を変えることなんでしょうね。

なんていうんですかね。武道とかでも『鍛錬を通じた人間形成』みたいなこと
いうじゃないですか。そういうのと似てるんでしょうね。

まぁ、こういうことを書くと『ウサン臭ぇ』っていう人も出てくると思うんで
すけど。

何度か書いたことがあると思うんですけど、自分は、ソフトウェア開発ってい
うのは、過去にない新しい仕事だと思ってるんですね。いろんなメタファーが
使われますけど、どれも当てはめにくいし、もちろん建築のメタファーなんて
全然アテになりません。だから、自分もソフトウェア開発にはまだまだ新しい
可能性が隠されてると思うんですよ。で、それを見つけようとしているのがXP
だと。

本家Permlink


2006年05月05日

クッパ、ムカツク。
いや、クッパのBGMなんだけど。

--

やっべー
テトリスだけでゴールデンウィークが終わっちまう。
ちょっとの間、テトリス禁止な。

--

ワイはサルや! テトリスのサルや!

って、シャレならんて。

Level 3 COMにどうにか勝てるようになった。

本家Permlink


2006年05月04日1

LINE 112
Lv. 12

腕なまなますぎ。

つか、あの音楽は反則だよな。
『あ、ゼルダ!』
とか思ってるうちに積み上がってくし (笑)。

--

あ、書き忘れてた。

店でこれ買ってるとき、
ちょうど親子連れが来てさ。
『やりー! あったー!』
ってガキが叫んだんですよ。
何かと思ったらDSなのね。
今だに品薄なのか、何軒か回ったみたいでね。

その『やりー!』を
聞いたとき、任天堂のヤツらが
うらやましかったね、正直。

オレの作るもんなんて
仕事でもプライベートでも
ガキが『やりー!』なんていって
喜んでくれるもんじゃねぇしさ。

こればっかりは仕方ねぇんだけど。
まぁ、任天堂の人にはがんばってもらいたいもんだ。

--

LINE 133
LV. 14
SCORE 128914

--

LINE 151
LV. 16
SCORE 147888

--

ちょっと聞いていい?

キャッチっておもろいの?

これ、おもろいゆー人は、よっぽどの遊びの天才やで。

本家Permlink


2006年05月04日

『中小企業のIT化』だと?
バカか?
そんなのは結果であって目的であるはずがない。

テクノロジーというのは万人に
向けたものであるべきだ。
まぁ、そうでないテクノロジーもあるが、
そういうのは無視していい。
なぜなら、我々は社会をテクノロジーで
変えることを目的としているのであり、
それはすなわち万人に向けた
テクノロジーを発明するということに
外ならない。

その結果、中小企業もそれに
巻き込まれるというだけのこと。

Googleを見てみろよ。
彼らが『中小企業のために!』
などといってるか?
彼らはあくまでもテクノロジー至上主義だ。
それでいながら、中小企業や個人が
Googleを便利に利用している。

『中小企業のIT化』なんていってるんじゃあ
ビジネス1.0だぜ。
頭わりぃいんだよ、このタコ!

--

ああ、上の『我々』というのは
プログラマという意味じゃない。
つまり、あなたは『我々』には
入らないかもしれない。
『我々』に入る人は、自分が入っていることを
知っている。

--

ああ、つけ加えておくと
『我々』という言葉に
選民意識というものはない。
『志を同じくする者たち』という
意味だけだ。

それはどんな職業に就いてる
者であっても、多少は持っている
ものだ。

たとえば、プロ野球選手なら
野球を通じて社会がより
豊かになることを念じているだろうし、
八百屋のおっちゃんだって
野菜を売ることで地域社会に
貢献したいと願っているはずだ。

--

つかさ、ショップのホムペで
ダッセー地図なんか載っけてねーで
Googleマップ使ってくれ。
いや、Googleマップじゃなくってもいいけど、
とにかく自前の画像ファイルなんか
見せられた日にゃ
わざわざショップに行こうなんて
気も失せる。
Googleマップの類がいいのは
ズームがあるとこ。それだけで
ただの.jpgよりだいぶマシだ。

だいたい、ショップのほうも自分とこの
名前が勝手にGoogleマップとかに
登録されてるなんて思ってもいない
んじゃないか?
一度住所で検索してみるといい。

本家Permlink


2006年05月03日3

すでに察しておられると思いますが
自分を取り巻く環境が激変したもので。
しばらくオフ会の類には出れません。

誠に申し訳ありません。

--

武田惣角ゆーたら、メチャメチャ有名じゃないですか。
津本陽が書いてたのか。知らなかった。

たまにここで書く大東流柔術・合気柔術の
佐川先生 (故人) は武田惣角の直弟子です。

--

ぐえ。kkosさんて小迫さんでしたか。
全然気づかなかった。

--

あれ?

こないだはすぐ消したんですけど
名前出してよかったんですか?

最近の人は知らないかもしれませんけど
まだhostlinksがHotLinksだったころ
伝説の日記がありまして
その名も『ブチキレ新聞』。

内容のほうはご想像にお任せしますけど
自分はそれの大ファンでして
それがいつの間にか閉鎖されて
非常にさみしい思いをしたものです。

そして日が経つこと幾星霜。
Railsの隆盛とともに突如現れた
謎のページが『くまくまー!』。

どこかで読んだ覚えのある文章
もしかして・・・
whois
ああ、感動の再会が!

ぽっちゃり号は元気ですか?

http://wota.jp/worker/

--

ここの読者の
ごくごく一部にミステリ・ファンが
いると思うんですけど
近代麻雀というマンガ雑誌に
我孫子武丸原作のマンガが
連載されてるんすよ。

ちょっとお知らせするのが
遅くなっちゃて
もう5回くらい続いてるかも。
短期集中連載!っていうフレコミ
だったはずなんですけど
どうやら好評のようで
連載延長ギミ。

近代麻雀は毎月1日、15日の
月2回発行です。

自分は近代麻雀オリジナルは
読んでなかったんですけど、
近代麻雀で好評連載中のコラム、
『東大を出たけれど』が
マンガ化されるようで。
6/8はちょっと立ち読んでみようかと。

--

ああそう、そう来る?

じゃあ、オレもテトリスDS買うよ!

ゲーセンでクリアしたのはテトリスくらいしかない。
ヘボヘボだからすっげー時間かかったけど。

--

やめ。気分わるい。

一言いっとくと、ドリコムには乗れないってこった。

--

あれ?
diff -bのこと、前に書いてませんでしたか?

rubyのソース・コードを写してるって話は
書きましたよね?

そのとき、写し間違っていないかどうかを
調べるのに -b を使って比較してます。

具体的に書くと

Emacsを80x49で開く。

C-x 2

上のウィンドウにオリジナル。

下のウィンドウに書き写すファイル。

書き写すほうのバッファにタイムスタンプなどを入れる。

10分程度書き写す。ガーッと。

時間が来たら

$ diff -ub original.rb copy.rb | head -20

みたいにやって、適宜修正する。

タイムスタンプを入れる。

タイムスタンプの形式は:

/* 2006-04-30 (Sun) 20:17:49 L1373, 2006-04-30 (Sun) 20:29:56 L1494 */

こんな感じ。

-b を使うのはもちろんスペース幅を
気にしないで済むから。

写すといっても:

/*
 *  call-seq:
 *     hsh.merge!(other_hash)                                 => hsh
 *     hsh.update(other_hash)                                 => hsh
 *     hsh.merge!(other_hash){|key, oldval, newval| block}    => hsh
 *     hsh.update(other_hash){|key, oldval, newval| block}    => hsh

こんなのを真面目に書き写すことはありません。

/*
 *  call-seq:
 *     hsh.merge!(other_hash)  => hsh
 *     hsh.update(other_hash)  => hsh
 *     hsh.merge!(other_hash){|key, oldval, newval| block}  => hsh
 *     hsh.update(other_hash){|key, oldval, newval| block}  => hsh

みたいに。

(なぜ * のあとに空白が2つなのか今だに不思議なんですけど)

だから -b を使います。

ある程度スペース幅を合わせるのは
diffしたときに見やすいからです。

ああ、上のやり方は自分には都合いいものですけど、
他の人には不便かもしれません。
上のやり方は少なくとも:

(global-set-key "\C-q" 'scroll-n-lines-down)
(global-set-key "\C-z" 'scroll-n-lines-up)

(defun scroll-n-lines-down (&optional n)
  "Scroll down N lines (1 by default)."
  (interactive "P")
  (scroll-down (prefix-numeric-value n)))

(defun scroll-n-lines-up (&optional n)
  "Scroll up N lines (1 by default)."
  (interactive "P")
  (scroll-up (prefix-numeric-value n)))

といった支援があったほうがいいです。
(これは『GNU Emacs拡張ガイド』からのパクリ)

でなければ、C-x 2 を使わずに素直に
C-x 5 2 で同じサイズのフレームを
開くとか、同じサイズのEmacsを2つ
立ち上げるほうがいいでしょうね。

それと:

(global-set-key "\M-u" 'upcase-backward)

(defun upcase-backward ()
  "upcase one word (includs underscore) backward."
  (interactive)
  (save-excursion
    (save-match-data
      (let ((current (point)))
	(re-search-backward "[^A-Za-z0-9_]\\|^")
	(upcase-region (point) current)))))

これも全然話題になんないんですけど
自分には必須です。
タイプしてから大文字に変えるというヤツです。
これがなければ、
C-M-b M-u
しなきゃいけなくって、しかも M-u を
何度も押さないといけません。

前にもチラッと書きましたけど、
タイムスタンプを入れるのは統計を取るためです。
今の結果は:

TOTAL: 10.449086 lines/min
./1.8.2/bignum.c:11.092199 lines/min
./1.8.2/class.c:10.614583 lines/min
./1.8.2/compar.c:6.250000 lines/min
./1.8.2/dir.c:8.339080 lines/min
./1.8.2/dln.c:9.485714 lines/min
./1.8.2/enum.c:9.435644 lines/min
./1.8.2/error.c:12.067797 lines/min
./1.8.2/eval.c:10.451015 lines/min
./1.8.2/file.c:11.973386 lines/min
./1.8.3/gc.c:9.391007 lines/min
./hash.c:10.783055 lines/min

こんなところ。

本家Permlink


2006年05月03日2

勘違い。
いや、勘違いじゃなかった。

require 'shell'

sh = Shell.cd('.')
sh.echo('hello') >'hello'
sh.echo('world') >>'hello'

これで、worldのほうが出力されません。

ちょっと前までは追加出力は
できてたと思うんですけど。

今はsargeからsidから1.9までダメですね。

あと、Rakefileでrequire 'shell'すると
大量に出る警告も消してほしいんですけど。
あれが出ちゃうとrakeのメッセージが
かき消されちゃいます。

本家Permlink


2006年05月03日1

http://d.hatena.ne.jp/tokuhirom/

逆に尋ねると
まさか自分の愛車とかに名前をつけてないの?
オレはつけてるよ。
デメテル号。
ママチャリだけどな。

・・・

いや、それって『必要ない』じゃなくって
『やってる』っていうことでしょ?

だってM.Fowler氏は:

  (継続的インテグレーションの) 満たすべき基準は簡単だ:「だれでも、真っ
  新なマシンを一台用意して、ネットワークにつなげば、後は開発中のシステ
  ムのビルドに必要な最新のソースファイルの全てをコマンド一発で呼び出せ
  る。」これである。

っていってるわけでしょ。
これができてれば、そのプロジェクトは
継続的インテグレーションをやってると。

CVSでいえば、メイン・トランク?
そこからcoして、変更して、テストが通れば即座に
メイン・トランクにciする。

それができてれば、継続的インテグレーション
なんじゃないですか。

コンパイラ言語かどうかは関係ないでしょう。

逆を考えると『継続的でないインテグレーション』
っていうのは、
たとえば、リリース前になって大規模なマージを
するとかでしょう。
そうでなくても、1週間に一度しか
変更をマージしないとか。

ああ、ただ、K.Beck氏は:

  Integrate and build a complete product. If the goal is to burn a
  CD, burn a CD. If the goal is to deploy a web site, deploy a web site,
  even if it is to a test environment. Continuous integration should be
  complete enough that the eventual first deployment of the system is
  no big deal.

っていってますけどね。
CDを焼けと。あるいは実際に配備しろと。

本家Permlink


2006年05月03日

ちょっとPerlをかじってるんですけど。
やっぱり、奇妙すぎますよね。

どんな言語でも奇妙なところってのは
持ってるもんですけど、
ちょっとPerlは度が過ぎてるというか。

C (あるいはAlgol) 系統でもなく
もちろんLisp系統でもなく
まさにPerlとしかいいようがない。

ちょっとワザとらしい例ですけど:

@array = (1,2,3);
$ref = \@array;
for (0..$#$ref) {
  print "$_\n";
}

とか。

ファイルの終わりに 1; を書かないと
エラーになるとか。

もちろん、@_とかもそうですけど。

そういう、よく使われるところで
奇妙なところが目立つんですよね。

本家Permlink


2006年05月02日

メール、転送されるように直しました。
なんのことはない、main.cfの中で
lostway.orgをjitu.orgに書き換えて
なかったというオチでした。
すっげぇ焦って、アレコレ試したんですけど、
原因がわかってヤレヤレです。

本家Permlink


2006年05月01日

不当差別だ!

irb(main):001:0> 'abc'.index('b')
=> 1
irb(main):002:0> $&
=> nil
irb(main):003:0> 'abc'.index(/b/)
=> 1
irb(main):004:0> $&
=> "b"

--

W-ZERO3を買おうかと思ってるんですけど。

前、『ケータイの料金全然下がってねぇ!』
って書いたら『そんなこんたぁねぇよ』
って叱られたんですけど。

でも、改めてカタログとか見てると
やっぱり安くなってないですよね。

http://w-zero3.oshietekun.net/index.php?FAQ#vb796da1

ここでオススメされてるのが月5,000円。
で、もうちょい安いヤツだと
従量制ギミで最低3,900円で最高6,700円。

まぁ、メールとか通話とかコミだから
相対的な値段は下がってる
とはいえるんでしょうけど
やっぱり出てくのは絶対的な金額ですから。

ズバリいって努力が足らんですよ。
個人的な感覚でいえば全部込みで
3,000円切ってくれないと。
だって、他に自宅のADSLとかも
払ってるわけですよ。
通信費用にそんなにカネかけらんねぇ
ですよ。自分、ビンボーですから。

--

rakeって賢いですね。カレント・ディレクトリから
上にたどってRakefileを見つけてくれるんですから。

たとえば:

~/test/ruby% ls -F
Rakefile  d1/

というとき:

~/test/ruby% cd d1/d2

で下のディレクトリに潜っても:

~/test/ruby/d1/d2% rake
(in /home/mcd/test/ruby)
true

とできる。

これはテスト・スクリプトをサブディレクトリに
まとめているときに便利です。
とりあえずプロジェクト・ディレクトリのどこかに
いれば、つまり、何かソース・ファイルを
開いていれば
M-! rake
でテストが実行できます。

本家Permlink


Copyright © 1905 tko at jitu.org

バカが征く on Rails