mikuproject の次段を考えるための、実例 XML ベースの棚卸しメモ。
前提:
- 参照元は
local-data/に一時配置した実例 XML - Git 管理対象の testdata ではない
- ここでは
Project / Task / Resource / Assignment / Calendarごとに、実例で見えた主なタグを整理する - 目的は「現在の内部モデルで保持しているもの」と「今後候補になるもの」の差分を把握すること
3PointPlan-example.xml01145024.xmlProject_Grouping_and_Conditional_Formatting_Example.xmllink types.xml
NameTitleAuthorCompanyCreationDateLastSavedSaveVersionCurrentDateStartDateFinishDateScheduleFromStartDefaultStartTimeDefaultFinishTimeMinutesPerDayMinutesPerWeekDaysPerMonthStatusDateWeekStartDayWorkFormatDurationFormatCalendarUID
UIDIDNameOutlineLevelOutlineNumberWBSTypeCalendarUIDPriorityStartFinishDurationActualStartActualFinishDeadlineStartVarianceFinishVarianceWorkWorkVarianceTotalSlackFreeSlackCostActualCostRemainingCostRemainingWorkActualWorkMilestoneSummaryCriticalPercentCompletePercentWorkCompleteNotesConstraintTypeConstraintDatePredecessorLink
UIDIDNameTypeInitialsGroupWorkGroupMaxUnitsCalendarUIDStandardRateStandardRateFormatOvertimeRateOvertimeRateFormatCostPerUseWorkActualWorkRemainingWorkCostActualCostRemainingCostPercentWorkComplete
UIDTaskUIDResourceUIDStartFinishStartVarianceFinishVarianceDelayMilestoneWorkContourUnitsWorkActualWorkRemainingWorkCostActualCostRemainingCostPercentWorkCompleteOvertimeWorkActualOvertimeWork
UIDNameIsBaseCalendarIsBaselineCalendarBaseCalendarUIDWeekDaysExceptionsWorkWeeks
優先度が高そう:
- 直近の高優先候補は消化済み
メモ:
Project CalendarUIDと calendar 実体の整合 validation は追加済み- preview で
OutlineCodes / WBSMasks / ExtendedAttributesの代表値を追えるようにした ProjectModel -> Mermaid ganttの片方向補助出力に着手済み
後回し候補:
ExtendedAttributesの完全対応ExtendedAttributes
優先度が高そう:
Task CalendarUIDに紐づくカレンダー差分の可視化は前進済み
メモ:
Task CalendarUIDの存在 validation は追加済み- preview で task ごとの calendar 名を表示するようにした
- predecessor の validation は task 名つきで追えるようにした
実例で頻出だが重い:
BaselineTimephasedData
特記事項:
UID=0- 空
Name OutlineLevel=0
は実例で普通に出るため、validation では placeholder 扱いを考慮済み
優先度が高そう:
- 直近の高優先候補は消化済み
メモ:
- preview で resource ごとの calendar 名を表示するようにした
- validation 文言は resource 名つきで追いやすくした
実例で頻出だが重い:
BaselineTimephasedData
優先度が高そう:
- 直近の高優先候補は消化済み
メモ:
- preview で assignment から task/resource 名を追えるようにした
- validation 文言は assignment UID と既知の task/resource 名を併記するようにした
実例で頻出だが重い:
BaselineTimephasedDataActualCostRemainingCostOvertimeWorkActualOvertimeWork
特記事項:
ResourceUID=-65535
は実例で未割当を示す特別値として扱う前提
優先度が高そう:
- 直近の高優先候補は消化済み
メモ:
- calendarPreview を追加済み
Project / Task / Resource / BaseCalendarからの参照数を preview で見えるようにしたBaseCalendarUIDの自己参照 warning を追加済み
後回し候補:
- 直近の軽量候補は消化済み
現時点での優先順:
- 実例 XML ベースの
Calendar差分整理- task/resource ごとの calendar 差分が実例でどう使われるかを棚卸しする
ExtendedAttributesの次段整理- project 以外の
ExtendedAttributesをどこまで保持・表示するかを決める
- project 以外の
- preview / validation の最終整形
- 現状でかなり揃ったので、残る文言や導線を必要最小限で整える
- 重い構造の着手判断
Baseline/TimephasedDataを STEP 2 に含めるか別段に切るかを決める
- 補助交換形式の次段整理
Mermaid ganttの dependency 表現をどこまで育てるかを決めるCSV + ParentIDを別軸の交換形式として整理する
補足メモ:
CSV + ParentIDは、ID / ParentID / Nameを最小列とする「まず押さえるべき、よくある交換形式」の第1候補として整理開始したMermaid ganttは可視化・共有向けの片方向補助出力、CSV + ParentIDは編集・交換向けの候補として切り分けて考えるCSV + ParentIDは最小出力と最小逆変換を実装済みで、現時点の出力列はID / ParentID / WBS / Name / Start / Finish / PredecessorID / Resource / PercentComplete / PercentWorkComplete / Milestone / Summary / Critical / Type / Priority / Work / CalendarUID / ConstraintType / ConstraintDate / Deadline / Notes- UI には
CSVのダウンロード導線と、CSV ファイル読込導線を追加済み - 逆変換では
ParentIDから task 階層を再構築し、PredecessorIDとResourceから最小の dependency / resource / assignment を復元する PredecessorID / Resourceは|に加えて,;、の複数区切りを受け、trim と重複除去をかける- 構造エラーとして
ID重複、空Name、自己参照 / 欠落 / 循環ParentIDを import 時点で弾くようにした single CSVの次段比較候補としてtasks.csv / resources.csv / assignments.csvをメモ化した- 判断軸は「人が 1 枚で編集しやすいか」と「resource / assignment を正規化して安全に往復できるか」のトレードオフになる
- 複数 CSV に進む場合の最小草案として、
tasks.csv(ID / ParentID / Name),resources.csv(ResourceID / Name),assignments.csv(AssignmentID / TaskID / ResourceID)を置く想定にした - 分割時の実装順は
tasks.csv -> resources.csv -> assignments.csvが自然で、calendar はさらに次段と考える tasks.csvについては、ParentID正本、WBS補助、ID / ParentID / Name必須、自己参照 / 欠落 / 循環ParentIDは import error、という最小仕様草案まで具体化したtasks.csvの第1段ではBaseline / TimephasedData / ExtendedAttributes / cost 詳細は含めず、task 単体属性に集中するresources.csvについては、ResourceID正本、Nameは必須だが重複非推奨、task との紐付けは持たずassignments.csvへ分離する、という最小仕様草案まで具体化したresources.csvの第1段ではBaseline / TimephasedData / ExtendedAttributes / cost 実績詳細は含めないassignments.csvについては、AssignmentID / TaskID / ResourceID必須、TaskID / ResourceIDは既存表を参照、assignment 固有のStart / Finish / Units / Work / PercentWorkCompleteを持てる、という最小仕様草案まで具体化したassignments.csvの第1段ではBaseline / TimephasedData / ExtendedAttributes / cost 詳細 / contour 系は含めない
Baseline系TimephasedData- コスト系の完全保持
- 表示設定
- Project Server 連携系
ExtendedAttributesの完全対応
- STEP 2 は、まず「実例で頻出し、意味が分かりやすく、XML 往復しやすい項目」から拾うのがよい
BaselineやTimephasedDataは重要だが、構造が重いため別段階が自然- 実例 XML を読む限り、parser 自体よりも「どこまでを内部モデルで保持するか」の整理が次の主題
- preview / validation の detail 表示強化は一段進んだので、次は実例 XML を見ながら保持方針を詰める段階
- 補助交換形式については、現時点では
single CSVを主系統に維持し、複数 CSV は仕様草案止まりにするのが妥当 - 複数 CSV へ切り替える条件は、同名 resource 衝突、多重 assignment の lossless 保持、
ResourceID正本連携の要求が具体化したとき Mermaid ganttは、単一 predecessor かつFSかつ lag なし かつ変換しやすい duration の task だけafter ...を使う部分ネイティブ化まで進めた- 複雑な predecessor は、
typeやlagを付けたコメントへ逃がす方針にした lagはPT...をそのまま見せるのではなく、2hのような短い表現へ寄せるところまで進めた