Index: [Article Count Order] [Thread]

Date:  Wed, 24 Dec 2003 12:31:04 +0900
Subject:  【オブジェクト倶楽部: 2003-28号】

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.28 2003/12/24

■ I N D E X
┃
┣【Topics】「Jude 竹ver1.2.5」が新しくリリース!
┣【XP】XP実践家への道 [10] 第十道標 - 「ペア・プログラミング」と「集団的な所有権」
┗【プログラミング】C#で学ぼうオブジェクト指向入門 [2]

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 「Jude 竹ver1.2.5」が新しくリリース! 
  〇 〇━━━━━━━━━━━━━ ━━・  

成長を続けるフリーのUMLモデリングツール、Judeの新バージョン Jude 竹 1.2.5
が、本日、クリスマスイブに合わせてリリースされます!

いくつかの不具合修正に加え、「痒いところに手が届く」よう、操作性の改善
などを加えています。詳しくはリリースノートを確認ください。

Jude:
http://www.ObjectClub.jp/Jude/
リリースノート:
http://www.ObjectClub.jp/Jude/Release_Note.html
ダウンロード:
http://www.ObjectClub.jp/Jude/download.html

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【XP】XP実践家への道 [10] 第十道標 - 「ペア・プログラミング」と「集団的な所有権」

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

   ☆   ☆   ☆

今回は開発者のプラクティスである「ペア・プログラミング」と「集団的な所
有権」を説明します。

■感謝されたい
人から「ありがとう」って言われるとうれしくなりますよね。ほとんどの人は
人から感謝されて迷惑ということは無いでしょう。人のために働いて、その働
きに対して感謝される。気持ちいいものです。
居酒屋で前の人の飲み物がなくなり欠けているの気付き、「次、なに飲みます?」
「すみませーん(店員を呼ぶ)」という光景を良く見ませんか。元気のない一
人暮らしのお年寄りが、ペットを飼うことで、ペットのためと思い、世話をし、
散歩に連れ出しているうちに、みるみる元気になったというのもよく聞く話で
すね。
「ペア・プログラミング」というプラクティスでは、2人の開発者が1台のマシ
ンの前に座り、交代しながらプログラミングをすることを決めています。
ペア・プログラミングにより、常にコードレビューが行える、コーディング規
約から逸脱するのを抑制する効果がある、といった性悪説的な考えの利点もあ
りますが、コードを書いているドライバーがつまずいているときに、隣に座っ
ているナビゲータが問題解決に積極的に関わり、仕様の不明な点を聞きにいっ
たり、使えそうなAPIを調べるといった性善説的な考えの利点をぜひ強調したい
です。
うまく問題が解決したときの喜びを分かち合える相手がいると、うれしさも倍
増しますしね。

■環境でコードの構造が変る
良いプログラムコードというと、皆さんはどのようなコードを思い浮かべるで
しょうか。パフォーマンスも大事でしょうが、私は保守性の高いコードが良い
コードだと思っています。
では、保守性の高いコードとはどのようなコードでしょうか。条件として、セ
ンスの良い名前は必須ですが、シンプルで明確な責務を持ったクラスから構成
され、メソッドも数行程度の大きさというのも条件のひとつですよね。粒度が
細かいほうが良いコードなのです(*3)。
「集団的な所有権」というプラクティスでは、プログラムコードなどの成果物
の責任者をチーム全員とし、必要に応じて誰でもが成果物を修正することがで
きます。
このためプログラミングでは、近いところのコードをあっちこっちのペアが同
時に修正することが増えてしまいます。プログラムの粒度が粗いと、誰かがコー
ドを修正していて自分達の作業ができないという待ち状態になる確率が上がっ
てしまいます。待ち状態が起こる確率が少なくするためには、プログラムの粒
度が細かくする必要がでてきます。集団的な所有権を実施するにはどうしても
良いコードを書かなくてはならなくなってしまいます。
コードを共有するためにバージョン管理ツールを良く使いますが、悲観的ロッ
クか、楽観的ロックかでもコードに影響がでますね。

   ☆   ☆   ☆

今回は開発者のプラクティスから「ペア・プログラミング」と「集団的な所有
権」を説明しました。次回は、いよいよ最終回、今回と同じく開発者のプラク
ティスの「継続的なインテグレーション」と「YAGNI」について説明いたします。
この連載に対するご意見お待ちしています。(天野勝)

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

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

*3: 細かすぎるのも問題ですが。
______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?G001+9+0
普通:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?G001+9+1
イマイチ:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?G001+9+2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【プログラミング】C#で学ぼうオブジェクト指向入門 [2]

■はじめに
この記事は、初級プログラマである私がみなさんと一緒にC#を使ってオブジェ
クト指向(OO)の基礎を気軽に勉強していこう、という内容です。

前回は.NET frameworkを使ったC#開発環境の構築と簡単な出力プログラムにつ
いて行いました。今回は、OOの重要要素の1つであるクラスとインスタンスに
ついて、実際にプログラムを作成しながら勉強していきたいと思います。

■目標到達点
今回の目標到達点は
・stringクラスを使ってインスタンスを生成するプログラムを作成・実行
・プログラム作成を通じてクラスとインスタンスを大筋で理解
です。

■内容
まずはあまり考えずに、ばちばちとキーボードをたたいて、コンパイル、実行
してみましょう。

●ソースコード
----------------------------------------------------------------------
using System;
class test {
  public static void Main() {
    string name1 = new string( new char[]{'え', 'い', 'ち', 'ゃ', 'ん'} );
    string name2 = new string('ね', 2);
    string name3 = "せばすちゃん";

    Console.WriteLine("一行目出力結果:{0}", name1);
    Console.WriteLine("二行目出力結果:{0}ちゃん", name2);
    Console.WriteLine("三行目出力結果:{0}", name3);
  }
}
----------------------------------------------------------------------

●実行結果
----------------------------------------------------------------------
一行目出力結果:えいちゃん
二行目出力結果:ねねちゃん
三行目出力結果:せばすちゃん
----------------------------------------------------------------------

コンパイル・実行できましたか?
実行してから、進んでくださいね。

●プログラムの説明
オブジェクト指向の考え方の説明の本の中で、「クラス」と「インスタンス」
の関係を(実世界の)「たいやきの型」と「(実際に食べられる)たいやき」
の関係で説明されることがあります(クッキーのほうが多いかな?)。「たい
やきの型」に材料を入れて「つくる(焼く)」ことで「たいやき」ができて、
また「たいやきの型」が「1つ」あれば、「たいやき」を「複数」つくること
ができる、この関係がクラス(たいやきの型)とインスタンス(たいやき)の
関係なんだよ、って感じに。

では、この「たいやきの型」と「たいやき」の関係が、今回のプログラムのど
こに対応するか確認してみたいと思います。

まず、「たいやきの型」(クラス)に対応するのが「stringクラス」になりそ
うです。(ほかにも上げられますが今回はstringに着目します。)次に、たい
やきを「つくっている」(インスタンスの生成)のは
  string name1 = new string( new char[]{'え', 'い', 'ち', 'ゃ', 'ん'} );
  string name2 = new string('ね', 2);
  string name3 = "せばすちゃん";
が対応しそうです。ただ、私がソースコードを上のようにキーボード叩いても
”えいちゃん”インスタンスはつくられそうにありません。ソースコードをコ
ンパイルしても"ねね"はできないみたいです。プログラム実行で上のものが実
行されて初めて、メモリ内に"せばすちゃん"が生成されそうです。最後の「た
いやき」(インスタンス)はメモリ内の"えいちゃん"、"ねね"、"せばすちゃ
ん"が対応しそうです。
まとめると

●まとめ表

OOの視点      OOの視点で見た    OOの視点で見た
           たいやきのある実世界 今回のコンピューターの世界
───────── ────────── ─────────────
クラス       たいやきの型     stringクラス
インスタンスの生成 たいやきをつくる   new string(××)等で生成
インスタンス    たいやき       メモリ内の"せばすちゃん"等

のように対応しそうです。

■まとめ
今回は、クラスとインスタンスについてstringクラスを使って実際にプログラ
ムを作成・実行しました。また、クラスとインスタンスの関係を実世界のたい
やきと今回のstringを使ったプログラムで対応づけを行い、勉強してみました。
「クラスとは」、「インスタンスとは」の用語そのものの説明は行いませんで
した。が、今回の対応づけでクラスとインスタンスは大筋で理解できたかなと
思います。

次回は、今回のようにstringクラスの既存クラスを使ってプログラムするので
はなく、新規にクラスを自分でつくるプログラムを作成し、クラスについても
う少し勉強したいと思います。今回はここまで。
それでは、さー・よ・お・な・ら(IENAGA)
______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?E003+1+0
普通:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?E003+1+1
イマイチ:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?E003+1+2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記(拡大版)

今年は「ソフトウェアの原則シリーズ」を書かせて頂きました。
・OCP(Open-Close Principle)
・IOP(Inside-Out Principle) 
・SRP(Single Responsibility Principle) 
・ISP(Interface Segregation Principle) 
の4つです。言葉に表すことの難しい「設計センス」を体系化したいと考えて
います。来年も期待していてください。
なお、クリスマスセミナーで配布した、「オブジェクト倶楽部カレンダー」の
12月に Robert C. Martin による11原則をコレクションしてデザインしてみ
ました。カレンダーはまだ在庫があるので、熱烈な要望があれば若干数郵送で
きるかも。。。(平鍋)

日頃より、オブジェクト倶楽部の活動にご参加、ご協力頂きまして、誠に有難
うございました。今年は、皆様のご要望にお答えし、このメルマガを始め、イ
ベントなどを行ってまいりました。来年も皆様にとって有意義な活動を行って
いく予定です。ご支援よろしくお願いします。(事務局長)

こんにちは、天野勝です。
「Wikiでウッキッキ」「XP実践家への道」と2つの不定期ですが連載記事を書か
せていただきました。文字だけで何かを伝えるのって本当に難しいんだなぁと、
改めて思い知らされた一年でした。来年は、コミュニケーションスキルに関する
連載をしてみたいと考えています。こういうの読みたい人っていますか?
(天野勝)

ienagaです。只今、C#で学ぼうオブジェクト指向入門を連載させていただいて
います。連載方針は、「力を抜いて気軽にオブジェクト指向を学んじゃおう」
です。これからも、どうぞよろしくお願いします。最後にお願いを。
オブジェクト指向がみなさんの幸せを呼びますように
ではでは(ienaga)

梅田です。リファクタリングの連載がしばらく続きます。有用な知識をなるべ
くわかりやすく伝えることと、文章として面白いものを書くことを目標にがん
ばります。フィードバックも含めて、今後ともよろしくお願いします。(梅田)

「Judeで始めるUML」を書かせていただきました。
皆さん「今日のUMLクイズ」やっていただけたでしょうか?
今後は、UMLやOO設計、ツール関連の小粒な記事を書いていければと思っていま
す。これを取り上げて欲しいという項目があれば、ぜひメールいただければと
思います。(岡村)

ko-chanです。
世界中の数多くあるオープンソースの中から面白そう使えそうなものを探し出
して記事にしています。皆さんの中で注目のオープンソースがありましたら、
是非ご紹介ください。
それと、今後は、TDDやFITなどテストに関する記事も書いていきたいと思って
います。皆さんのテストがいままでよりも10倍楽しくなりますよう努力したい
と思います。今後ともよろしくお願いします。(ko-chan)

たかが編集、されど編集。何かしらの想いを伝えようという気持ちは、ライター
には負けじと頑張ってきました。読者のみなさんの想いと、ライターの想いを
をうまくまとめて、より良いモノを作っていきます。ご期待ください。
(編集・さとみ)

配信を開始した頃は、週刊なんて本当にできるのかと不安でいっぱいでしたが、
ライター陣の協力と、何より彼らにモチベーションを与えてくれる読者の皆さ
まのおかげでここまでこれました。感謝です。ちょっと早いですが、良いお年
を!!(編集・いりさ)

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