無料 · 登録不要 · .mmd ファイル対応

Mermaid ガントチャートエディタ

ガントチャートは作業をカレンダーの上に置きます。何をいつやるのか、どこが重なるのか、何が終わらないと次が始まらないのか。日付と依存関係そのものが論点であるときに使います。順序だけを示したいなら、フローチャートのほうが軽く、日程がずれても腐りません。

依存関係と判定会をもつリリース計画

このチャートを絵ではなく工程表にしているのは `after a1` です。依存が宣言されているので、最初のタスクを動かせば後続がすべて追随します。マイルストーンは期間を持たない一点で、リリース判定会のように日付だけが決まっている事象に使います。

gantt
    title 受注管理システム 2.4 リリース
    dateFormat YYYY-MM-DD
    axisFormat %m/%d

    section 開発
    要件定義       :done,      a1, 2026-01-06, 10d
    基本設計       :active,    a2, after a1, 15d
    実装           :           a3, after a2, 20d

    section 試験
    単体テスト     :           b1, after a3, 8d
    結合テスト     :crit,      b2, after b1, 10d

    section リリース
    リリース判定会 :milestone, m1, after b2, 0d
    本番リリース   :crit,      b3, after m1, 2d
エディタで開く
広告

実例で理解する

1. 最小限のチャート

`dateFormat` は「書いた日付をどう読むか」、`axisFormat` は「軸にどう表示するか」です。別々の設定で、この二つの混同がガントチャートで最もよくある詰まりどころです。

gantt
    title スプリント 14
    dateFormat YYYY-MM-DD
    section 作業
    検索機能の実装 :2026-03-02, 10d
エディタで開く

2. タスク ID と依存関係

タスクに ID を付けると、後続のタスクが `after <ID>` と書けるようになります。ID は半角英数にしておくのが無難です。依存を宣言してしまえば、開始日を一か所直すだけで残りが付いてきます。

gantt
    title 顧客データ移行
    dateFormat YYYY-MM-DD
    section 準備
    現行スキーマ調査 :a1, 2026-02-02, 5d
    変換マッピング作成 :a2, after a1, 8d
    section 実施
    リハーサル :a3, after a2, 3d
    本番切替   :a4, after a3, 1d
エディタで開く

3. 状態キーワード

`done`、`active`、`crit` は棒の描かれ方を変えます。「計画はこうです」としか言わないチャートを、「いまどこまで進んでいるか」に答えるチャートに変える、いちばん安上がりな方法です。

gantt
    title 第1四半期 基盤整備
    dateFormat YYYY-MM-DD
    section インフラ
    Terraform 整理     :done,   t1, 2026-01-05, 12d
    Kubernetes 更新    :active, t2, 2026-01-19, 15d
    コスト見直し       :        t3, after t2, 5d
    section セキュリティ
    依存ライブラリ監査 :crit,   s1, 2026-01-12, 6d
エディタで開く

4. マイルストーン

マイルストーンは期間ではなく点なので `0d` を与えます。展示会、契約上の納期、コードフリーズなど、プロジェクトの外側で日付が決まっている事象に使います。

gantt
    title 新サービス公開
    dateFormat YYYY-MM-DD
    section 開発
    機能凍結     :milestone, m1, 2026-04-01, 0d
    バグ修正期間 :          e1, 2026-04-01, 5d
    リリースブランチ作成 :milestone, m2, after e1, 0d
    section 広報
    プレスリリース解禁 :milestone, m3, 2026-04-15, 0d
エディタで開く

5. 土日を除外する

`excludes weekends` を書くと、期間の計算から土曜と日曜が外れます。10 日のタスクが週末をまたいで二週間に伸びるようになり、これが「現場が信用するチャート」と「黙って無視されるチャート」の分かれ目になることが多いです。祝日は `excludes 2026-05-04` のように個別に指定できます。

gantt
    title 新サービスの引き継ぎ
    dateFormat YYYY-MM-DD
    excludes weekends

    section 構築
    環境構築    :p1, 2026-05-07, 5d
    CI/CD 整備  :p2, after p1, 5d
    section 引き継ぎ
    手順書と研修 :p3, after p2, 4d
エディタで開く

ガント構文早見表

ここに挙げた六つの図の中で、ガントはタスク行という一点だけが厳格で、それ以外はどこまでも寛容です。ガントの間違いが静かに通り過ぎてしまうのは、まさにそのためです。

構文意味
gantt図を開始する。
title 文字チャートの表題。
dateFormat YYYY-MM-DD書いた日付を読み取る形式。
dateFormat YYYY年MM月DD日和式表記も宣言すれば使える。
axisFormat %m/%d軸への表示形式。dateFormat とは別の設定。
excludes weekends期間の計算から土日を除く。
excludes 2026-05-04特定の日を除く。祝日はこれで指定する。
section 名前タスクを帯にまとめる。
タスク名 :id, 2026-01-01, 10d開始日と期間を明示したタスク。
タスク名 :id, after 他のid, 10d他のタスクの終了後に始まるタスク。
タスク名 :done, id, ...完了——灰色で描かれる。
タスク名 :active, id, ...進行中——強調して描かれる。
タスク名 :crit, id, ...重要——アクセント色で描かれる。
名前 :milestone, id, 日付, 0d期間ではなく時点。
10d / 3w / 2h日・週・時間。単位は省略できない。
広告

ガントの落とし穴 6 つ——エラーになるのは 2 つだけ

ここがガントチャートと他の 5 種類との決定的な違いです。Mermaid 11.12.2 で再現したところ、以下の 6 つのうち描画が止まるのは 2 つだけでした。残りの 4 つは、いかにももっともらしいチャートを描いたうえで間違っています。描画に成功した図を疑う人はいないので、そちらのほうがはるかに危険です。

表示されるもの

Parse error、末尾が: Expecting 'taskData', got 'NL'

原因

タスク行にコロンがありません。コロンは表示名とデータを分ける記号で、これがないと読み取るべきデータが存在しません。この一覧でMermaid が明確に拒否するのは、これと日付形式の 2 つだけです。

対処

タスク名と ID の間に半角コロンを入れます。

誤り
gantt
    dateFormat YYYY-MM-DD
    section 作業
    基本設計 a1, 2026-01-06, 5d
修正後
gantt
    dateFormat YYYY-MM-DD
    section 作業
    基本設計 :a1, 2026-01-06, 5d

表示されるもの

Invalid date:2026年03月01日 と表示されて描画されない

原因

和式の日付を書いたのに、`dateFormat` が `YYYY-MM-DD` のままです。Mermaid は宣言された形式でしか日付を解釈しないので、年月日の漢字は読めずに落ちます。日本語で工程表を書き始めたときに最初にぶつかるのがこれです。

対処

日付の書き方に合わせて `dateFormat YYYY年MM月DD日` と宣言します。宣言さえすれば和式表記はそのまま通ります。

誤り
gantt
    dateFormat YYYY-MM-DD
    section 作業
    基本設計 :a1, 2026年03月01日, 10d
修正後
gantt
    dateFormat YYYY年MM月DD日
    axisFormat %m/%d
    section 作業
    基本設計 :a1, 2026年03月01日, 10d

表示されるもの

描画はされるが、タスク名が途中で切れている

原因

タスク名の中に半角コロンがあります。最初のコロンが区切りなので、そこから後ろはタスクデータとして読まれます。`フェーズ1: 設計` は `フェーズ1` というタスクになり、「設計」は消えます。実測したところ、全角コロンの `フェーズ1:設計` は区切りとして扱われず、そのまま表示されました。

対処

タスク名に半角コロンを入れないこと。全角コロン `:` を使うか、読点や全角ハイフンに置き換えます。

誤り
gantt
    dateFormat YYYY-MM-DD
    section 作業
    フェーズ1: 設計 :a1, 2026-01-06, 10d
修正後
gantt
    dateFormat YYYY-MM-DD
    section 作業
    フェーズ1:設計 :a1, 2026-01-06, 10d

表示されるもの

描画はされるが、軸が急に数か月に広がる

原因

`after` が存在しないタスク ID を指しています。ID の打ち間違いか、名前を変えたあとの直し忘れです。Mermaid は警告を出さず、そのタスクを適当な位置に置くため、軸がそこまで届くように引き伸ばされます。10 日のタスクが 2 つあるだけの図が半年分の軸になることがあります。

対処

`after <ID>` が宣言済みの ID と正確に一致しているか確かめます。軸の目盛りが急に粗くなったら、まずこれを疑ってください。

誤り
gantt
    dateFormat YYYY-MM-DD
    section 作業
    基本設計 :a1, 2026-03-01, 10d
    実装 :a2, after sekkei, 10d
修正後
gantt
    dateFormat YYYY-MM-DD
    section 作業
    基本設計 :a1, 2026-03-01, 10d
    実装 :a2, after a1, 10d

表示されるもの

棒が消えて点になる

原因

期間に単位が付いていません。`5` は 5 日ではなく、長さとして解釈されません。それでもチャートは描かれ、時間をまったく使わないタスクがそこにあるように見えます。

対処

単位を必ず書きます。`5d`、`3w`、`2h`。

誤り
gantt
    dateFormat YYYY-MM-DD
    section 作業
    基本設計 :a1, 2026-03-01, 5
修正後
gantt
    dateFormat YYYY-MM-DD
    section 作業
    基本設計 :a1, 2026-03-01, 5d

表示されるもの

期間は合っているのに、現実の完了日とずれる

原因

`excludes weekends` を書いていません。既定では 10 日は土日を含む暦日 10 日を意味するので、一週間を超える作業はチャート上で実際より早く終わります。日本の場合はさらに祝日が多く、四半期をまたぐ計画ではずれが無視できない大きさになります。

対処

先頭付近に `excludes weekends` を足し、祝日は `excludes 2026-05-04` のように個別に除外します。

誤り
gantt
    dateFormat YYYY-MM-DD
    section 作業
    データ移行 :a1, 2026-06-01, 10d
修正後
gantt
    dateFormat YYYY-MM-DD
    excludes weekends
    section 作業
    データ移行 :a1, 2026-06-01, 10d

描画についての覚え書き

いずれもこのサイトが使う Mermaid 11.12.2 で実測したものです。ガントは他のどの図とも違う振る舞いをします。

幅が固定されている唯一の図

他の図はすべて中身が増えた方向に伸びます。ガントチャートだけは viewBox の幅が常に 1264 ピクセルで固定されていて、タスクが 3 つでも 40 つでも変わりません。変わるのは高さだけで、実測では 172 ピクセルから 1060 ピクセルまででした。軸はその固定幅に収まるよう圧縮または引き伸ばされます。2 年分の計画と 2 週間分の計画が同じ密度に見えるのはそのためです。棒が細すぎて読めないときの原因はタスク数ではなく期間の幅です。

和式の日付は宣言さえすれば通る

`dateFormat YYYY年MM月DD日` と書けば `2026年03月01日` はそのまま解釈されます。実測で確認しました。一方で `dateFormat` が `YYYY-MM-DD` のまま和式表記を書くと、静かに間違うのではなく Invalid date で描画自体が止まります。ガントには珍しく、ここは間違いが目に見える箇所です。逆に `2026/03/01` や `2026/3/1` は `YYYY-MM-DD` のままでも正しく 3 月 1 日として読まれました。日付の解釈は宣言した形式より寛容です。

PNG 書き出しが画面と完全に一致する

ガントはラベルを HTML ではなく素の SVG テキストとして描くため、フローチャート・クラス図・状態遷移図・ER 図と違って、そのままラスタライズできます。書き出した PNG は画面と一文字も違いません。再描画が挟まらないぶん、文字組みのずれも起きません。

以前は PNG 書き出しの被害が最も大きかった

Mermaid は `width="100%"` を出力して高さ属性を持ちません。かつてこのサイトの書き出しは、そのサイズを既定の 300×150 の枠に対して解決してしまっていました。横に長く縦に短いガントの縦横比では、これが最悪の形で出ます。1280×148 のチャートが 600×58 の PNG になっていました。現在は viewBox を読むので、同じチャートが 2560×296 で出ます。昔書き出したガントの PNG が手元にあるなら、拡大しても使い物にはなりません。

コロン以外はほとんど何でも通る

section の書き忘れ、知らない状態キーワード、単位のない期間——どれも描画されます。拒否されるのはコロンのないタスク行と、宣言と食い違う日付だけです。この非対称さがガントを書くうえでいちばん役に立つ知識です。描画に成功したという事実は、そのチャートが正しいことをほとんど何も保証しません。

別の図が向いている場合

日付がまだ見積もりでしかないなら、ガントチャートはその見積もりを、それが値しない精度で提示してしまいます。そして誰かがその日付で握ってきます。日付を持たず順序だけを示すフローチャートのほうが正直で、日程が動いても直す必要がありません。

計画が毎週変わる場合、テキストで書いてバージョン管理に置くガントは本当に優れています。差分で何が動いたかが見えるからです。ただし、誰も更新しないチャートは、チャートがないより悪い状態です。自分が作ろうとしているのがどちらなのか、正直に見積もってください。

要員の平準化や工数配分が論点なら、これは道具として間違っています。Mermaid はカレンダーの上に棒を描くだけで、誰がその作業をするのか、その人がすでに埋まっているかどうかを知りません。

他の図の種類

執筆 Dominik Malsch · 最終更新:

エディタを開く →