0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Sheafly 1.3.0:チームの実際のキャパシティで計画を立てる(Rust 製スケジューラー)

0
Posted at

デスクトップ向けのプロジェクト計画ツール Sheafly(シーフリー)の v1.3.0 を公開しました。Microsoft Project と同じ考え方で、タスクの依存関係、カレンダー、リソースから日程を組み立て、クリティカル パス、コスト、過負荷、EVM を計算します。MIT ライセンスのオープンソースで、macOS / Windows / Linux 向けのインストーラーがあります。

今回のテーマは「この計画は、実際に作業する人たちに合っているか」です。誰が何をできて、いつ空いているかを Sheafly に伝えると、担当者の提案、適用前のプレビュー、一人ひとりの負荷の表示までを行います。

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. グラフは 1 回だけ作る:schedule() を prepare(グラフの構築と閉路検出)、schedule_dates、publish_derived に分け、平準化中は日付だけを計算し直します
  2. 遅らせたタスクの下流だけを再計算:遅延を入れたら、そのタスクとリンクでたどれる葉タスクだけを、通常と同じ schedule_leaf で計算し直します(ripple.rs)。ALAP タスクなど局所的に扱えない場合だけ全体を計算します
  3. 順序はヒープで管理:キーは(動かせない、先行タスク待ち、開始日、−優先度、スラック、UID)。日付が変わったタスクは押し直し、古いエントリは取り出したときに捨てます
  4. 空きの探索で期間を飛ばす:休暇のように単位が足りない期間は 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 はこれらの企業とは関係のない独立したソフトウェアです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?