Date:  Wed, 08 Dec 2004 15:21:31 +0900
Subject:  【オブジェクト倶楽部: 2004-45号】

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.73 2004/12/08

■ I N D E X
┃
┣【Topics】クリスマスイベント、いよいよ明日です!
┣【Topics】UMLモデリングツールJUDE 発売記念キャンペーンもうすぐ終了です
┣【書評】新着紹介!『プログラマの「本懐」』
┣【XP】継続的結合 再入門[2]
┗【アンケート】気になるシステム業界 ホントのところ

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇  クリスマスイベント、いよいよ明日です!
  〇 〇━━━━━━━━━━━━━ ━━・ 

待ちに待った、クリスマスイベント!いよいよ明日開催です。心の準備は良い
ですか?リハーサル、シミュレーションと、色々準備をしてきた中、今回はす
ごいことになるんじゃないかとスタッフ一同ドキドキしています。なお、ライ
トニングトークス開催時間を少々変更させていただきました。ご確認ください。
http://www.objectclub.jp/event/2004christmas/detail
また、会場が広くなっておりますので、お早めにお越しください。参宮橋駅か
らお越しになると、看板案内が多いので、迷いにくいと思いますよ。交通案内
はこちらです。http://www.nyc.go.jp/users/d7.html

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇  UMLモデリングツールJUDE 発売記念キャンペーンもうすぐ終了です
  〇 〇━━━━━━━━━━━━━ ━━・ 

JUDE/Professionalの発売記念キャンペーンも、残すところあと13日となりまし
た。お見逃しなく!
詳細はこちら:https://www.esm.jp/jude-web/index.html
              https://www.esm.jp/jude-web/shopping/campaign.html

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【書評】新着紹介!『プログラマの「本懐」』

● 書名: プログラマの「本懐」
     −アーキテクトという選択−
● 著者名:山本 啓二
● 発行: 日経BP
http://www.amazon.co.jp/exec/obidos/ASIN/4822282082/xpjp-22/

久しぶりに、私の中でヒットした本です。3つの点で大推薦します。

・新鮮(旬)である。

システム開発の中で、PMやプログラマでなく「アーキテクト」というロールに
明確に焦点をあて、最近のアーキテクチャ(J2EE)、最近のプロセス(RUP/XP)、
最近の手法(フレームワーク/TDD)上でこのロールをもったエンジニアがどう
振舞うべきか、が書かれています。この読者対象への本は今までなかった!

・実践的である。

上記内容が、筆者の経験からとても実践的に書かれています。会話形式のエピ
ソードも、なまなましさをもって響きます。これまでにアーキテクト的な仕事
をしたことがある人は、強烈なデジャブに襲われるかもしれません。

・メッセージ性をもっている。

一般論や正論の本はたくさんあります。しかし、この本では、あえて反対者も
いるであろうことを、著者の視点で鋭く書いています。読んでいて、スリリン
グです。著者のパッションを感じます。

とくに、私がはっとした部分を引用します。

 「メンバーのレベルにあったアーキテクチャを作る」

どうです?とても実践的でしょう。アーキテクトの仕事が、技術への興味だけ
ではできない、という著者のメッセージが伝わります。テストに関しても、

 「ユニットテストはツールを利用して開発のリズムに取り込む」
 「テストは開発の暗闇を照らしてくれる灯台となる」

そして、この本で私は始めて「品質」「スコープ」「納期」「コスト」の4変数
の関係を見つけました。

  品質×スコープ
  ─────── = コスト
    納期

著者の山本さんに聞いたところ、この式は、オリジナルとのこと。「だいたい
こんな感じと思っている」そうです。すごい。

    *     *     *

知識とスキルを持った人が、経験を積んで到達できる場所、それがアーキテク
トだなぁ、と思いました。(平鍋)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/cgi-bin/question.cgi?A001+7+0
普通:
http://www.ObjectClub.jp/cgi-bin/question.cgi?A001+7+1
イマイチ:
http://www.ObjectClub.jp/cgi-bin/question.cgi?A001+7+2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【XP】継続的結合 再入門[2]

■はじめに

めっきり寒くなり、体調を崩す人も増えてきました。と書くつもりでしたが、
日曜日(12/5)は東京では25度を越したポカポカのお天気でした。しかし思いも
よらぬ強風で、公園に娘と散歩に出ても突風に体がもっていかれそうでした。
ソフトウェア開発も突風に飛ばされないように、しっかりと根をはっておかな
ければなりませんね。
 
前回は継続的結合(CI;Continuous Integration)の概要についての説明をしまし
た。今回はCIの種類についてお話します。

■継続的結合は自動と手動に分かれる

CIという言葉がいつ使われはじめたのか正確にはわかりませんが、Kent Beckの
最初のXP本(以降白本)では、以下の定義をしています。

 ・ 自動テストスイートが用意されている
 ・ 数時間おきにテストされる(最大でも1日以内に)
 ・ 結合専用マシンを用意する
 ・ 結合は専用マシン上で、コードを持ったペアの手によって行われる

白本では、CIの実行タイミングは手動で行うものとしており、別段実行の自動
化の必要を問いているわけではありません。自動実行によるCIはMartin Fowler
の論文(Continuous Integration) ^1 が最初であると記憶しています。この論
文の中で紹介されている自動実行のシステムが、後に CruiseControl ^2 とし
て公開されることになります。

現在は、CruiseControl以外にも、自動実行によるビルド&テストをサポートす
るツールも増えており、自動実行化されたCIを実現しやすい環境が整ってきて
います。最近では「継続的結合」という言葉には、「実行も自動化された」と
いう意味を含んでいると思われがちですが、実際にはそうでないことに注意し
てください。ではCIは必然的に自動実行化するべきなのでしょうか?筆者の結
論は「必ずしも自動にするべきではない」という結論に至っています。その理
由を語る前に実行の手動と自動それぞれのメリット/デメリットを見ていきま
しょう。

■手動実行によるCIのメリット/デメリット

手動実行によるCIは一見、自動に比べて手間がかかるだけで、効果が薄いよう
な印象を与えます。しかし実際はそうではありません。

▲メリット

 ・ 実は言葉通りの「継続的結合」に近い作業を実施できる
     □ 手動実行によるCIでは、スケジューリングではなく、結合が必要になっ
        た時即座に結合を開始することができます。必要なのは結合マシンの前
        にいき、結合処理実施のボタンを押すだけです。 ^3

 ・ 問題が発生した場合に迅速に対応できる
     □ 手動実行で結合する関係上、問題が発生した場合には即座に対応する
        ことができます。
 ・ 「結合している」感を感じることができる
     □ 自分の手で全コードのビルド、テストの実施と結果を見ることになる
        ため、「結合している」感が強くなります。その反面、結合に失敗し
        たときの「あちゃー」感も倍増します。
 ・ 簡単に実施できる
     □ 結合マシンと実行環境さえ整えば ^4 自動ツールの設定をしなくとも
        すぐにCIを開始することができます。

▲デメリット

 ・ 結合待ち行列が生まれてしまう
     □ 同時に複数の開発者が結合をしたい場合には、結合マシンの前で待ち行
        列が発生してしまいます。
 ・ 遠隔地での結合ができない
     □ 当然ですが遠隔地開発では結合マシンの前に必ずしもいけるとは限りま
        せん。
 ・ 結合自体に時間がかかると回らない
     □ 結合処理に1時間、2時間などの時間がかかる場合には、待ち行列が消
        化できずに結合がうまく回りません。

次に自動実行によるCIのメリット/デメリットを見ていきましょう。

■自動実行によるCIのメリット/デメリット

自動実行によるCIはツールを使用して、スケジューリングやビルド、テストの
実行を自動化します。代表的なツールがCruiseControlです。

▲メリット

 ・ 結合作業を意識することなく実現できる
     □ 自動実行によるCIは一定のスケジューリングに基いてリポジトリより
        最新のプロジェクトを取り出して結合作業を実行します。このため、
        開発者が特に意識せずとも常に結合された状態になります。
 ・ 結合待ち行列が発生しない
     □ 手動と異なり結合マシンに対する待ち行列は発生しません
 ・ 分散開発でも結合が容易
     □ 自動実行によるCIは距離の差を意識する必要がありません
 ・ 結合自体に時間がかかってしまっても影響がでない
     □ 結合処理自体に時間がかかるような場合でも、結合のインターバルを
        結合処理時間より多くとっておけば問題は発生しません。

▲デメリット

 ・ 複数の変更点が同時に結合されてしまう
     □ スケジューリングによる実行は複数の変更点をまとめて結合します。
        もし問題が発生した場合には問題の特定が困難になる可能性があります。
 ・ 自動実行化の設定コストがかかる
     □ 自動実行によるCIは、事前になんらかのツールの設定が必要です。そ
        の分の時間を見積っておく必要があります。
 ・ 問題がすぐに解決されない恐れがある
     □ 自動実行よるCIは結合結果をWebベースやメールなどで通知します。そ
        のため作業に集中している開発者が、結合結果に気づくのが遅れる可能
        性があります。

■どちらを使うべきか?

ここまで手動と自動のそれぞれの実行方式のメリット/デメリットについて見て
きました。最初の結論のところで「必ずしも自動にするべきではない」と書い
た意図は、その両者の性質によります。手動実行によるCIは、すぐに始められ、
結合作業を実施しているという感覚が自動に比べて強くなります。そのために、
「テスト→コーディング→結合実施→OK」という手順を体感していくことで、
開発のリズムが体にしみついてきます。また自分の手で結合作業を実施するた
め、失敗した時に素早いフィードバックが可能になります。

一方自動実行によるCIは、ツール類の設定が必要なため、若干敷居が高いと言
えます。一度設定してしまえば、意識せずとも結合を実行してくれます。逆に
結合しているという意識が薄くなるということも言えます。また結果の通知手
段によっては、問題に対する対応も遅れがちになります。手動実行に比べて素
早いフィードバックを得ることができません。 ^5 その代り、分散開発では手
動実行と比べて一日の長があると言えます。^6

両者のメリット/デメリットを見ていくと、結合作業を自動化できるからといっ
ても、必ずしも自動化が最良の方法とは言えないわけです。CIでも「見える化」
(更に言うと「感じる化」)は必要なのです。筆者はプロジェクトの性質に応じ
て継続的結合の方法を使いわけることを提案していきたいと考えています。

■まとめと次回の予告

今回はCIの2種類の方法、手動実行によるCIと自動実行によるCIについての概
要を説明し、それぞれのメリット/デメリットについて説明しました。プロジェ
クトの性質に応じて手動実行と自動実行を使いわけることが必要であると結論
づけました。次回は、実際にどのプロジェクトにどの結合方法が適しているか
を、例を通じて示していく予定です。(懸田)
 
 [1] http://www.objectclub.jp/community/XP-jp/xp_relate/cont-j#n77
 
 [2] http://cruisecontrol.sf.net/
 
 [3] もちろん事前に準備をしておかねばなりませんが
 
 [4] 自動ビルドやテストは結合の如何に関らず設定することになります
 
 [5] 素早いフィードバックを得るためにはeXtreme Feedback Device(XFD)を使
     用するのも手です
 
 [6] http://www.andore.com/money/trans/agileOffshore_ja.html
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/cgi-bin/question.cgi?G002+1+0
普通:
http://www.ObjectClub.jp/cgi-bin/question.cgi?G002+1+1
イマイチ:
http://www.ObjectClub.jp/cgi-bin/question.cgi?G002+1+2
 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━3 r d ■━
■
┗【アンケート】気になるシステム業界 ホントのところ

今週は、アンケートお休みさせていただきます。ごめんなさい。
なお、前号「状態遷移図が好き?」の結果は公開中。是非ご覧下さい。
⇒http://www.ObjectClub.jp/special/kininaru
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人です。一気に冬めいてきましたねー。風邪などひいていま
んか?オブLOVEの面々は、イベントを明日に控え、バタバタしてます。走りま
ってます。みなさんに楽しく、学び多く、有意義な時間を過ごしていただける
よう、風邪にも負けずがんばっております。参加してくださる皆さん、クリス
マを感じさせるアイテムの持参や着用で、クリスマスの気分を一緒に盛り上げ
ましょう!

今週の強引な一言
*** Two heads are better than one(John Heywood)***
ペアプロしましょ。
(さとみ)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒http://www.ObjectClub.jp/community/object_ml/help/
〇 免責事項、過去の記事は   ⇒http://www.ObjectClub.jp/community/object_ml/
■ 発行:オブジェクト倶楽部 ⇒http://www.ObjectClub.jp/
■ 編集代表:平鍋  健児
Copyright (c)2003-2004 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.