プロジェクトマネジメントで行うべきこと

今日、@ITで「プロジェクトマネジメント」に関する記事を見つけたので
早速、読んでみた。(最近流行りだよね、マネジメント系)


内容を簡略すると、「プロジェクトマネジメントで行うべきこと」は、以下の3つ。
まぁ、一般的な内容ですね。

  1. プロジェクトの成果(目標・目的・狙いなど)の設定
  2. 仕事の設計(作業分解・作業フロー・スケジュール)
  3. PDCAサイクルを回す(マネジメント・サイクルの確立)

1.プロジェクトの成果(目標・目的・狙いなど)の設定

この作業については、簡略されているケースが多々あると思う。
記事によると、本来であれば、「顧客」、「組織」、「第3者(法律や社会)」から
要求される事項について、以下の9つ(ナインターゲット)について、プロジェクト
の成果を検討するべしということ。
また、検討して決めた成果は、「明文化する」、「達成判定可能にする」にする必要がある。

  1. 品質
  2. 納期
  3. コスト
  4. リスク
  5. コミュニケーション
  6. 成果物
  7. スコープ
  8. 協力会社

「品質」、「納期」、「コスト」については、常識ですよね。
「コミュニケーション」、「協力会社」については、今後のための布石でしょうか。
「スコープ」と「リスク」は何だろう?「人」は、きっと「教育」だよなぁ。
きっと、こういうプロセスを会社でルール化、もしくは標準化しておけば、プロジェクトも
どんどん成長していくんでしょうけどね。

2.仕事の設計(作業分解・作業フロー・スケジュール)

この作業は、プロジェクトマネジメントの肝ですね。
「作業分解(WBSの作成)」→「各作業の優先順位付け、作業時間見積もり」→「スケジュール化」
記事では、その作業成果物を必ずレビューすることと書かれてました。また、第3者の管理者に
レビューしてもらい、レビューチェック漏れによって、トラぶった場合、その管理者にも連帯責任を
負わせるといったルールが必要という案は、非常におもしろい。

3.PDCAサイクルを回す(マネジメント・サイクルの確立)

これもよく言われてますよね。
できれば、この作業についても具体的なポイントを書いて欲しかったな。
次回に期待です。

ブルースクリーンの対応

自宅の「Windows Vista」上で、定期的(1日に1回程度)にブルースクリーンが発生する。
しかもPCは居間とは別室に置いているので、リアルタイムで確認している訳でもなく、
後でリモートデスクトップで接続した際に、タスクトレイに「致命的なエラーから回復しました」で
初めて知るといった状況である。


あまりにも頻繁に発生するので、本腰を入れて対応してみたので、参考までに以下に手順を記載。

初期設定

  1. Microsoftのページより「Debugging Tools for Windows」(x86 32ビット版)をダウンロードし、インストール。
  2. Micorsoftのページより「シンボル パッケージ」(Windows Vista版)をダウンロードし、インストール。(パスはデフォルト)
  3. 「コンピュータ」を右クリックし、「プロパティ」を選択後、「システムの詳細設定」-「環境変数」をクリックし、「変数名」に"_NT_SYMBOL_PATH"、「変数値」に"SRV*C:\Windows\Symbols*http://msdl.microsoft.com/download/symbols"を設定する。

問題解析

  1. 「スタートメニュー」-「Debugging Tools for Windows」-「WinDbg」を起動し、「Menu」-「Open Crush Dump」を選択。
  2. 「コントロールパネル」-「パフォーマンスの情報とツール」-「問題のレポートと解決策」(左下の関連項目)を選択し、該当する問題をクリックすると画面が立ち上がるので、画面中の「これらのファイルの一時コピーを表示します」リンクをクリックすると、「ダンプファイル」が表示されるので、このパスを設定する。
  3. 画面上に問題解析の詳細内容が出力されるが、英語なので分かりにくいと思うが、とくに".sys"などドライバに関係しそうな項目をチェック。
  4. "〜.sys"が見つかったら、その名称でググると、大体だれか同じエラーに遭遇しているので記事を読み、実践。


ちなみに、私の場合は、グラフィックボードのドライバが不具合の原因でした。
この問題は、有名らしく、「GeForce6600」を使ってると結構遭遇するらしい。
とりあえず最新のドライバをダウンロードし、インストールすることで、今のところは再発生していない。

レジストリ削除ツール「Wise Registry Cleaner」

Windows Vista」に対応したフリーのツールを探したところ、
Wise Registry Cleaner」というツールがヒットした。


窓の杜 - 【NEWS】削除の安全性を判別可能な不要レジストリ削除ツール「Wise Registry Cleaner」


窓の社でも紹介されており、結構導入実績がありそうなツールみたい。
英語圏にて作成されたツールだが、日本語化が可能なようだ。


実際にインストールして使ってみると、フリーの割りには、
自動で不要なエントリを検出し、そして一括で削除できるなど
有用なツールだと感じた。
(有償版も存在するので、豊富な機能が欲しい人はそちらをお勧めする。)


また、レジストリの削除は、ツールを使用していたとしても
深い知識が必要になる。まったく知識がない人は、バックアップする等、
万が一のことを考えて実践して欲しい。

Vistaと旧OSのデュアルブート設定(後で旧OSを認識させる)

例えば、Cドライブに「Windows XP」、Dドライブに「Windows Server 2003」を
インストールしている場合、Cドライブに「Windows Vista」をインストールすると、
BIOS起動時に、Dドライブにインストールしている「Windows Server 2003」を
選択することができなくなる。


これは、アクティブパーティション(ここではCドライブ)に、インストールされている
OSのシステムパーティションが管理されているためである。(Vista以前はBoot.ini)
また、VistaVista以前でブートを管理しているコンポーネントが異なる。
そのため、Vistaをインストールした場合、Vistaのブートマネージャに、
旧OSを認識させるため、以下のコマンド(bcdedit)を実行する必要がある。

1: >bcdedit -create {ntldr} /d "Windows Server 2003"
2: >bcdedit -set {ntldr} device partition=C:
3: >bcdedit -set {ntldr} path \ntldr
4: >bcdedit -displayorder {ntldr} /addlast

ポイントは4行目の「partition」に"D:"ではなく、"C:"を設定することだ。
勘違いする人が多いが、ここではアクティブパーティションを指定する。
では、どこで"D:"を指定するのかというと、従来の「Boot.ini」に記載し、
そして、この「Boot.ini」をCドライブに配置するのだ。
(一緒に「ntldr」と「NTDETECT.COM」も配置する必要がある。)


こうすることで、Vistaのブートマネージャから選択できるようになる。
また、「ntldr」、「NTDETECT.COM」は、インストールCDの「i386」に
格納されているが、「Boot.ini」は格納されいないため、自前で作成する必要がある。
自前で作成するのは面倒なので、こういったインストール作業の前に、該当するOSの
「Boot.ini」を退避させておくことをお勧めする。


また、「Windows Vista」だけでなく、「Windows Server 2008」も同様である。
(ちなみに、私は「Windows Server 2008」を評価しようとインストールしたら発生した)

Intel CPUの各種機能サポート対応表


Windows Server 2008」の「Hyper-V」を評価しようと思い、
自宅PCのCPU(Pentium4)が「VT」に対応しているか確認してたら、
Intelの対応表を見つけた。
インテル® プロセッサー・ナンバー: ノートブック PC、デスクトップ PC、モバイルデバイス
(こんな便利なページがあったんだね)


ちなみに、自宅PCのCPUは「Pentium 4 630」で「VT」を
サポートしてなかった。(残念、評価できない)
どうしよう。。。
今の時代に「Pentium D」かぁ〜(悩)
[rakuten:shop2go:10000760:detail]

DataGridViewのRowValidatingでフォーカス設定が効かない?

会社の後輩が悩んでたので、ちょっと調べてみた。


この「DataGridView」は、Web用ではなく「Windows.forms」のクラスである。
「RowValidating」イベントは、現在入力中のRow(行)から
フォーカスが外れると、当該イベントが発生する。


後輩は、このメソッドの中で、入力値の妥当性チェックを行い、
必要に応じてエラーメッセージを出力するという機能を実装していた。
実装は以下のような感じ。

private void DataGridView_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
    if ((string)DataGridView.Rows[e.RowIndex].Cells[0].Value == "NG")
    {
        // エラーメッセージを表示
        MessageBox.Show("エラー");

        // キャンセルを有効       
        e.Cancel = true;
        
        // GridViewにフォーカスを設定
        DataGridView.Focus();
    }
}


しかし、エラーメッセージを出力し、メソッド内で「Focus()」を
呼び出しても、GridViewには、フォーカスが設定されなかった。
ちなみに、他のメソッドにおいては、フォーカスは正常に設定できる。


Webでググってみると、同じ悩みを持った人が多数いるようだ。
解決策は人によって、いろいろだが、これといった解決策は無いように思える。
その中で、「e.Cancel=true」が悪さをしていることまでは突き止めた。
実際、「e.Cancel=true」をコメント化して実行すると、正常にフォーカスが設定された。
(う〜む、なぜ・・・)


いろいろと検証してみる必要はあるが、必要に応じて「e.Cancel=true」を
呼び出さないという方法が現在の有力解決策である。
(別の問題が発生しそうな気がするが。)


最後に、個人的にこのメソッドの使用をお薦めしない。
というのも、フォーカスが外れた時点でチェック処理が実行されるので、
入力をやめて、画面を閉じようとするときでも処理が実行され、
エラーが表示されるので、ウザい。
そして、そんなにエラー処理の即時性が求められるとは思わない。
(リアルタイムで内容を反映するシステムなら別だが。)



最適な解決策を模索中なので、良い解決策が見つかったら記載します。

System Center Virtual Machine Manager

最近リリースされた「Windows Server 2008」。
ただし、目玉機能である「Hyper-V」は、まだ未搭載である。
(英語版RC1で提供されてるけど。)


Windows Server 2008」のリリースに伴い、Microsoft
運用管理製品群「System Center」から「Virtual Machine Manager」が
発売される。(2か月後くらい?)


この製品の目的は、「Hyper-V」によって物理サーバを仮想サーバに
置き換えることによる仮想サーバの運用コストを下げることだ。
たとえば、運用管理者は、実際、物理的に厳しいサーバはどれ?と
いったことも把握する必要が出てくる。
また、時間的な「早朝にたくさん処理する」、「こっちは夜にたくさん」等々。


そういった運用管理者の悩みを解決する製品なんだろう。
(実際は、どんな機能があるか知らない。。。)


正直、Microsoftが「ハイパーバイザ機能搭載の仮想化だぁ〜!!」って
言ってるけど、VMWareはもって前からやってるので、今さらって感じがする。
VMWareが持ってない強みをだして欲しかったなぁ。