Markdown: GFM 拡張構文と絵文字
Markdown には標準フレーバーと拡張フレーバーがあります — GitHub Flavored Markdown は最も広く使用されている拡張機能であり、多くの実用的な構文機能が追加されています。
1. 学ぶこと
- GFM と標準の Markdown の違い
- タスクリストの完全な使用
- 絵文字の挿入方法
- 脚注と定義リストの使用
- 自動リンクと URL 認識
- Markdown 構文を無視/エスケープする方法
2. オープンソースのメンテナの実話
(1) 問題点: 構造化された情報が不足している問題
モーガンは 5,000 個以上のスターを持つオープンソース プロジェクトを維持しており、毎日数十の問題を受け取ります。提出物はめちゃくちゃです。再現手順がないもの、エラーメッセージを含めるのを忘れるもの、タイトルに絵文字を入れてフィルタリングが困難なものもあります。メンテナは「どのバージョンを使用していますか?」という質問に膨大な時間を費やします。 「エラーメッセージの全文は何ですか?」
(2) 解決策: GFM を使用して課題テンプレートを作成する
Morgan は、タスク リスト (- [ ] チェックリスト)、テーブル (バージョン/環境情報)、およびコード ブロック (エラー ログ) を使用して情報を構造化した GitHub 問題テンプレートを作成しました。絵文字は問題のタイプをマークします: 🐛 Bug、✨ Feature、📖 Documentation。テンプレートが公開された後、問題の完全性は 30% から 85% に上昇し、平均処理時間は半分に短縮されました。
3. GFM の概要
GitHub Flavored Markdown (GFM) は標準 Markdown のスーパーセットであり、CommonMark 仕様に GitHub 固有の拡張機能を追加しています。
graph TB
A[GFM - GitHub Flavored Markdown] --> B[CommonMark Standard]
A --> C[GFM Extensions]
C --> D[Task Lists]
C --> E[Tables]
C --> F[Strikethrough]
C --> G[Auto Links]
C --> H[Emoji]
C --> I[Syntax Escaping]
| 特集 | 標準マークダウン | GFM |
|---|---|---|
| テーブル | ❌ 標準なし | ✅ フルサポート |
| タスクリスト | ❌ 標準なし | ✅ サポートされている |
| 取り消し線 | ❌ 標準なし | ✅ |
| 自動リンク | ⚠️ <> のみ |
✅ URL自動認識 |
| 絵文字 | ❌ 標準なし | ✅ :smile: |
| 囲まれたコード構文の強調表示 | ⚠️ 部分的 | ✅ フルサポート |
| マークダウンのエスケープ | ❌ サポートされていません | ✅ \ 脱出 |
4. 絵文字
(1) 絵文字を挿入する 2 つの方法
Method 1 (recommended): Use colon-wrapped shortcodes
:smile: → 😄
:rocket: → 🚀
:warning: → ⚠️
Method 2: Paste emoji characters directly
😄 🚀 ⚠️ ✅ ❌
(2) 技術ドキュメントによく使われる絵文字
✅ Done / ❌ Failed / ⚠️ Caution
🐛 Bug / ✨ New Feature / 📖 Documentation
🚀 Release / 🔧 Config / 🎨 Style
📦 Dependencies / 🔒 Security / 📊 Data
:smile: など) をサポートしているわけではありません。貼り付けられた絵文字のみをサポートするものもあります。 GitHub 以外での互換性を最大限に高めるには、絵文字を直接貼り付けてください。
▶ 例: 絵文字を使用して問題の種類にラベルを付ける
## Issue Template
### Type
- 🐛 Bug Report
- ✨ Feature Request
- 📖 Documentation Improvement
- 🔧 Configuration Issue
### Environment
- OS: macOS 14.5
- Browser: Chrome 126
- Version: v2.3.1
5. 自動リンクと URL 認識
(1) URL自動認識
GFM は URL をクリック可能なリンクに自動的に変換します。<> は必要ありません。
Visit https://github.com to learn more.
Documentation: https://developer.mozilla.org
Project repo: https://github.com/user/repo
(2) メール自動認識
Contact us: support@example.com
Author email: author@example.com
6. マークダウン構文の無視
\ バックスラッシュを使用してマークダウン文字をエスケープし、プレーン テキストとして表示します。
\# This is not a heading — it shows the "#" character
\*\*This is not bold\*\*
\- This is not a list item
\[This is not a link\](url)
` to show their raw form: `#` displays as # での折り返し記号もサポートしています。
▶ 例: 一般的なエスケープのシナリオ
When writing tutorials, you sometimes need to show the Markdown syntax itself:
Use \`#\` to denote a level-1 heading.
Syntax example: \*\*bold text\*\*
In code it's `**actual bold**` (wrapped in backticks, won't render).
`**text**` はコード スタイルとして表示され、太字として表示されません。
7. その他の GFM 拡張機能
(1) 取り消し線
~~This text has been deleted~~
~~This feature is deprecated~~
(2) テーブル内のより豊富な書式設定
GFM テーブルは、コード、リンク、および複数のコンテンツ タイプをサポートします。
| Command | Description | Example |
|:--------|:------------|:--------|
| `git status` | Show status | [Docs][status] |
| `git log` | Show history | `--oneline` compact mode |
| ~~`git merge`~~ | Deprecated | Use `rebase` instead |
[status]: https://git-scm.com/docs/git-status
(3) 囲まれたコードブロックの構文の強調表示
GFM は、数十の言語の構文の強調表示をサポートしています。
name: CI Pipeline
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm test
diff 言語タグをサポートしています — + 行は緑色 (追加) で表示され、- 行は赤色 (削除) で表示されます。コードの変更を表示するのに最適です。
▶ 例: diff を使用してコードの変更を表示する
# Old version
- <script src="old-script.js"></script>
# New version
+ <script src="new-script.min.js" defer></script>
8. 完全な例: GFM を使用して完全な問題を作成する
Issue title: Navigation bar won't expand in Firefox
Environment:
OS | Windows 11
Browser | Firefox 128.0
Version | v3.2.1
Steps to reproduce:
1. Open the app
2. Click the user menu in top right
3. Menu fails to expand
Log output:
[2026-06-15 14:32:01] User clicked nav-toggle
[2026-06-15 14:32:03] No response from toggle handler
期待される結果: 明確なタイプ ラベル (🐛 バグ)、テーブル内の環境、順序付けされたリスト内の再現手順、およびタスク リストとしてのチェックリストを備えた構造化された GitHub 問題。
❓ よくある質問
:smile:) はどこでも機能しますか?:smile: は、GitHub、GitLab、Slack などの特定のプラットフォームでのみ機能します。 VS Code と Typora では、代わりに絵文字文字を直接貼り付けてください。--from gfm を使用し、marked.js はデフォルトで GFM をサポートし、Python-Markdown には extensions=['extra'] が必要です。[TOC] は GFM の一部ですか?[TOC] は特定のエディター (VS Code の Markdown All in One 拡張機能、Typora など) のカスタム機能であり、Markdown 標準の一部ではありません。📖 まとめ
- GFM は GitHub の CommonMark ベースの拡張機能であり、タスク リスト、テーブル、取り消し線などを追加します。
- 絵文字は
:code:(GitHub) 経由で挿入することも、文字として直接貼り付けることもできます - GFM は URL と電子メールを自動認識します -
<>は必要ありません \を使用して Markdown 特殊文字をエスケープし、プレーン テキストとして表示しますdiff言語タグは、コードの変更を示すために+/-を使用します。[TOC]などは標準または GFM の一部ではなく、エディター固有の機能です
📝 練習問題
-
初心者: 絵文字を使用してコミット タイプにラベルを付け (
✨ Feature🐛 Fixなど)、コミット前のチェックリストとしてタスク リストを含む Git コミット メッセージ規約ドキュメントを作成します。 -
中級:
diff言語タグを使用して、コード変更の前後の比較を表示します (追加と削除の両方で少なくとも 5 行)。次に、自動リンクを使用して GitHub リポジトリを参照します。 -
課題: テーブル (環境情報)、タスク リスト (チェックリスト)、順序付きリスト (再現手順)、コード ブロック (ログ/構成)、絵文字 (タイプ ラベル)、およびブロック引用符 (スクリーンショット/補足メモ) を組み合わせた完全な GitHub 問題テンプレートを作成します。