Index: [Article Count Order] [Thread]

Date:  Wed, 07 Jan 2004 12:31:12 +0900
Subject:  【オブジェクト倶楽部: 2004-01号】

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.29 2004/01/07

■ I N D E X
┃
┣【新年ご挨拶】
┗【XP】XP実践家への道 [11] 第十一道標 - 「継続的なインテグレーション」と「YAGNI」

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 〇  新年ご挨拶−あけましておめでとうございます
  〇 〇━━━━━━━━━━━━━ ━━・ 

あけましておめでとうございます。昨年はオブジェクト倶楽部をご愛顧ありが
とうございました。よちよち歩きではじめたこのメルマガも、読者数1000
に達することができましたし、年末のクリスマスイベントには100名余りの
方にご参加頂きました。今年は、もう少し「双方向」のコミュニケーションを
取り入れていきたいと考えています。このメルマガに返信しますと、自動的に
ライターに届くようになっています。是非、みなさんの要望企画や、近況、悩
み、自慢、などフィードバック頂ければと思います。現実世界と理想世界を結
ぶ掛け橋として、このオブジェクト倶楽部にご期待ください。

最後に、Kent Beck の言葉を引用します。
"Optimism is an occupational hazard of software development, feedback is the cure."
-- Kent Beck

フィードバックを得て進むこと、♪これが一番大事♪なんですね。(平鍋)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【XP】XP実践家への道 [11] 第十一道標 - 「継続的なインテグレーション」と「YAGNI」

こんにちは、天野勝です。
今回から読まれる方もいらっしゃると思いますので、簡単にこの連載の概要を
説明します。この連載はRoy W. Miller(*1)の提案しているXPのプラクティス(*2)
を、筆者の解釈にもとづき皆様に紹介していくというものです。

   ☆   ☆   ☆

さて、いよいよこの連載も最後となりました。今回は、開発者のプラクティス
である「継続的なインテグレーション」と「YAGNI(*3)」を説明します。

■急がば回れ
「あー、忙しい。テストなんてやってられるか。」よくある光景です。開発も
佳境を迎えるとついついコーディングにばっかり目が行ってしまい、テストを
おざなりにしてしまいがちです。で、テストを始めると、出るわ出るわ、バグ
が出る。嵐のようにバグが出るんですね。1つバグを直すと違うバグが出てしま
い、直せば直すほど深みにはまってしまい、早くからテストをしておけばよかっ
たと後悔することが多くありませんか。
「継続的なインテグレーション」というプラクティスでは、このような状態に
ならないように数時間おきに、最新のソースコードからビルドし、テストを強
制的に行います。
このような自動ビルド&自動テスト環境を一度構築してしまえば、何かあるま
で動き続けてくれます。開始はタイマーに任せます。人任せだと、「今日はど
うせテストが通らないから動かさなくてもいいや」などといったことになり、
ついつい動かさなくなっていってしまうことがあります。
このような環境がなくても開発は進められるので、ついついなおざりになって
しまう環境構築ですが、開発の速度を落とさないために、急ぎたい気持ちをぐっ
とこらえて、ここは保険的な意味合いからも最初のうちから自動ビルド・テス
ト環境の構築をお勧めします。
オブジェクト倶楽部のクリスマスイベントで倉貫さんに教えてもらったのです
が、定時自動ビルド&テストが成功したら、ファンファーレがなって、失敗し
たら、ドリフのずっこけサウンドが鳴るようにしたそうです。すると、自動テ
ストへの感心が高まって、効果抜群だったみたいです。

■博打、打ちます?
仕様が不安定な機能ってありますよね。あなたが欲しいのはこんなやつじゃな
いの、ってこちらで勝手に仕様を決めてしまいたいぐらい、優柔不断な顧客も
いますし。こういうときの常套手段で、「おそらく仕様はこんなのになるはず
だ」と勝手に決めて作るときありませんか。そして仕様が決まったら「そんな
のはお見通しでした。もうできてます」とか言って、その場でデモしてみたり。
そうすれば仕様決めにかかった分の工数も取り戻せそうですし。
でもそれって、とてつもなくハイリスクなことをしようとしているんです。リ
スクを回避しているつもりで、他のリスクを増大させているんです。
そのようなコードがあることで、決まった仕様を追加するときの邪魔になりま
すし、コードを書くということは、その分のテストもしなくてはならないし、
バグが出たら修正もしなくてはならないんです。
「YAGNI」というプラクティスでは、将来必要になるかどうか分からない機能
(コード)を追加することを禁止しています。
誰の言葉かは知りませんが、「最良のプログラミングはコードを書かないこと」、
というのを聞いたことがあります。YAGNIにはこの精神が受け継がれているので
す。現時点でサービスしていないコードは、古いコードも新しいコードも存在
していないのです。
10年以上昔の話なんですけど、当時の2スロットしかないパソコンにいろいろな
拡張ボードを挿したくって、高いお金を出して4スロットある拡張ボックスを買
いました。だけど、2スロットしか使わなかったという無駄な投資をしたことを
思い出してしまいました。

   ☆   ☆   ☆

今回は開発者のプラクティスから「継続的なインテグレーション」と「YAGNI」
を説明しました。
この連載ではプラクティス(実践事項)を紹介するということで、「XP実践家へ
の道」と題して執筆してきましたが、本当の実践家になるためには、手を動か
なさなくてはなりません。頭で理解し、手を動かし、体で感じ、そして本当の
知識として身につけていただければと願っております。

この連載は、今回をもって終了いたします。今までお付き合いいただきありが
とうございます。
この連載に対するコメントや、こんな記事が読みたいなどのご要望お待ちして
います。(天野勝)

*1: 「XP エクストリーム・プログラミング 適用編」の著者です

*2: http://www-6.ibm.com/jp/developerworks/java/021018/j_j-xp0813.html

*3: You Aren't Gonna Need It. の略。どうせそんなの必要にならないさ、と
  いう感じの意味です。
______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?G001+10+0
普通:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?G001+10+1
イマイチ:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?G001+10+2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

新年あけましておめでとうございます。編集人です。
皆さんどんなお正月だったでしょうか。休めた人も、休めなかった人も(#^^;)
新たな気持ちでお仕事しておられることと思います。
メールマガジン「週刊オブジェクト倶楽部」も、今日から配信再開です。
今年1年よろしくお願いいたします。
(いりさ)

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