デスマーチ?(2)

まず仕様をまとめることにした。
ペイントとドローの両方の機能を持つので仕様は大きい。これが全部できるかどうかは微妙(というか落ちるものが出てくるに違いない)で,そのたびに方針を立て直している暇はない。というわけで,仕様を3つのレベルに分けることにした。三重の同心円のイメージで,中心が必須のコア機能,中央ができるだけ追加する機能,外側が状況に応じて落とすか実装を変える機能と分けた。
UIもぜんぜん決まっていなかったので,まず操作の基本を決めた。こんな感じ。

  • マウス右クリックはカラースポイト
  • マウス左クリックは選択
  • マウス左ダブルクリックは設定ダイアログオープン
  • マウス左ロングプレスは一覧選択

ここに,山ほどあるダイアログやらツールパレットの機能を当てはめていく。
同時にプログラミングを担当するチーム(人間を追加してもダメだろうということで,ここは引き続き同じ外注さんが担当)と仕様の最後の絞込みを行う。仕様の調整は毎日のように行って,仕様を削ったり変えたりした。
ドローエンジンはあるていどできている。ペイントエンジンはバージョン1をできるだけ流用する。私の他には絵を描く人間がチームに追加されたので,その人にテストとサンプル画像をどんどん作ってもらう。
こんなことをやってなんとか発売にこぎつけた。バグもあったけど,そこそこ使えるソフトになったと思う。
いま思うと仕様を三段階に分けたことがデスマーチになりかけたプロジェクトをなんとかゴールに導いたと思う。落とせる機能とそうじゃない機能をチーム内で共有できたので,多少の余裕ができたような気がする。もちろんスケジュールが順調なら「落とせる機能」なんて考える必要はないんだけどね。