デスクトップ向けのプロジェクト計画ツール Sheafly(シーフリー)の v1.3.0 を公開しました。Microsoft Project と同じ考え方で、タスクの依存関係、カレンダー、リソースから日程を組み立て、クリティカル パス、コスト、過負荷、EVM を計算します。MIT ライセンスのオープンソースで、macOS / Windows / Linux 向けのインストーラーがあります。
今回のテーマは「この計画は、実際に作業する人たちに合っているか」です。誰が何をできて、いつ空いているかを Sheafly に伝えると、担当者の提案、適用前のプレビュー、一人ひとりの負荷の表示までを行います。
画面の表示言語はベトナム語と英語です。 日本語 UI はまだありません。この記事のメニュー名は英語表示のものです。
Sheafly でできること
- スケジューリング:FS / SS / FF / SF の依存関係とラグ、CPM によるクリティカル パスとスラック。制約、期限、手動スケジュール、タスクの分割、繰り返しタスク。Fixed Duration / Fixed Units / Fixed Work と effort-driven
- カレンダー:時間単位の稼働時間、休日、例外日、期間ごとの稼働週。別のカレンダーを基にでき、プロジェクトの休日がすべてのリソース カレンダーに反映されます
- 進捗とコスト:ベースライン 0〜10、実績日付が日程を動かす(Project と同じ挙動)、手入力の実績コスト。EVM(PV、EV、AC、SPI、CPI、EAC など)、バーンダウン、S カーブ
- ビュー:ガント、進捗ガント、リソース シート、タスク使用状況、ネットワーク図、そして新しい Resource Load。任意の項目で絞り込み・グループ化・強調。PDF 書き出し
-
データの安全性:
.sheaflyに元に戻す履歴ごと保存、アトミックな保存、30 秒ごとの自動保存と異常終了後の復元、一部が壊れたファイルも開ける - ほかのツールとの連携:Microsoft Project とは MSPDI(XML)で交換。取り込み後に、読み方が変わった項目や日程が動いたタスクを一覧表示。新機能:CSV / Excel の取り込み
1.3.0 の新機能
キャパシティに基づく計画
- 日付ごとの稼働可能量:休暇、時短勤務、途中からの参加など、期間ごとに単位を設定。「4 hrs/day」のように 1 日あたりの時間でも入力できます
- スキルと割り当てルール:スキルに名前を付けて人に持たせ、タスクのカスタム フィールドから担当者(またはそのスキルを持つ全員)を選ぶルールを書きます
- ルールによる割り当て:未割り当てのタスクに担当者を提案し、スキルを持つ人に振り分けます。適用する前に、動くタスク、守れない期限、過負荷のまま残る人をプレビューできます。適用は 1 回の Undo で戻せます
- 割り込みタスク:「Interrupts」にチェックすると、平準化のときに優先度の低い進行中の作業より先に入り、その作業は前後に分割されます。ガントでは隙間を破線で描きます
- Resource Load ビュー:一人ひとりの作業量と稼働可能量を日ごと・週ごとに表示。人をクリックすると担当タスクが見えます
- 期間外のタスク:指定した日付やマイルストーン、または自分の期限より後に終わるタスクを絞り込み・強調。スプリントに入りきらない作業がすぐ分かります
その他
- 平準化が数十ミリ秒に:500 人・5,000 タスクの平準化が約 46 秒から約 40 ms になりました。並べる順序(開始日、優先度、スラック、期限、期間、ID、カスタム フィールド。それぞれ昇順・降順)は Project Information → Leveling で設定します
- カスタム フィールド:テキスト、数値、選択肢。表の列、詳細パネル、絞り込み、グループ化、フィル ダウンに対応し、MSPDI では拡張属性として書き出します
- ダーク テーマ、タスクのサブツリーのコピー&ペースト(割り当てとリンクごと)、分割タスクの区間のドラッグ
- macOS:アドホック署名を付けたので、「壊れている」と表示されず「このまま開く」を選べるようになりました
詳しくは 1.3.0 のリリース ノートをご覧ください。
平準化を 1,000 倍速くした方法
平準化はシリアル方式です。動かせないタスク(手動、開始済み、MSO / MFO)を先に置き、残りを優先順に 1 つずつ、すべてのリソースに空きがある最初の時点へ置いていきます。置いたタスクは二度と動かしません。以前の実装は、タスクを 1 つ遅らせるたびにプロジェクト全体を再スケジュールし、配置済みタスクの日付も線形に探していたため、タスク数の 2 乗で時間が増えていました。プロファイルでは、この線形探索が 38%、日程の再計算が 46% を占めていました。主な変更は次のとおりです。
-
グラフは 1 回だけ作る:
schedule()をprepare(グラフの構築と閉路検出)、schedule_dates、publish_derivedに分け、平準化中は日付だけを計算し直します -
遅らせたタスクの下流だけを再計算:遅延を入れたら、そのタスクとリンクでたどれる葉タスクだけを、通常と同じ
schedule_leafで計算し直します(ripple.rs)。ALAP タスクなど局所的に扱えない場合だけ全体を計算します - 順序はヒープで管理:キーは(動かせない、先行タスク待ち、開始日、−優先度、スラック、UID)。日付が変わったタスクは押し直し、古いエントリは取り出したときに捨てます
- 空きの探索で期間を飛ばす:休暇のように単位が足りない期間は 1 回で飛ばします。さらに、カレンダーや稼働可能量がもう変わらない時点を過ぎて、週の同じ位置に戻ってきたら「この先も入らない」と判断して探索を止めます
固定シードで生成した 150 個のプロジェクト(グループ、各種リンク、分割タスク、制約、開始済みタスク、個別カレンダーなど)を、全体を計算し直す方法と局所的に計算する方法の両方で平準化し、遅延、日付、スラック、過負荷がすべて一致することをユニット テストで確かめています。
| 人数 | タスク数 | 以前 | 1.3.0 |
|---|---|---|---|
| 50 | 500 | 0.2 s | 3 ms |
| 300 | 3,000 | 11.9 s | 22 ms |
| 500 | 5,000 | 46 s | 40 ms |
| 1,000 | 10,000 | — | 95 ms |
平準化は決定的ではないヒューリスティックなので、コマンド ログには要求(LevelResources)ではなく、決まった結果(ApplyLeveling { delays })を残します。アルゴリズムを変えても、昔のファイルを開いたときに日程がずれません。
今後の予定
予定であり、日付は決まっていません。順序はフィードバックで変わることがあります。
モンテカルロ法によるスケジュール リスク分析
1 つだけの終了日は誤解を招きがちです。各タスクの見積もりを範囲(最小〜最大)で入力すると、Sheafly 自身のスケジューラーと平準化で数千回のシミュレーションを行い、終了日の P50 と P90 を示します(「50% の確率で X 日まで、90% で Y 日までに終わる」)。期限を守れない可能性が高いタスクには印を付けます。結果は計算値で計画そのものは変えず、同じデータからは常に同じ数字が出ます(乱数のシードを固定)。
1.3.0 の平準化の高速化は、その準備でもあります。数千回の実行を 1 分以内に終えるには、1 回の実行が十分に速くなければなりません。
AI による提案
AI モデルにつないで計画を読ませ、ボトルネックになっているタスク、作業を引き取れそうな人、抜けていそうな依存関係、注意すべきリスクなどを提案させます。原則はルールによる割り当てと同じで、AI は提案するだけです。プレビューして決めるのは人で、どの変更も元に戻せます。数字は AI の推測ではなく、これまでどおりエンジンが計算します。
JIRA、Backlog、Asana との連携
チームが使っているタスク管理ツールと同期します。課題、担当者、見積もり、状態を取り込んで全体の計画と進捗の追跡に使い、予測した日付を書き戻します。チームは普段のツールで作業を続け、プロジェクト マネージャーは Sheafly で日程、キャパシティ、リスクを見る、という使い方を目指しています。
そのほか
- インストーラーの署名と公証
- 数万行のタスク表とガントの表示速度
- 画面の言語の追加(日本語など)
インストール
GitHub の Releases から入手できます。
| OS | ファイル |
|---|---|
| macOS(Apple Silicon と Intel) | Sheafly_1.3.0_universal.dmg |
| Windows |
.msi または -setup.exe
|
| Linux |
.AppImage、.deb、.rpm
|
インストーラーには開発者証明書の署名がまだありません。macOS では、一度 Sheafly を開こうとしてから「システム設定」→「プライバシーとセキュリティ」で「このまま開く」を選んでください。Windows では SmartScreen で「詳細情報」→「実行」を選びます。
1.3.0 は 1.0.0〜1.2.0 のプロジェクトをすべて開けます。1.3.0 で保存したプロジェクトは、それより古いバージョンでは開けません。
おわりに
不具合の報告や要望は GitHub の Issues にお願いします。特に JIRA、Backlog、Asana をお使いのチームから、何を同期したいかを聞かせていただけるとうれしいです。
Microsoft Project は Microsoft Corporation の商標です。JIRA、Backlog、Asana はそれぞれの所有者の商標です。Sheafly はこれらの企業とは関係のない独立したソフトウェアです。
