GitLabでスケジュールを管理するときに使う機能は、マイルストーン、Issueの期日、イテレーション、ロードマップの4つです。このうちFreeプランで使えるのはマイルストーンと期日だけで、ガントチャートに近いロードマップやバーンダウンチャートはPremium以上に限られます。本記事では、マイルストーンと期日の設定手順、期日のメール通知とカレンダー購読、Freeのままガントチャートを描くためのMermaid記法とAPIスクリプトを、公式ドキュメントの該当ページへのリンクつきで解説します。後半はPremiumで増える機能と、スケジュール管理をGitLabに寄せるか専用ツールに分けるかの判断基準です。画面名・プラン区分は2026年11月時点のGitLab.comの公式ドキュメントで確認したものです。
まとめ:GitLabのスケジュール管理はマイルストーンと期日の2つから組む
GitLabのスケジュール管理は、リリースやスプリントの単位をマイルストーンで切り、個々のIssueに期日を入れる形が基本になります。どちらもFreeで使え、マイルストーンの画面では閉じたIssueの数から進捗率が自動で出ます。
Freeに無いのは「時間軸で並べて見る画面」です。ロードマップ、バーンダウンチャート、イテレーションはPremium以上の機能で、GitLab.comのPremiumは1ユーザー月29ドル(年払い)かかります。工程表が見たいだけなら、マイルストーンAPIから取った日付をMermaidのガント記法に流し込めば、Freeのまま工程表をIssueやWikiに貼れます。
開発メンバーが工程の大半を担うならGitLabに寄せ、営業や企画など開発以外の人が日程を見るなら専用のタスク管理ツールに分けるのが判断の目安です。
GitLabでスケジュールを管理する機能の全体像とFree・Premiumで使える範囲
マイルストーン・期日・イテレーション・ロードマップの4機能の役割分担
4つの機能は、扱う時間の長さが違います。マイルストーンはリリースやスプリントのような「締め切りのあるIssueの束」で、開始日と期限日を持てます。期日(Due date)は1件のIssueの締め切りです。
イテレーションは、公式ドキュメントで「通常1〜3週間」とされる時間枠で、スプリントの区切りを自動で作る機能です。ロードマップは、エピックとマイルストーンを横軸の時間に並べて表示する画面で、GitLabでガントチャートに一番近いのはこれです。
マイルストーンという言葉自体の意味や、KPIとの違いはマイルストーンとKPI・メルクマールの違いの解説で整理しています。
Freeで使えるのはマイルストーンと期日まで・ガントチャート相当はPremium
各機能のプラン区分は次のとおりです。GitLabの料金ページでは、Premiumは1ユーザー月29ドル(年払い)、Ultimateは個別見積もりになっています。
| 機能 | Free | Premium | 使う場面 |
|---|---|---|---|
| マイルストーン(進捗率・期限) | 使える | 使える | リリース単位の締め切り管理 |
| Issueの期日・メール通知・カレンダー購読 | 使える | 使える | 個別タスクの締め切り |
| 見積もり・作業時間の記録 | 使える | 使える | 工数の予実 |
| バーンダウン・バーンアップチャート | 使えない | 使える | スプリントの消化ペース |
| イテレーション | 使えない | 使える | 1〜3週間のスプリント運用 |
| エピック・ロードマップ | 使えない | 使える | 複数プロジェクトの工程表 |
Freeで工程を管理する場合、「時間軸の画面が無い」ことが一番の制約になります。この穴を埋める方法は、後半の「Freeプランでガントチャートを描く」の章で扱います。
マイルストーンを作成してIssueを割り当て進捗率と期限を追う設定手順
プロジェクトとグループのマイルストーンの違いと開始日・期限日の入れ方
マイルストーンには、1つのプロジェクトの中だけで使うプロジェクトマイルストーンと、配下の全プロジェクトのIssueとMRに付けられるグループマイルストーンがあります。フロントエンドとバックエンドでリポジトリを分けているチームは、最初からグループで作るほうが手戻りがありません。
- 対象のプロジェクトかグループを開き、左サイドバーのPlanからMilestonesを選ぶ
- New milestoneを選び、タイトルを入れる(同じ階層で同名は作れない)
- 開始日(Start date)と期限日(Due date)を入れて作成する
開始日と期限日は任意項目ですが、空のままにすると後述の「Started」の絞り込みやバーンダウンチャートの対象から外れます。作成に必要なロールはPlanner以上です。プロジェクトマイルストーンをグループへ昇格(Promote)すると、同じグループ内の同名マイルストーンが1つにまとまり、公式ドキュメントにあるとおり元には戻せません。
クイックアクションでIssueにマイルストーン・期日・見積もりを一括設定
Issueの右側の欄を1つずつ開くより、説明やコメントにクイックアクションを書くほうが速く済みます。保存した時点で各欄に反映されます。
/milestone %"v1.2"
/due 2026-12-18
/estimate 3d
/spend 4h 2026-12-02
Time trackingのドキュメントでは、1日は8時間、1週は5日、1か月は4週として換算します。/estimate 3dは24時間として扱われる、ということです。見積もりと実績を入れておくと、マイルストーンの画面にIssueとMRの作業時間の合計が出るため、リリース単位で工数の予実を比べられます。
Issueの作り方やラベル・ボードの基本はGitLabの使い方(Issue・MR・CI/CDまでの手順)で扱っています。
マイルストーン画面の進捗率と「Upcoming」「Started」絞り込みの読み方
マイルストーンの画面に出る進捗率は、閉じたIssue(作業項目)の件数から計算されます。重さは考慮されません。5件のうち簡単な4件が閉じただけでも80%と表示されるので、残り1件が大きい場合は数字が実態より進んで見えます。
Issue一覧をマイルストーンで絞り込むときは、特殊な値が2つ使えます。「Upcoming」は開始日が未来のマイルストーンが付いたもの、「Started」は今日が期間内に入っているマイルストーンが付いたものです。朝会で「今のスプリントの残り」を見るならStartedが早いでしょう。ただし開始日と期限日がどちらも無いマイルストーンはStartedに出てきません。
Issueの期日をメール通知とカレンダー購読で関係者に届ける設定
期日前日のUTC0時50分にメールが届く仕組みと日本時間とのずれ
期日を入れたIssueが開いたままだと、期日の前日にIssueの参加者全員へメールが届きます。Due datesのドキュメントによると、送信はサーバーのタイムゾーンで0時50分で、GitLab.comではUTCです。日本時間では前日の9時50分に届く計算になります。
注意したいのは、期日そのものもユーザーではなくサーバーのタイムゾーンで扱われる点です。「12月18日の夕方まで」のように時刻で締め切りを切る運用は、GitLabの期日では表せません。時刻まで決めたい締め切りは、Issueの説明欄に明記しておきましょう。期日の付いたIssueは本人のTo-Doリストにも表示されます。
期日付きIssueをGoogleカレンダー等へ購読させるiCalendarフィード
GitLab本体にカレンダー表示の画面はありません。代わりに、期日付きのIssueをiCalendar形式のフィードとして書き出し、普段のカレンダーアプリで見る方法が公式に用意されています。
- プロジェクトかグループのIssue一覧(Work items)を開き、自分が担当のものなど見たい条件で絞り込む
- 右上のActionsからSubscribe to calendarを選ぶ
- 表示された.icsのURLを、クエリ文字列ごとそのままコピーする
- Googleカレンダーなどの「URLで追加」に貼り付ける
このURLには、本人としてフィードを読み込むためのトークンが入っています。GitLabのトークンの解説では、カレンダーのURLのトークンは1つのフィードにしか使えない一方、持っている人は機密Issueも含めて本人として閲覧できると説明されています。チャットに貼って共有するのは避け、チーム全員で同じ日程を見たいなら各自が自分のアカウントで購読してください。
Freeプランでガントチャートを描く:APIとMermaidで工程表を自動生成
Mermaidのganttブロックでマイルストーンと依存関係を書くコード例
GitLab Flavored Markdownのドキュメントにあるとおり、IssueやWiki、MRの説明欄ではmermaidのコードブロックが図として描画されます。Mermaidのガント記法を使えば、Freeでも工程表を貼れます。
```mermaid
gantt
dateFormat YYYY-MM-DD
excludes weekends
section 開発
API実装 :a1, 2026-12-01, 5d
画面実装 :a2, after a1, 4d
section 検証
結合テスト :b1, after a2, 3d
リリース判定 :milestone, m1, after b1, 0d
```
after a1で前の作業の終了後に始まる依存関係を書けます。excludes weekendsを付けると土日は日数に数えません。milestoneのタグと0dの組み合わせは、期間を持たない1点として描かれます。手書きで済むのは作業が10行程度までで、それを超えると日付の書き換えが追いつかなくなります。
マイルストーンAPIをcurlで呼び開始日・期限日を一覧で取得する手順
マイルストーンの日付はGitLab側に入っているので、Project milestones APIで取り出せます。作成も同じAPIで行えます。日付の形式はYYYY-MM-DDです。
# マイルストーンを作成する(api スコープのトークンが必要)
curl --request POST \
--header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
--data "title=v1.2" --data "start_date=2026-12-01" --data "due_date=2026-12-18" \
--url "https://gitlab.com/api/v4/projects/my-group%2Fmy-app/milestones"
# 進行中のマイルストーンを親グループの分も含めて一覧する
curl --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
"https://gitlab.com/api/v4/projects/my-group%2Fmy-app/milestones?state=active&include_ancestors=true"
プロジェクトIDの代わりに「グループ名%2Fプロジェクト名」とURLエンコードしたパスも使えます。include_ancestors=trueを付けると親グループのマイルストーンも返るため、グループマイルストーンで運用している場合は必須です。GitLab.comでは公開プロジェクトでもこのAPIは未認証だと401を返すので、読み取りだけならread_apiスコープのトークンを発行して環境変数に入れておきます。
APIの結果からMermaidのガントを生成するPythonスクリプトと実行方法
取得した開始日と期限日をMermaidの行に変換すれば、工程表を毎回手で直す必要がなくなります。標準ライブラリだけで動くスクリプトです。
# milestones_to_gantt.py:マイルストーンからMermaidのガント記法を出力する
import json
import os
import sys
import urllib.parse
import urllib.request
BASE = os.environ.get("GITLAB_URL", "https://gitlab.com")
TOKEN = os.environ["GITLAB_TOKEN"] # read_api スコープのトークン
PROJECT = urllib.parse.quote(sys.argv[1], safe="") # 例:my-group/my-app
def fetch(path):
req = urllib.request.Request(BASE + "/api/v4" + path, headers={"PRIVATE-TOKEN": TOKEN})
with urllib.request.urlopen(req) as res:
return json.load(res)
milestones = fetch(f"/projects/{PROJECT}/milestones?state=active&include_ancestors=true&per_page=100")
print("gantt")
print(" dateFormat YYYY-MM-DD")
print(" excludes weekends")
for m in sorted(milestones, key=lambda x: x["start_date"] or x["due_date"] or "9999"):
name = m["title"].replace(":", " ").replace("#", " ")
start, due = m["start_date"], m["due_date"]
if start and due:
print(f" {name} :m{m['id']}, {start}, {due}")
elif due:
print(f" {name} :milestone, m{m['id']}, {due}, 0d")
python milestones_to_gantt.py my-group/my-appで実行すると、ganttから始まるMermaidの本文が標準出力に出ます。それを```mermaidのブロックに入れてIssueやWikiに貼れば工程表になります。開始日と期限日がそろったマイルストーンは期間のバーに、期限日だけのものは1点のマイルストーンとして描かれ、日付が無いものは出力しません。タイトルにコロンが入るとMermaidの区切りと衝突するため、空白に置き換えています。
CIのスケジュール実行で毎朝このスクリプトを回し、Wikiのページを更新する構成にすれば、Freeのままでも工程表が日付の変更に追従します。自社の画面にガントチャートを組み込みたい場合は、Frappe Ganttの導入とタスク定義の手順のようなライブラリにAPIの結果を渡す方法もあります。
Premiumのロードマップ・エピック・バーンダウンで複数チームの工程を見る方法
ロードマップの表示期間3種とエピックの日付を子Issueから継承する設定
ロードマップはグループの左サイドバーのPlanからRoadmapを選んで開きます。表示期間は「This quarter」「This year」「Within 3 years」の3種で、目盛りは週・月・四半期から選択できる仕様です。四半期の目盛りはWithin 3 yearsを選んだときだけ使えます。
ロードマップに並ぶのは、開始日か期限日を持つエピックとマイルストーンです。エピックの管理のドキュメントによると、エピックの日付をInheritedにすると、子エピックの日付と、子Issueに付いたマイルストーンの日付を調べ、最も早い開始日と最も遅い期限日が自動で入ります。マイルストーンの日付を動かすと、エピックのバーも上位まで連動して動く仕組みです。日付を手で入れる運用にすると、子の遅れがロードマップに出てこないので、Inheritedを既定にするのが安全です。
バーンダウンとバーンアップでスコープ増加と遅れを見分ける読み方
バーンダウン・バーンアップチャートは、開始日と期限日の両方を持つマイルストーンの画面に表示されます。バーンダウンは日ごとの「全Issue数から閉じたIssue数を引いた残り」、バーンアップは割り当て済みの総数(Total)と完了数(Completed)の2本の線です。
2つを並べて見る理由は、遅れの原因を切り分けるためです。バーンダウンの残りが減らないとき、バーンアップのTotalが急に増えていれば作業の追加(スコープの膨張)が原因、Totalが平らなら消化が遅れていると判断できます。件数ではなくIssueの重み(weight)で描くこともできますが、その場合は全Issueに重みを入れないと合計から漏れます。
イテレーションのケイデンスで1〜3週間の開発サイクルを自動で切る設定
イテレーションはグループでだけ使える機能で、ケイデンス(周期)を作ると決まった長さの期間が自動で作られます。PlanからIterationsを開いてNew iteration cadenceを選び、自動スケジュールを有効にして開始日・1回の週数・先に作っておく回数を入れます。
「Enable roll over」を有効にすると、期間が終わった時点で閉じていないIssueが次のイテレーションへ自動で移ります。マイルストーンをリリース単位、イテレーションを2週間のスプリント単位として併用する使い方が、公式ドキュメントでも案内されています。
GitLabでスケジュール管理するか専用ツールに分けるかの判断基準
GitLabに寄せるべき条件は開発者が工程の大半を担うチームの場合
工程表を見る人の大半が、Issueを閉じる本人である開発者ならGitLabに寄せるべきです。MRがマージされるとIssueが閉じ、マイルストーンの進捗率が動くため、進捗の報告作業そのものが要らなくなります。別ツールに日程を二重入力している間は、どちらかの日付が必ず古くなります。
リポジトリが2つ以上に分かれ、リリース日をチームをまたいで合わせる必要が出たらPremiumを検討する時期です。グループマイルストーンとロードマップで横断の工程表が作れるからです。CI/CDの整備とあわせて工程管理の仕組みを組みたい場合は、DevOps・CI/CD導入支援でGitLabの運用設計から相談を受けています。
専用ツールへ分けるべき場面は非開発メンバーが多くFreeの5人を超える時
次のどれかに当てはまるなら、スケジュール管理はGitLabに寄せず専用ツールに分けます。
- 営業・企画・顧客など、コードに触れない人が日程を確認する
- GitLab.comのFreeで、プライベートなトップレベルグループの人数が5人を超える
- 工程の依存関係やクリティカルパスを日単位で引き直す必要がある
Freeの5人上限は、日程を見るだけの人にも席が要る点で効いてきます。閲覧者のためにPremiumの席を買うより、専用ツールの無料枠に日程を置くほうが安く済む場面が多いはずです。各ツールの無料枠の人数と容量はタスク管理ツールの無料プラン比較で、ガントチャートの前に作る作業分解の手順はWBSの作り方とガントチャートとの違いで扱っています。
よくある質問
GitLabのスケジュール管理でよく聞かれる質問に、2026年11月時点の公式ドキュメントをもとに回答します。
GitLabにガントチャート機能はありますか?
「ガントチャート」という名前の機能はありません。近いのはPremium以上のロードマップで、エピックとマイルストーンを開始日と期限日にもとづいて時間軸上のバーとして並べます。Issue単位のバーは表示されないため、細かい作業の工程表には向きません。Freeプランの場合は、IssueやWikiにMermaidのガント記法を書くか、マイルストーンAPIの日付からガント記法を生成して貼る方法で代用できます。
GitLabでカレンダー表示はできますか?
GitLabの画面内に月表示のカレンダーはありません。期日を入れたIssueは、Issue一覧のActionsにあるSubscribe to calendarからiCalendar形式のフィードとして書き出せます。そのURLをGoogleカレンダーなどに登録すると、期日がカレンダー上に並びます。絞り込んだ条件がそのままフィードに反映されるので、自分の担当分だけを購読することも可能です。
無料プランでバーンダウンチャートは使えますか?
Freeでは使えません。バーンダウンとバーンアップのチャートはPremiumとUltimateの機能です。Freeでもマイルストーンの画面に閉じたIssue数にもとづく進捗率は出るため、スプリントの消化状況の確認はそこで代用できます。日々の推移を線で見たい場合は、マイルストーンに紐づくIssueの一覧をAPIで毎日取得し、残り件数を記録して自前でグラフにする方法になります。
マイルストーンとイテレーションは併用できますか?
併用は可能です。公式ドキュメントでは、同じ作業項目を複数の期間で追う場合にイテレーションとマイルストーンを組み合わせる使い方が案内されています。たとえばマイルストーンをリリースの単位、イテレーションを2週間のスプリントの単位にする形です。ただしイテレーションはPremium以上の機能で、グループにしか作れず、開始日と終了日の両方が必須という違いがあります。
プロジェクトのマイルストーンをグループに移せますか?
マイルストーンの画面にあるPromoteで、プロジェクトマイルストーンをグループマイルストーンに昇格できます。同じグループ内の各プロジェクトにある同名のマイルストーンは1つにまとめられ、付いていたIssueとMRも新しいグループマイルストーンに移ります。この操作は取り消せないため、同名でも意味の違うマイルストーンが混ざっていないか、事前に確認してから実行してください。
関連記事
- GitLabの使い方:プロジェクト作成からIssue・MR・CI/CDまでの手順:マイルストーンを付ける前提になるIssueとボードの基本操作を扱います
- GitLabとは:構成要素・CEとEEの違い・3つの提供形態とDockerで試す手順:Freeと有料版の機能差の背景にあるエディションの違いを整理しています
- GitHubとGitLabの違い|ActionsとGitLab CIの対応表・料金・セルフホスト比較:GitHubのProjectsと比べてどちらで工程を管理するか検討できます
- WBSとは?書き方・作り方の5ステップとシステム開発の例、ガントチャートとの違い:マイルストーンを切る前の作業分解の手順を確認できます
- タスク管理ツールの無料プラン比較:人数・容量の上限と有料へ切り替える判断基準:スケジュール管理を専用ツールに分けるときの候補を比べられます