| このドキュメントは、iGantの開発経緯、こんなふうに使ってもらえたら、将来のバージョンアップの方向性などを思いつくまま書き留めたものです。尚、本ドキュメントは v1.2 ベースで作成しています。 | |||||||||||||||||||||||||||||||||||||||
| 1.開発経緯 | |||||||||||||||||||||||||||||||||||||||
| 私は、長年にわたり制御用コンピュータソフトの開発に従事してきたのですが、この世界でのソフトの作り方と言えば、ほぼ100%受注生産で、要求定義に始まり、サブシステム基本設計、詳細設計、コーディング、単体デバッグ、組み合わせ試験、総合試験、客先試験を経て、晴れて運開に至るといったもので、だいたい1システム1〜2年のサイクルでこなしてきました。システムは数十本のプログラム、数万ステップのサブシステム毎に分けて、1つのサブシステムを5〜10人ほどのチームで開発していくのですが、受注段階で納期と予算が確定しているため、各サブシステムリーダは開発期間中は常に週一での進捗報告が義務付けられていました。 この進捗報告は、ガントチャート形式の工程表を作成し、ここに報告日時点での進度を赤線でつないだイナヅマを記入して報告するのが一般的でしたが、なにが大変って、納期とコストから逆算して書いた工程表。遅れるのが当たり前!後ろが無くなってくると、さあ大変。特別フォローが始まり、人員調整、工程表の書き直しなんかで日が暮れてしまい、気が付けば1ヶ月家に帰っていないなんていうことも。 で、ある時「俺は一体なにをやっているのだろう?」というおもいがふつふつと沸いてきたわけです。 |
|||||||||||||||||||||||||||||||||||||||
| ●ソフト作りなんて、もろ人に依存する仕事。誰に何をやらせるかで、ぜんぜん結果が異なるのに、 Aさん、Bさんで工程考えても無意味じゃない! ●なんで毎日、工程表を書き直しているんだ?イナヅマぐらい自動で書いてよ!エクセル! わけわかんないよ!プロジェクト98。イナヅマぐらいピンと伸ばせないの! もう家に帰りたい。。。 そして、ついにiGantの開発を決意したのでありました。 |
|||||||||||||||||||||||||||||||||||||||
| 2.iGantのコンセプト | |||||||||||||||||||||||||||||||||||||||
| そんなこんなでiGantで実現したかったことをあげてみます。 ●この人がこの仕事をやれば、何日で片づく(はず)を把握したい。 ●イナヅマなんか何本でも書けて、ピンと伸ばしたらお尻がどのくらい遅れているかなんて 一発でわかるはず。 ●「スパイ大作戦」みたく、メンバーを選ぶだけで、最適スケジュールが出来たらかっこいい。 (これは未だ出来ていませんが。。。) |
|||||||||||||||||||||||||||||||||||||||
| 3.こんなふうに使ってもらえたら | |||||||||||||||||||||||||||||||||||||||
| ここでは、iGantのコンセプトから、「こんなふうに使ってもらえたら」といったところをチュートリアル的に書いてみます。もちろん、ここにあげた使い方が全てではないと思いますので、こんなふうに使ってみました的なお便りをお待ちしております。 | |||||||||||||||||||||||||||||||||||||||
| 3.1 前準備 仕事(タスク)の種類を考える。 | |||||||||||||||||||||||||||||||||||||||
| 「この人がこの仕事をやれば、何日で片づく(はず)」を実現するために、まず仕事の種類と、その仕事をこなす上での標準的な作業効率を考えてください。例としては、昔ながらのソフト開発をイメージしてみました。 仕事の種類が固まったら、iGantの「環境設定」で設定して下さい。 iGantでは「仕事」=タスクとして表現されています。 |
|||||||||||||||||||||||||||||||||||||||
![]() |
|
||||||||||||||||||||||||||||||||||||||
| <補足>一覧表示は「タスクの種別」の登録順で表示されます。この並びは、iGantの中で「タスクの種別」を表示する際に使用されます。並び替えは行のドラッグで可能です。 | |||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
||||||||||||||||||||||||||||||||||||||
| 「タスクの種別」の修正は、旧種別の削除と新種別の追加で行ってください。 「単位」「作業効率」の修正は一覧中の修正対象行を選択して、修正後、「追加」を指示してください。 |
|||||||||||||||||||||||||||||||||||||||
| 3.2 チャートの開始日と休日を設定する | |||||||||||||||||||||||||||||||||||||||
| 今回の例では、プロジェクト期間を2月〜9月程度で考えました。 最初に、タイムチャートビュー右上のチャート開始日設定エリアに「2/1/03」とキー入力してリターンすると、開始日が2月1日に変更されます。 |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| (!)上図では「プロジェクト開始日」として表示されていますが、 本ドキュメント作成後に表現をチャート開始日に変更しました! |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| さて、次は休日の設定です。 タイムチャートを右にスクロールして2月21日(会社の記念日とでもしておきます)を表示し、「21」のカラムヘッダを選択して「チャート」「休日」を選択します。同様に、2月11日と3月21日も設定しましょう。 |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 次は、ゴールデンウィークと夏休みの設定ですが、今のままではチャート範囲外のため表示することが出来ません。 この場合は、一旦チャート右上の「ー」ボタンで週間チャート表示とし、「ー>」「<ー」ボタンや、チャート開始日のキー入力で開始日をスライドさせて、適当な日付を先頭にし、「+」ボタンで日チャート表示として設定してください。 このように、週間チャート表示と日チャート表示を切り替え、開始日をスライドさせて、その他の休日を設定していきます。 (週間チャートにする意味は、単に移動量を7日としてすばやく移動させるためだけです) |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 休日の設定が終わったら、開始日を2月1日に戻して、日チャート表示に戻しておきます。 iGantでは、タイムチャートビューに表示しきれない長期プロジェクトでも、開始日をスライドさせることによって、 自在に扱うことが出来ます。 |
|||||||||||||||||||||||||||||||||||||||
| 3.3 メンバーを登録する |
|||||||||||||||||||||||||||||||||||||||
| 今回の例では5名のメンバーにてプロジェクトを実施します。 「ツール」「作業者リストを表示」の選択で「作業者一覧」が表示されます。 ドキュメントの初期状態では、「作業者ー1」が既に登録されていますので、「作業者ー1」をダブルクリックして、 「中居」に変更します。 そして、「新規作業者」ボタンをクリックして「作業者ー2」を登録し、同様に「木村」とでもしましょう。以下同様に、「稲垣」「草薙」「香取」とメンバーを登録しましょう。(メンバーは架空の人物であり、実在の人物とは関係有りません) メンバーの登録が行えたら、各人の作業効率と最適化処理で対象とするか否かを設定します。 |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 中居はリーダーなので、コーディング、デバッグ作業からは除外しました。 | |||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 草薙は若干経験が浅いので、コーディング、デバッグの作業効率を下げてあります。 | |||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 香取は新人ですが、教育のためにプロジェクトに参加させました。 | |||||||||||||||||||||||||||||||||||||||
| 3.4 要求定義〜基本設計のスケジュールを作成する | |||||||||||||||||||||||||||||||||||||||
| タスク生成モードにして、タスクを3つ登録します。タスクの長さは適当で結構です。 タスク生成モードにすると、コンテンツビュー上部の「生成タスクの種別」選択ポップアップが有効となりますので、ここで「要求定義」を選択しておけば、生成タスクの種別が「要求定義」となります。 次に選択モードに戻り、「ツール」「情報を表示」で情報ウィンドウを表示させ、各タスクを選択してタスク名、作業者(必要ならタスク種別も)を設定します。(タスク名はコンテンツビューから直接設定することも出来ます) さて、次はタスクの作業期間ですが、要求定義、基本設計というような仕事は効率と質量から算出するのが難しいので、タスクをドラッグして期間を決めてしまいましょう。 (要はケースバイケースで臨機応変に使って頂ければということです) |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 3.5 進捗フォロー | |||||||||||||||||||||||||||||||||||||||
| 毎週週初めに、進度フォローを行うとして、フォロー時の進度を設定して、イナヅマを入れていきました。途中若干の遅れが出ましたが、何とか5Eで基本設計を終了することが出来ました。デフォルトでのイナヅマ表示は最新イナヅマのみを表示するようになっています。全てのイナヅマを表示するには、「ツール」「全てのイナヅマを表示」にチェックマークを付けてください。(ドキュメントオープン時は最新イナヅマのみの表示となります) | |||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 3.6 詳細設計以降のスケジュールを立てる | |||||||||||||||||||||||||||||||||||||||
| 基本設計により、700stepのプログラム10本が必要となりました。1本のプログラムは詳細設計、コーディング、デバッグのタスクに分割され、詳細設計→コーディング→デバッグの先行制約を付けるものとします。(今回はプログラム間の先行制約は無しとしています)そして、全プログラムのデバッグが完了した時点で組み合わせ試験を行い、はれてこのプロジェクトの終了とします。 タスク数が、デフォルトの行数を超えるので、行数の追加と、開始日の移動(6月2日)を行います。 |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 3.7 詳細設計以降のスケジュールを登録する | |||||||||||||||||||||||||||||||||||||||
| 各プログラムのタスクを登録します。後ほど、最適化処理を行いますので、この段階では、作業者は中居固定、開始日も適当で結構です。 タスク種別と質量(700step)のみを確定させて下さい。最後に組み合わせ試験のタスクを質量500項目で登録します。 そして、各プログラム毎に先行制約を設定し、最後に各プログラムのデバッグタスクと組み合わせ試験タスクの間に先行制約を設定します。 先行制約の表示もデフォルトでは、選択タスクのみ表示となっています。全タスクの先行制約を表示させるには、「ツール」「全ての先行制約を表示」にチェックマークを付けてください。(ドキュメントオープン時は選択タスクのみの表示となります) |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 組み合わせ試験は、リーダーの中居が行うことに決定しているので、作業者を中居にロックしておきます。 | |||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| それでは、最適化開始日として6月2日を選択して、「プラグイン」「GAoptimize2....」より最適化を行います。 | |||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 最適化の実施による、タスクの行位置変更は行わないため、作業者毎に開始日順で並び替えてみましょう。 | |||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 3.8 詳細工程のプロジェクト管理 | |||||||||||||||||||||||||||||||||||||||
| 詳細工程では、消費時間を入力して実効率を求めてみましょう。 各メンバーから、担当タスクの作業時間(日単位)と進捗を報告してもらい、モードを消費時間設定モードとして、タイムチャートの当該行日付カラムをダブルクリックして作業時間をキー入力します。進捗はコンテンツビューの進捗カラムよりキー入力します。 |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 次の例は、草薙君の作業開始が1週間ほど遅れたため、遅れを取り戻そうと気合いを入れているところの例です。 | |||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| 3.9 スケジュールの見直し | |||||||||||||||||||||||||||||||||||||||
| プロジェクトが7月7日まで進みました。ここで、進捗状況を見てみると、新人の香取君の進捗がおもわしくありません。 | |||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| このままでは、組み合わせ試験の開始までに完了しそうにないので、他のメンバーの力を借りて挽回させましょう。 作業者一覧にて、木村君のコーディング作業を最適化対象とし、香取君の作業効率を見直しました。 |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| そして、7月7日を起点として残りタスクの最適化を行ってみます。 すると、香取君を除いたメンバーで何とか工程キープが出来そうですが、香取君の教育のため、d5タスクの作業者に香取君をロックして、再度最適化を行い、その結果、無事プロジェクトを終了させることが出来ました。 |
|||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||
| こうして得られた各人の作業実効率は、次回プロジェクトで活用し、スケジュール精度の向上を目指しましょう! | |||||||||||||||||||||||||||||||||||||||
| 4 将来のバージョンアップ | |||||||||||||||||||||||||||||||||||||||
| 将来のバージョンアップでは、こんなことが出来たらと考えています。ご期待ください。 ●作業者の実績管理 (アドレスブックみたいなものから、作業者を選んでプロジェクトに加えたり、作業実績を登録して、作業効率を更新していく) ●各メンバーからの進捗報告の自動化 ●プロジェクトの階層化 (大工程、中工程、小工程を関連付け、3次元的に管理する) ●印刷機能の充実 |
|||||||||||||||||||||||||||||||||||||||