チェックリストは、各項目が角かっこ2つで始まるふつうの箇条書きです。中が空なら未チェックの箱、中に x があればチェック済みの箱。あらゆるToDoリスト、あらゆるプルリクエストのチェックリスト、進み具合を書き留めるあらゆるREADMEの裏にある記法です。

チェックリスト — ひとつ消し込んでみてください
Markdown
- [x] 下書きを書く
- [ ] 手を入れる
- [ ] PDFに書き出す
  - [x] 余白を決める
  - [ ] ページ番号を足す
- [ ] 送る
Preview
  • [x] 下書きを書く
  • [ ] 手を入れる
  • [ ] PDFに書き出す
    • [x] 余白を決める
    • [ ] ページ番号を足す
  • [ ] 送る

記法

Markdown
- [ ] 未了
- [x] 完了
Preview
  • [ ] 未了
  • [x] 完了

正しくないといけないものが3つあります。

  1. リスト項目であること。 先に -(あるいは *+)が来ます。角かっこだけの行は、ただの角かっこです。
  2. 空の箱の中に空白。 - [] はチェックボックスではなく、- [ ] がそうです。
  3. 閉じかっこのあとに空白。 - [x]完了 は失敗し、- [x] 完了 は通ります。

大文字の X もたいていの処理系で小文字と同じように動きますが、慣習は小文字です。

チェックボックスを押せる場所

チェックボックスは本物の <input type="checkbox"> として組まれます。押せるかどうかは、その文書がどこに表示されているかで完全に決まります。

  • GitHubとGitLabのイシュー、プルリクエスト、READMEファイル:押せます。しかもチェックを付けると、下にあるMarkdownが全員のために書き換わります。
  • たいていの静的サイトジェネレータとプレビュー:表示はされますが無効です。チェックボックスの絵にすぎません。
  • メモアプリやエディタ:たいてい押せて、その場でファイルが更新されます。

箱が反応しないなら、処理系がそれを無効にしています。意図された選択であって、あなたの記法の間違いではありません。

入れ子

チェックリストはふつうのリストとまったく同じように入れ子にできます。1段階につき空白2つです。

Markdown
- [ ] リリースを出す
  - [x] 変更履歴を書く
  - [ ] スクリーンショットを撮る
  - [ ] 審査に出す
Preview
  • [ ] リリースを出す
    • [x] 変更履歴を書く
    • [ ] スクリーンショットを撮る
    • [ ] 審査に出す

子が全部終わっても、親の箱が勝手にチェックされることはありません。Markdownには進捗を計算するものが何もありません。テキストの形式であって、プロジェクト管理ツールではないのです。

ほかの書式と混ぜる

リスト項目に入れられるものは、タスクの中でも動きます。

Markdown
- [x] [リストのガイド](/ja/markdown-lists)を読む
- [ ] `npm run build` を走らせる
- [ ] **重大な**バグを直す
- [ ] ~~古いやり方~~ 新しいやり方について誰かに聞く
Preview
  • [x] リストのガイドを読む
  • [ ] npm run build を走らせる
  • [ ] 重大なバグを直す
  • [ ] 古いやり方 新しいやり方について誰かに聞く

リストを詰めたままにする

項目のあいだの空行は、詰まったリストをゆるいリストに変え、タスクひとつずつが段落ぶんの間隔を持ちます。20項目のチェックリストでは、壊れて見えます。行はくっつけたままにしてください。詰まったリストとゆるいリストを参照。

よくある間違い

角かっこの中の空白が抜けている。 - [] はそのまま角かっことして出ます。- [ ] である必要があります。

リストの記号を忘れる。 [ ] タスク はチェックリストではなく、角かっこで始まる段落です。

リストの前に空行がない。 段落の直下に始まるチェックリストは、ほかのリストとまったく同じようにその段落に吸収されます。

どこでも使えると思う。 チェックリストはGitHub Flavored Markdownの拡張です。いまどきの道具ではほぼ普遍的ですが、2004年のMarkdownにはこの概念がありません。

進捗のカウントを期待する。 「3/8 完了」はファイルの周りにある道具が計算するもので、Markdownが表現するものではありません。

よくある質問

Markdownでチェックボックスを作るには?

リスト項目を角かっこ2つで始めます。未チェックは - [ ]、チェック済みは - [x] です。空のかっこの中の空白は必須です。

チェックボックスが押せないのはなぜですか?

処理系が無効にしているからです。GitHub、GitLab、たいていのエディタアプリは押せるようにして、変更をファイルに書き戻します。静的サイトジェネレータや読み取り専用のプレビューは、たいてい無効な要素として描くので、チェックボックスの絵にとどまります。

チェックリストを入れ子にできますか?

はい。ふつうのリストとまったく同じに、1段階につき空白2つ下げます。子を全部チェックしても親は自動ではチェックされません。Markdownにはそれを追いかけるものがないからです。

チェックリストはどこでも動きますか?

ほぼ動きます。元の仕様ではなくGitHub Flavored Markdown由来なので、とても古い、あるいはあえて最小限にした処理系では角かっこがそのまま出ます。主要なエディタとプラットフォームはどれも対応しています。

- [x]- [X] の違いは?

実際には違いはありません。ほぼどの処理系でも、どちらもチェック済みの箱になります。慣習は小文字です。