Index: [Article Count Order] [Thread]

Date:  Wed, 22 Mar 2000 18:06:57 +0900
From:  firo <firo@....jp>
Subject:  [XP-jp:00051] Re: Sec1-Chap9 Back to Basics
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <00Mar22.180736jst.115202@....jp>
References:  <B4F93894.8A5%khosokawa@....com>
Posted:  Wed, 22 Mar 2000 18:07:34 +0900
X-Mail-Count: 00051

矢崎です。かなり亀レスです。ごめんなさい(^^;;;

Kaoru Hosokawaさん wrote:

>
> > ”車の運転を学ぶこと(Lerning to Drive)”、4つのValue、両手いっぱ
> > いのPrincipleを学んできたので、もう、ソフトウエア開発のDiscipline
> > の開発をスタートさせるための準備はできている。まずはスコープを
> > 決めるところから始めよう。システム開発には、4つの基本的な
> > Activityがある。それはCoding、Testing、Listening、Designingである。
> >
>
> 「value」は、「価値観」と訳した方がいいと思います。プログラマーのせいか
> 「value」と書いてあると「値」と読んでしまいます。第七章で話が出ますが、XPの
> 4つの価値観は、「Communication, Simplicity, Feedback and Courage」ですね。
>

そうですね。意味的には「価値観」でOKだと思います。ただ私としては、
基本的な用語(名詞)については、原著そのままにしておきたいという気
持ちがあります。絶対的にそれにこだわるわけではありませんが。。。

というわけで、しばらくはValueとさせてください。もし、このMLで「価値観」
という言葉が市民権を得たら、そちらに変えたいと思います。

>
> まったくその通りだと思います。しかし、単体テストの枠組みを作るのはおっくうで
> はないでしょうか?「クラスの単体テストを行うために、このクラスを使用するクラ
> スを書いてからテストしよう。」 とどんどん先送りしていませんか?
>

JUnitはダウンロードしたのですが、まだ本格的には使っていません。
確かにJUnitを使っても、実際のテストのロジックはコーディングしな
ければならないので、簡単にテストができるようになるというイメージ
は、まだ私にはありません。

テストをできるだけ複雑にしないために、「Simlicity」(つまり、その
時点で必要な機能だけを開発する、ことで、都度のテストケースの数
を減らす)ということなのかもしれませんが、果たして、そううまくいくの
かどうか、、、これは実際にやってみないとわからないですね。

>
> ここでは、「局所的なコードの書き直しだけではなく、全体的に構造が変だったらな
> おしましょう。」といってますよね?安定したシステムだったらいいですけど、なか
> なか開発途中で全体の設計を変更するには勇気がいりますよね。
>

その勇気と、それができるようになるためのPracticeが必要なのでしょうね。
Practiceとしては、Refactoringがその代表なのでしょうが、これも実際にやってみ
ないと、なんとも評価ができません。

>
>
> ちょっと気になるのは、XPでは、「Documenting」が基本の一つになっていないこと
> です。私の言っている「Documenting」は、ソースコードの文書化と製品の文書化で
> す。ソースコードの文書化とは、コメントを書く、機能仕様書を書くと言う事です。
> 製品の文書化は、ヘルプとかユーザーズガイドを書くことです。XPでは、これらをい
> つ行うのでしょうか?必要無いのでしょうか?スコープ外にして楽な問題を解いてい
> るのでしょうか(ちょっといじわるな質問)?
>

私の現時点での考えを述べます。

まずプログラミングそのものには直接関係しない、ユーザーズガイドは、
まったくの対象外でしょうね。当然プロジェクトの最終製品の1つには
ちがいないのですが、XPではその部分はまったくかやの外でしょう。

プログラミングに関する「Document」については、あくまでも私の想像で
すが、XPではコードのみが最終のDocumentであると考えているので
はないでしょうか?コード以外のDocumentは、補足的に作成されるこ
とはあっても、必須ではないし、あるいは不要になったら捨ててもよいと
考えられていると思います。

例えば、XPなFowler氏は、この前行われた日本講演(お題はUMLと
アナリシス・パターンです)で、次のようなことを言っていました。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(講演の話やファウラー氏の著作によれば、全てをインタラクション図
で表現するとは考えないということですが、表現しない部分はどうする
のですか?という会場からの質問に対して)プログラムコードで表して
十分なところは、インタラクション図を描く必要はない。そのまま(プロ
グラムコード)でよい。インタラクション図は有効な方法だが、やたらと
使いまくることはしないほうがよい。たくさんドキュメントを書けばいいと
いうものではない。大切なことはコミュニケーションであり、そのために
必要なものだけを作成すればよい。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

また、彼の著書「UMLモデリングのエッセンス」の日本語訳では、

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(134ページ)
「これらの図(矢崎注:シーケンス図やコラボレーション図のこと)は芸術
作品である必要はありません。私はよく紙切れや小さなホワイトボードに
大まかに描いてしまいます。クラスの振る舞いを明確にするのに役立つの
で、その図を最新の状態に保つ価値がある、と思うときだけ、ドローツール
(やCASEツール)を使って図を書き直します。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

とか、
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(143ページ)
「実際には私は、相互作用のだいたいの形を作るため、ふつうはシーケンス
図を使い、コードを書きながら変更を加えます。相互作用が重要な場合は、
文書の一部としてシーケンス図を更新します。シーケンス図があってもコード
がさらに明確にならないと思うときは、ファイルキャビネットにそのラフなシー
ケンス図をファイルしてしまい込んでしまいます。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
とか、書いています。

また、Fowler著「Refactoring」では、コメントが必要なのは、そのメソッドが長す
ぎるからで、コメントがいらないようにメソッドを小さくしろ、というような指針が
書かれてあったような記憶があります。

実は、私は、今この考えにはまっているのですね。。(^^)

--
矢崎博英  firo@....jp