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?

マイルストーンとイテレーション

Posted at

マイルストーンとイテレーション

(トップページはこちら) - (作業の計画を始める)

「スプリント管理とリリース計画を同時に進めたいが、ツールが対応していない」「チームごとに異なるサイクルで動いているため、進捗の可視化が難しい」このような課題に直面していませんか。

GitLabは、マイルストーンとイテレーションという2つの時間管理機能を提供しています。これらを適切に組み合わせることで、短期的なスプリント実行と長期的なリリース計画を両立できます。本記事では、両機能の特性と実践的な活用パターンを解説します。

1. マイルストーンとイテレーションの基本特性

1.1. 機能比較

両機能の違いを表で整理します。

項目 マイルストーン イテレーション
利用可能ティア Free, Premium, Ultimate Premium, Ultimate
スコープ プロジェクトまたはグループ グループのみ
開始日 任意(未設定可) 必須
終了日 任意(未設定可) 必須
期間の重複 許可 同一ケイデンス内で不可
自動スケジューリング なし あり(1〜4週間間隔)
自動ロールオーバー なし あり
割り当て対象 イシュー、エピック、マージリクエスト イシュー、エピック、マージリクエスト
リリース機能統合 あり なし
API Project/Group Milestones API Iterations API

1.2. 使い分けの指針

マイルストーンを使用する場合

  • リリースバージョン管理(例: v2.5.02025 Q1 Release
  • 期間が不定または柔軟な目標管理
  • プロジェクト単位での進捗管理
  • リリースエビデンスの自動生成が必要な場合

イテレーションを使用する場合

  • 固定期間のスプリント管理(1〜4週間)
  • 自動的なスケジュール生成が必要な場合
  • 未完了作業の自動ロールオーバーが必要な場合
  • グループ全体で統一されたサイクル管理

2. マイルストーンの実践活用

2.1. スコープの選択: プロジェクトとグループ

プロジェクトマイルストーンは、単一プロジェクト内のイシューとマージリクエストのみを管理します。小規模なチームや独立したプロジェクトに適しています。

グループマイルストーンは、グループ内のすべてのプロジェクトのイシュー、エピック、マージリクエストを横断的に管理します。複数プロジェクトにまたがるリリースや、組織全体の目標管理に適しています。

プロジェクトマイルストーンは、後からグループマイルストーンに昇格できます。昇格時、同名のプロジェクトマイルストーンがすべて統合され、割り当てられていた作業項目も自動的に移行されます。この操作は不可逆的です。

2.2. リリース管理の実装

マイルストーンをリリース管理に活用する具体的な手順です。

設定例

  1. マイルストーン作成

    • タイトル: Version 2.5.0
    • 期限日: 2025-03-31
    • 開始日: 2025-02-01(任意)
  2. イシュー割り当て

    • 右サイドバーのマイルストーンから選択
    • または/milestone %"Version 2.5.0"クイックアクション使用
    • または一括編集で複数イシューに一括割り当て
  3. リリース作成時にマイルストーンを関連付け

    • リリースエビデンスが自動生成される
    • 監査証跡として保存される

2.3. 進捗トラッキング

マイルストーン詳細ページでは、作業の状態を複数の視点で確認できます。

ワークアイテムタブ(3列表示)

  • 未着手(オープン + 未割り当て)
  • 進行中(オープン + 割り当て済み)
  • 完了(クローズ済み)

マージリクエストタブ(4列表示)

  • 作業中(オープン + 未割り当て)
  • マージ待ち(オープン + 割り当て済み)
  • 却下(クローズ済み)
  • マージ済み

サイドバー情報

  • 完了率: クローズ済み数 ÷ 総数(パーセンテージ表示)
  • 合計作業時間: すべての作業項目の時間トラッキング合計
  • 合計ウェイト: すべてのイシューのウェイト合計
  • マージリクエスト統計: 総数、オープン、クローズ、マージ済みの各カウント
  • 関連リリース: リンク形式で表示
  • 参照番号: クリップボードコピー可能

バーンダウン・バーンアップチャート

  • バーンダウン: 残作業の推移を表示(完了進捗の追跡)
  • バーンアップ: 追加・完了作業の日次推移を表示(スコープ変更の可視化)

2.4. 高度なフィルタリング

イシューボードやリストページで使用できる特別なフィルタです。

フィルタ 表示内容 用途
None マイルストーン未割り当て バックログ管理
Any マイルストーン割り当て済み 計画済み作業の確認
Upcoming 将来開始予定のオープンマイルストーン 次期計画の確認
Started 現在日付と重複するオープンマイルストーン 進行中作業の確認

Startedフィルタは、開始日と期限日の両方が設定されているマイルストーンのみが対象です。GitLab 18.0で動作ロジックが変更されています。

3. イテレーションの実践活用

3.1. イテレーションケイデンスの設計

イテレーションケイデンスは、イテレーションの自動生成と管理を行うコンテナです。

自動スケジューリングの設定項目

項目 説明 設定例
自動化開始日 最初のイテレーション開始日。以降のイテレーションは同じ曜日に開始 2025-01-06(月曜日)
期間 各イテレーションの長さ 2週間
今後のイテレーション数 常に維持する未来のイテレーション数 3
ロールオーバー 未完了イシューの自動移動 有効

設定例: 2週間スプリント

ケイデンス名: 開発チーム スプリント 2025
自動化開始日: 2025-01-06(月曜日)
期間: 2週間
今後のイテレーション数: 3
ロールオーバー: 有効

この設定により、以下のイテレーションが自動生成されます。

  • スプリント1: 2025-01-06 〜 2025-01-19
  • スプリント2: 2025-01-20 〜 2025-02-02
  • スプリント3: 2025-02-03 〜 2025-02-16
  • スプリント4: 2025-02-17 〜 2025-03-02

スプリント1が終了すると、スプリント5が自動生成され、常に3つの未来のイテレーションが維持されます。

3.2. 自動ロールオーバーの動作

ロールオーバー機能を有効にすると、イテレーション終了時に未完了のイシューが次のイテレーションに自動移動されます。

動作仕様

  • 実行時刻: インスタンスタイムゾーンの深夜0時(デフォルトはUTC)
  • 実行ユーザー: GitLab Automation Bot(automation-bot1
  • 対象: オープン状態のすべてのイシュー
  • 記録: イシューのシステムノートに記録される
  • 課金: Automation Botは課金対象外

3.3. スプリント計画のワークフロー

2週間スプリントを運用する場合の典型的なワークフローです。

スプリント開始前(計画フェーズ)

  1. バックログからイシューを選択
  2. 次のイテレーションに割り当て
    • 右サイドバーから選択
    • または/iteration *iteration:"スプリント2"クイックアクション
  3. イシューにウェイトを設定(見積もり)
  4. 担当者を割り当て

スプリント実行中

  1. イテレーションレポートで進捗確認
  2. バーンダウンチャートで残作業を監視
  3. ラベルでグループ化して、チーム別・機能別の進捗を確認

スプリント終了時

  1. 完了イシューをクローズ
  2. 未完了イシューは自動的に次のスプリントにロールオーバー
  3. レトロスペクティブでベロシティを確認

3.4. イテレーションレポートの活用

イテレーションレポートは、スプリントの健全性を評価する重要な情報源です。

オープンイテレーションの表示項目

  • 完了済み: X / Y(Xはクローズ済み、Yは総数)
  • 未着手: X / Y(オープン + 未割り当て)
  • 進行中: X / Y(オープン + 割り当て済み)
  • バーンダウンチャート: 残作業の推移
  • バーンアップチャート: 追加・完了作業の日次推移

クローズイテレーションの表示項目

  • 期限日までに完了したイシュー総数
  • 最終的なバーンダウン・バーンアップチャート
  • ベロシティ計算の基礎データ

ラベルによるグループ化

イテレーションレポートでは、ラベルごとにイシューをグループ化できます。

使用例:

  • チームラベル(team::frontendteam::backend)でグループ化し、チーム別の進捗を確認
  • 機能ラベル(feature::authfeature::api)でグループ化し、機能別のスコープを確認
  • 優先度ラベル(priority::highpriority::medium)でグループ化し、重要作業の状況を確認

3.5. サブグループ・プロジェクトスコープのレポート

グループレベルで作成したイテレーションを、サブグループやプロジェクトの視点で表示できます。

具体例

グループ構成:

開発グループ
├── プロジェクトA(イシュー2件)
└── プロジェクトB(イシュー3件)

同じイテレーション「スプリント1」に、プロジェクトAから2件、プロジェクトBから3件のイシューが割り当てられている場合:

グループレベルのレポート

  • 総イシュー数: 5
  • バーンダウンチャート: 5件の推移を表示

プロジェクトAのレポート

  • 総イシュー数: 2
  • バーンダウンチャート: 2件の推移を表示

プロジェクトBのレポート

  • 総イシュー数: 3
  • バーンダウンチャート: 3件の推移を表示

これにより、全体の進捗とプロジェクト別の進捗を同時に追跡できます。

3.6. 手動管理から自動スケジューリングへの移行

既存の手動イテレーションケイデンスを自動スケジューリングに切り替える場合、既存イテレーションとの整合性を保つ必要があります。

移行時の制約

  • 自動化開始日は、既存のオープンイテレーションと重複できない
  • 既存の未来のイテレーションは、新しいスケジュールに合わせて調整される
  • 過去のクローズ済みイテレーションは変更されない

移行例

現在日: 2025-04-15(金曜日)

既存イテレーション:

  • イテレーション1: 2025-04-04(月)〜 2025-04-08(金)【クローズ済み】
  • イテレーション2: 2025-04-12(火)〜 2025-04-15(金)【進行中】
  • イテレーション3: 2025-05-03(火)〜 2025-05-06(金)【未来】

自動化設定:

  • 自動化開始日: 2025-04-18(月)
  • 期間: 1週間
  • 今後のイテレーション数: 2

移行後のイテレーション:

  • イテレーション1: 2025-04-04(月)〜 2025-04-08(金)【クローズ済み】
  • イテレーション2: 2025-04-12(火)〜 2025-04-15(金)【進行中】
  • イテレーション3: 2025-04-18(月)〜 2025-04-24(日)【未来】← 調整された
  • イテレーション4: 2025-04-25(月)〜 2025-05-01(日)【未来】← 新規生成

既存のイテレーション3は、新しいスケジュールに合わせて日付が調整されます。また、「今後のイテレーション数: 2」を満たすため、イテレーション4が自動生成されます。

4. 実践的な併用パターン

4.1. SAFe型: プログラムインクリメントとスプリント

大規模アジャイル開発(SAFe)を実践する組織向けのパターンです。

構成

  • マイルストーン: 8〜12週間のプログラムインクリメント(PI)
  • イテレーション: 2週間のスプリント

設定例

マイルストーン:

  • タイトル: PI 2025-Q1
  • 開始日: 2025-01-06
  • 期限日: 2025-03-28(12週間)

イテレーションケイデンス:

  • 自動化開始日: 2025-01-06
  • 期間: 2週間
  • 今後のイテレーション数: 3
  • ロールオーバー: 有効

運用フロー

メリット

  • PIレベルの長期目標とスプリントレベルの短期実行を分離
  • PIのバーンダウンで全体進捗、イテレーションレポートでスプリント進捗を確認
  • エピックにマイルストーン、イシューにイテレーションを割り当てることで階層的な管理が可能

4.2. リリーストレイン型: 継続的リリースとスプリント

継続的デリバリーを実践する組織向けのパターンです。

構成

  • マイルストーン: リリースバージョン(例: v2.5.0v2.6.0
  • イテレーション: 2週間スプリント(継続的に実行)

設定例

マイルストーン1:

  • タイトル: v2.5.0
  • 期限日: 2025-02-28

マイルストーン2:

  • タイトル: v2.6.0
  • 期限日: 2025-03-31

イテレーションケイデンス:

  • 自動化開始日: 2025-01-06
  • 期間: 2週間
  • 今後のイテレーション数: 4
  • ロールオーバー: 有効

運用フロー

  1. スプリント1〜2でv2.5.0向けの機能を開発
  2. スプリント3〜4でv2.6.0向けの機能を開発
  3. 各イシューには、イテレーション(スプリント)とマイルストーン(リリース)の両方を割り当て
  4. スプリント終了時にイテレーションレポートで短期進捗を確認
  5. リリース前にマイルストーンレポートで全体完成度を確認

メリット

  • スプリントとリリースのサイクルを独立して管理
  • 複数のリリースにまたがる作業を並行実行可能
  • リリース機能との統合により、リリースエビデンスを自動生成

4.3. マルチチーム型: チーム別スプリントと共通目標

複数チームが異なるペースで作業する組織向けのパターンです。

構成

  • グループマイルストーン: 四半期目標や全社目標
  • イテレーションケイデンス: チームごとに作成

設定例

グループマイルストーン:

  • タイトル: 2025 Q1 OKR
  • 開始日: 2025-01-01
  • 期限日: 2025-03-31

フロントエンドチームのイテレーションケイデンス:

  • 期間: 1週間
  • 今後のイテレーション数: 2

バックエンドチームのイテレーションケイデンス:

  • 期間: 2週間
  • 今後のイテレーション数: 3

運用フロー

  1. 全チーム共通の目標をグループマイルストーンに設定
  2. 各チームは独自のイテレーションケイデンスでスプリントを実行
  3. すべてのイシューに、チーム別イテレーションと共通マイルストーンを割り当て
  4. チームレベルではイテレーションレポートで進捗確認
  5. 組織レベルではマイルストーンレポートで全体進捗確認

メリット

  • チームごとに最適なスプリント期間を設定可能
  • 共通のマイルストーンで組織全体の目標を統一
  • サブグループスコープのイテレーションレポートで、チーム別の詳細進捗を確認

4.4. カンバン型: マイルストーンのみ使用

スプリントを使用しないカンバン方式の組織向けのパターンです。

構成

  • マイルストーン: リリースまたは四半期目標
  • イテレーション: 使用しない

設定例

マイルストーン:

  • タイトル: 2025 Q1
  • 開始日: 2025-01-01
  • 期限日: 2025-03-31

運用フロー

  1. バックログのイシューにマイルストーンを割り当て
  2. カンバンボードで作業を進める
  3. マイルストーンのバーンダウンチャートで進捗を監視
  4. 期限日に向けて継続的にデリバリー

メリット

  • 固定期間のスプリントに縛られない柔軟な運用
  • マイルストーンの開始日を設定しないことで、より柔軟な計画が可能
  • シンプルな構成で管理コストを削減

5. 権限と操作

5.1. 必要な権限

GitLab 17.7以降、以下の操作にはPlannerロール以上が必要です。

操作 必要ロール 対象
マイルストーン作成 Planner以上 プロジェクトまたはグループ
マイルストーン編集 Planner以上 プロジェクトまたはグループ
マイルストーン削除 Planner以上 プロジェクトまたはグループ
マイルストーン昇格 Planner以上 グループ
イテレーションケイデンス作成 Planner以上 グループ
イテレーションケイデンス編集 Planner以上 グループ
イテレーションケイデンス削除 Planner以上 グループ
イテレーション作成(手動) Planner以上 グループ
イテレーション編集 Planner以上 グループ
イテレーション削除 Planner以上 グループ

5.2. 基本操作

マイルストーンの作成

UIから:

  1. 計画 > マイルストーンを選択
  2. 新しいマイルストーンをクリック
  3. 必須項目を入力
    • タイトル(必須)
    • 説明(任意、Markdown対応、最大1,048,576文字)
    • 開始日(任意)
    • 期限日(任意)
  4. 新しいマイルストーンをクリック

APIから:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
  --data "title=v2.5.0&due_date=2025-03-31" \
  "https://gitlab.com/api/v4/projects/278964/milestones"

イテレーションケイデンスの作成

UIから:

  1. 計画 > イテレーションを選択
  2. 新しいイテレーションケイデンスをクリック
  3. 基本情報を入力
    • タイトル(必須)
    • 説明(任意)
  4. 自動スケジューリングを設定
    • 自動スケジューリングを有効化をチェック
    • 自動化開始日を選択
    • 期間を選択(1〜4週間)
    • 今後のイテレーション数を入力
    • ロールオーバーを有効化(任意)
  5. ケイデンスを作成をクリック

イシューへの割り当て

方法1: サイドバーから

  1. イシューを開く
  2. 右サイドバーのマイルストーンまたはイテレーション編集をクリック
  3. リストから選択

方法2: クイックアクション

/milestone %"v2.5.0"
/iteration *iteration:"スプリント2"

方法3: 一括編集

  1. イシューリストでチェックボックスを選択
  2. 一括編集をクリック
  3. マイルストーンまたはイテレーションを選択

方法4: ボードでドラッグ&ドロップ

  • マイルストーンリストにイシューをドラッグ

5.3. API活用

マイルストーンの取得

# プロジェクトマイルストーン一覧
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  "https://gitlab.com/api/v4/projects/278964/milestones"

# グループマイルストーン一覧
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  "https://gitlab.com/api/v4/groups/9970/milestones"

# 特定マイルストーンの詳細
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  "https://gitlab.com/api/v4/projects/278964/milestones/5"

マイルストーンに割り当てられたイシューの取得

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  "https://gitlab.com/api/v4/projects/278964/milestones/5/issues"

イテレーションの取得

# グループのイテレーション一覧
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  "https://gitlab.com/api/v4/groups/9970/iterations"

6. トラブルシューティング

6.1. よくある問題と解決策

問題1: イシュートラッキングが無効なプロジェクトでマイルストーンが表示されない

解決策: URLに/-/milestonesを追加してアクセス

https://gitlab.com/gitlab-org/sample-project/-/milestones

または、グループのマイルストーンページから確認できます。

問題2: イテレーションケイデンスの自動化開始日が選択できない

原因: 既存のオープンイテレーションと重複している

解決策: 既存のオープンイテレーションの終了日より後の日付を選択

問題3: プロジェクトマイルストーンをグループマイルストーンに昇格できない

原因: グループのPlannerロールが必要

解決策: グループの権限を確認し、必要に応じて権限を付与

問題4: ロールオーバーが実行されない

確認項目:

  • イテレーションケイデンスでロールオーバーが有効化されているか
  • イテレーションが正常に終了しているか(期限日を過ぎているか)
  • 次のイテレーションが存在するか

問題5: バーンダウンチャートが表示されない

原因: イシューにウェイトが設定されていない、または開始日が設定されていない

解決策:

  • イシューにウェイトを設定
  • マイルストーンまたはイテレーションに開始日を設定

7. まとめ

GitLabのマイルストーンとイテレーションは、それぞれ異なる目的に最適化された時間管理機能です。

マイルストーンは、柔軟な期間設定とリリース管理統合により、長期目標やリリース計画に適しています。Free tierから利用でき、プロジェクトレベルとグループレベルの両方で機能します。

イテレーションは、固定期間のタイムボックスと自動スケジューリングにより、スプリントのような反復的開発サイクルに最適です。Premium tier以上で利用でき、グループレベルで統一されたサイクル管理を実現します。

両機能を組み合わせることで、SAFeのようなスケールドアジャイルから、カンバンのような柔軟な手法まで、多様な開発プロセスに対応できます。組織の規模、開発手法、チーム構成に応じて、最適な組み合わせを選択してください。

選択の指針

  • 小規模チーム、柔軟な計画: マイルストーンのみ
  • スプリント開発、自動化重視: イテレーション + マイルストーン
  • 大規模組織、階層的管理: グループマイルストーン + 複数イテレーションケイデンス
  • 継続的デリバリー: リリースマイルストーン + スプリントイテレーション

実際の運用では、小さく始めて段階的に拡張することを推奨します。まずマイルストーンで基本的な進捗管理を開始し、必要に応じてイテレーションを導入することで、チームへの負担を最小限に抑えながら、効果的なプロジェクト管理を実現できます。

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?