Date:  Wed, 11 Aug 2004 12:33:20 +0900
Subject:  【オブジェクト倶楽部: 2004-29 号】

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

■ I N D E X
┃
┣【Topics】モデリング道場ML開設!!
┣【PM】プロジェクトマネジメント入門[16]
┣【プログラミング】C#で学ぼうオブジェクト指向入門 [9]
┗【アンケート】気になるシステム業界 ホントのところ

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇  モデリング道場ML開設!!
  〇 〇━━━━━━━━━━━━━ ━━・ 

『モデリング道場』(通称:もでみち)とは、モデリングのTips、常識、パターン
や、時にはアクロバチックな技を戦わせる道場です。モデリングのQ&Aに加え
て、難問・奇問に対しての回答バトルをしたいと考えています。いまや、モデ
リングもマーシャル・アーツの時代!みんなで技を磨きあいませんか?
この企画には、業界著名人の師範代が参加していただけることになっています。
さあ、かかってこい!

このMLに参加したい!!という方、まずはmodeling-dojo-ctl@objectclub.jp宛
に、subscribe という本文一行のメールを送ってみてください。
たくさんのみなさんの参加、お待ちしております。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【PM】プロジェクトマネジメント入門[16]

今回のお話しも、前回に引き続き「リスクマネジメント」です。

今回は、リスク分析段階である「リスク事象の洗い出し」、「リスク事象の原因
と評価」最後に、「リスク事象の対策」と3段階ある最終段階「リスク事象の対
策」のお話です。

リスクマネジメントには、どのようなリスクがプロジェクト内に存在するかを
洗い出し、その事象が起こる確率とプロジェクトに及ぼす影響度を評価し、そ
れらに備えるという流れがあります。この備えが最終段階である「リスク事象
の対策」です。この対策には、リスクを未然に防ぐための備えである予防対策
と、リスクが発生したときの備えである発生対策の2つがあります。

予防対策は、事象を未然に防ぐ為の対策が講じられます。リスク事象が起きてか
らでは、いくら軽微な影響だとしてもプロジェクトには何かしらの損害を与えて
しまいます。私達のソフトウェア開発プロジェクトであればスケジュール(時間)、
コスト(お金)、顧客の信頼などが考えられます。この損害とその影響をリカバ
リする為のコストがかかってしまいます。よって、マネジメント的には、リスク
事象をどのようにして防ぐかがポイントになります。

とは言っても、すべてのリスク事象を発生させないようにするのは困難です。そ
の対策も必要です。これが発生時対策です。この発生時対策は、大きく分けて
「リスク事象が発生した場合にその対策をどうするか」と「発生することを見込
んで予め準備すること」の2つの視点が必要です。

リスク事象への対応として、早期発見、事前準備が肝心です。
ただ、ここの早期発見で重要なことがあります。リスク事象が発生したと認識す
る条件、言い方を変えると発生時対策を行うきっかけは何かを規定して、関係者
と合意しておくべきです。これが、不明確だと発生時対策が整っていたとしても、
リスク事象が見落とされてプロジェクトへの影響が大きくなってから、やっと気
付くことになりかねません。

ソフトウェア開発プロジェクトの場合、作業遅延に対するリスクの事象認識への
合意が曖昧なような気がします。この合意が曖昧なために、発生時対策が遅れて
プロジェクトに対する影響が大きくなる場合が多いようです。
早期発見、早期対応が重要です。

以上で、リスクマネジメント(分析段階)の話しは終わりにして、次回は、プロ
ジェクトを実施する組織形態である「プロジェクトマネジメントオフィス」の話
しをしたいと思います。(事務局長)

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

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

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

■目標
『C#の「インデクサ」を理解』をテーマに学習していきます。インデクサをさ
くっと解説すると配列風のアクセサメソッドで、前回のプロパティに似ています。
プロパティと異なる点は取得したいデータを、プロパティはプロパティの名前で
識別するのに対して、インデクサはシグニチャで識別する点です。
それでは、具体的なコードを書いて「インデクサ」を確認していきましょう。

■内容
まずはインデクサを利用しているソースコードを見てみましょう。ソースコー
ドの内容を簡単に説明すると「開発者の個人の熱血度とチームの熱血度を表示す
る」プログラムです。

======================================================================
using System;
using System.Collections;

class MainClass
{
 public static void Main()
 {
     Developers developers = new Developers();                 // ★1
     string userName1 = "じゅげむじゅげむ";
     double nekketudo1 = 66.6;
     
     developers[userName1] = 
         new Developer(userName1, nekketudo1);                 // ★2
     
     string userName2 = "ごこうのすりきれ";
     double nekketudo2 = 77.7;
     developers[userName2] = 
         new Developer(userName2, nekketudo2);
     PrintResult(developers);
 }

 private static void PrintResult(Developers developers) {
     foreach (string name in developers.Names){
         
         Console.Write("{0}さんの熱血度\t:{1}\n",
           developers[name].Name, developers[name].Nekketudo); // ★3
     }
     Console.Write("-----------------------------------------\n");
     Console.Write("チームの熱血度\t\t\t:{0}\n", 
                                      developers.getNekketudo());
 }
}

=======================================================================
●インデクサの利用
★2や★3をみると

     developers[userName1] = new Developer(userName1, nekketudo1);
・・・
     Console.Write("{0}さんの熱血度\t:{1}\n",
               developers[name].Name, developers[name].Nekketudo);

developersが具体的なデータ構造である「配列」をさらけだして、いるように感
じます。

しかし、★1を見ると

     Developers developers = new Developers();

developersは「配列」ではないことに気付きます。そう、「配列」ではありま
せん!ここでは、「インデクサ」を使っています。説明を加えると複数の開発者
オブジェクトを扱うデータ構造はdevelopersの内部に隠蔽され、公開されたイン
デクサを使って間接的にアクセスしています。
もし、インデクサを使わずに普通のメソッドを使うなら
★2は
     developers.AddDeveloper(userName1, 
                          new Developer(userName1, nekketudo1));
★3は
     Console.Write("{0}さんの熱血度\t:{1}\n",
               developers.GetDeveloper(name).Name, 
               developers.GetDeveloper(name).Nekketudo);
といった感じになります。ちょびっとですが、インデクサを使った方がソース
コードがコンパクトになります。

次にインデクサの実装側を見てみましょう
=======================================================================
class Developers {
 private Hashtable developers = new Hashtable();
 // ★4
 public Developer this[string name]{
     get{
         return (Developer)developers[name];
     }
     set{
         developers[name]= value;
     }
 }
 public ICollection Names{
     get{
         return developers.Keys;
     }
 }
 public double getNekketudo() {
     double nekketudo = 1;
     foreach (string name in developers.Keys){
         nekketudo *= this[name].Nekketudo;
     }
     return Math.Round(nekketudo, 1);
 }
}
public class Developer {
・・・省略。
}
=======================================================================
●インデクサの実装
★4がインデクサの実装になります。get,setなどプロパティに似ていますね?

 private Hashtable developers = new Hashtable();
 // ★4
 public Developer this[string name]{
     get{
         return (Developer)developers[name];
     }
     set{
         developers[name]= value;
     }
 }

”Developer this[string name]”で管理されるオブジェクトの型がDeveloper型
で、オブジェクトを識別するのにstring型のnameを使うように指定しています。

 get{
     return (Developer)developers[name];
 }
 set{
     developers[name]= value;
 }

でDeveloperオブジェクトを名前をキーにして取得や登録をしています。ここ
でdevelopersはHashTable型で、用意されているインデクサを利用しています。
ちょびっとですが、インデクサを使うことでハッシュテーブルへのオブジェク
トの登録や取得がシンプルになっています。

今回は、複数の開発者オブジェクトの保持にハッシュテーブルを使いましたが、
配列やリストやツリーといった別のデータ構造で管理してもかまいません。

■まとめ
インデクサについて学習しました。インデクサは前回に紹介したプロパティ同様
にカプセル化と情報隠蔽を実現するのに使える機能です。メソッドで代替するこ
とは可能ですが、インデクサを使うことでソースコードがコンパクトになり読み
やすくなる場合があります。インデクサは、今回の例のように、配列の要素を指
定するのにintである必要は無くstringといったことも可能です。また、今回は
説明しませんでしたが、多次元のインデクサやインタフェースでインデクサを使
うなども可能です。
配列やリストやハッシュテーブルといったデータ構造を使う場合、一度、インデ
クサを使ってこれらのデータ構造に間接的にアクセスする方法を検討してみては
いかがでしょうか?(IENAGA) 
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/cgi-bin/question.cgi?E003+8+0
普通:
http://www.ObjectClub.jp/cgi-bin/question.cgi?E003+8+1
イマイチ:
http://www.ObjectClub.jp/cgi-bin/question.cgi?E003+8+2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━3 r d ■━
■
┗【アンケート】気になるシステム業界 ホントのところ

今週は「生まれ変わっても今と同じ仕事をしたいですか?」のホントのところ。

もっちろーん!!
  http://www.ObjectClub.jp/cgi-bin/question.cgi?Z001+22+0
なんだかんだいってしてそう。
  http://www.ObjectClub.jp/cgi-bin/question.cgi?Z001+22+1
してもいいかな・・
  http://www.ObjectClub.jp/cgi-bin/question.cgi?Z001+22+2
そのことについてあまり何も思わないです。
  http://www.ObjectClub.jp/cgi-bin/question.cgi?Z001+22+3
できればしたくないかも・・
  http://www.ObjectClub.jp/cgi-bin/question.cgi?Z001+22+4
絶対にしたくないです。
  http://www.ObjectClub.jp/cgi-bin/question.cgi?Z001+22+5
それは秘密です。
  http://www.ObjectClub.jp/cgi-bin/question.cgi?Z001+22+6
ちょっと語らせて!
  editors@ObjectClub.jp まで詳細を!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「アテネオリンピック、どうやって楽しみますか?」の結果は公開
中。是非ご覧下さい。
⇒http://www.ObjectClub.jp/special/kininaru
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人です。
ニュースで渋滞情報を見る機会が多くなりました。帰省ラッシュが始まって
いるようです。読者のみなさんの中にも、今週はお盆休みだという方が多い
のではないでしょうか。「お休みは今から」という方も怪我・事故・病気の
ないよう、楽しい夏休みをお過ごしくださいね。

Topicsで紹介しましたモデリング道場メーリングリスト。これはリクエスト
によって開設されたものなんです。オブジェクト倶楽部では、このように読
者の皆さんからのリクエストにどんどんお応えしていきたいと考えています。
「こんな記事が読みたい!」「○○について詳しく知りたい」など些細なこ
とでも結構です。みなさんのご意見、ご要望を随時募集しております。気軽
にメールしてみてくださいね。
⇒editors@ObjectClub.jp

今週の強引な一言
*** 相手のない喧嘩はできぬ(ことわざ)***
「あいつがいるとつい議論がヒートアップしちまう」なんて思っている方、自
分に問題はありませんか。こちらが反論するので、あちらも反論しているだけ
ではないでしょうか。「なるほど、そういうことか」と納得するまで相手の話
を充分聞いてみませんか。無駄な議論を避けられるかもしれませんよ。
(めぐみ)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒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.