Markdownガイド

Markdownとは?

Markdownは、プレーンテキストドキュメントにフォーマット要素を追加するために使用できる軽量マークアップ言語です。HTMLやその他の形式に変換できる、シンプルで読みやすい構文を使用してフォーマットされたテキストを作成できます。

Markdownは、複雑なワードプロセッサを必要とせずにフォーマットされたドキュメントを書く方法と考えてください。太字斜体、またはコードなどのフォーマットを示すために、プレーンテキストに特殊文字を追加するだけです。

Markdownを使用する理由

Markdownは信じられないほどシンプルで学習が簡単です。基本をわずか10分でマスターできます。フォーマット記号は直感的で、強調にはアスタリスク、見出しにはハッシュタグを使用します。ただテキストを入力し、簡単な記号を追加するだけでテキストをフォーマットできます。

Markdownはあらゆるプラットフォームとあらゆるテキストエディタで動作します。ファイルはプレーンテキストなので、数十年後でも常に読み取り可能です。ファイルは軽量で、素早く読み込まれます。

Markdownは複数のプラットフォームで幅広くサポートされています。GitHub、Reddit、Discord、SlackはすべてMarkdownを使用しています。Obsidian、Notion、VS Codeなどの人気アプリケーションがネイティブでサポートしています。これにより、ドキュメント、メモ取り、Webコンテンツに最適です。

MarkdownはGitなどのバージョン管理システムと完璧に動作します。フォーマットの気を散らすことなくコンテンツに集中できます。特別なソフトウェアなしで誰でもファイルを編集できるため、チームコラボレーションが簡単になります。

Markdown開発の歴史

始まり: バニラMarkdown (2004)

Markdownは元々2004年にJohn Gruberによって、Aaron Swartzの重要な貢献とともに作成されました。Gruberは、構造的に有効なHTMLに変換できる、読みやすく書きやすいプレーンテキストフォーマットを使用して書く簡単な方法として設計しました。これがJohn Gruberが最初に設計し実装した「コア」で、最も基本的なフォーマット構文を含んでいます - これを「基本バニラフレーバー」と呼んでいます。

基本構文(バニラMarkdownが含むもの):

  • 見出し: #記号を使用 (# 見出し)
  • 強調:
  • 斜体: * または _ でテキストを囲む (*斜体* または _斜体_)
  • 太字: ** または __ でテキストを囲む (**太字** または __太字__)
  • リスト:
  • 順序なしリスト: *-、または + を使用 (- 項目)
  • 順序付きリスト: 数字とピリオドを使用 (1. 項目)
  • リンク: [リンクテキスト](リンクアドレス) を使用
  • 画像: ![画像説明](画像アドレス) を使用
  • コードブロック: スペースでインデント(通常4スペースまたは1タブ)
  • 引用: > 記号を使用 (> これは引用です)
  • 水平線: --- または *** を使用

問題: 一貫性のない実装

しかし、バニラMarkdownには厳密で正式な仕様が欠けていました。これにより、エッジケースを処理する際に異なるMarkdownパーサー間で一貫性のない動作が発生しました。

空白の処理: 例えば、リスト項目で、どれだけのスペースのインデントがサブリストとしてカウントされるか?2スペース、3スペース、4スペースなのか?異なるパーサーは異なる判断をする可能性があります。

改行処理: 特定の状況で、通常の改行(\n)は<br>(改行)タグとして解析されるべきか、それとも単にテキスト内のスペースとして扱われるべきか?これもパーサーによって異なる場合があります。

HTML混在使用: Markdownは埋め込みHTMLを許可します。しかし、一部の複雑なHTML構造では、その中でMarkdownパーサーがMarkdown構文をどのように処理するかも曖昧な領域を提示します。

解決策: CommonMark (2014)

2014年9月、これらの一貫性の問題を解決するためにCommonMarkが導入されました。John MacFarlaneが主導し、Markdownの厳密な仕様を提供します。

CommonMarkは、すべてのエッジケースが明確に定義された正確な仕様を提供します。実装間の一貫性を確保するために600以上のテストケースを含む包括的なテストスイートが含まれています。仕様は、他のパーサーが従うべき標準として機能する参照実装を提供します。既存のほとんどのMarkdownドキュメントとの後方互換性を維持しながら、同じ入力が常にすべての準拠パーサーで同じ出力を生成する明確な解析を保証します。

拡張フレーバーと追加機能

ユーザーが異なるニーズを持っていたため、特定の要件を満たすためにMarkdownの様々な拡張フレーバーが出現しました。

GitHub Flavored Markdown (GFM) の追加構文:

  • テーブル: パイプ構文を使用してテーブルを作成
  | ヘッダー1 | ヘッダー2 | ヘッダー3 |
|----------|----------|----------|
| セル1 | セル2 | セル3 |
| セル4 | セル5 | セル6 |
  • 打ち消し線: ~~ でテキストを囲む (~~削除されたテキスト~~)
  • タスクリスト: インタラクティブなチェックボックスを作成
  - [x] 完了したタスク
- [ ] 未完了のタスク
  • フェンスされたコードブロック: 言語指定付きのトリプルバッククォートを使用
  ```javascript
function hello() {
console.log("Hello World!");
}
```
  • 自動リンク: URLとメールアドレスが自動的にクリック可能になる
その他の人気の拡張:

  • 脚注: 学術文書に [^1] 構文を使用
  これは脚注付きの文です[^1]。
[^1]: これは脚注の内容です。

結果: これは脚注付きの文です¹。

  • 数式表現: 科学文書に $E=mc^2$ を使用
  • 絵文字ショートカット: :smile: が 😊 になる
  • 定義リスト: 用語集と技術文書用
  用語1
: 用語1の定義

用語2
: 用語2の定義
: 用語2のもう一つの定義

結果: 強調表示された用語とインデントされた定義を持つフォーマットされたリストを作成

どのように動作するか?

Markdownは簡単な3ステップワークフローに従います:

ステップ1: Markdownファイルを作成

まず、任意のテキストエディタを使用して.mdまたは.markdown拡張子のプレーンテキストファイルを作成します。簡単なフォーマット記号を使用してコンテンツを書きます:

ステップ2: Markdownツールで処理

あなたの.mdファイルはMarkdown変換ツールまたはプロセッサーによって処理されます。これらのツールはMarkdownファイルを読み取り、希望する出力形式に変換します。

ステップ3: 様々な形式への出力

Markdownプロセッサーはファイルを複数の形式に変換できます:

Web表示用:

  • ウェブサイト、ブログ、Webアプリケーション用のHTMLに変換
  • 適切なスタイリングでブラウザにフォーマットされたコンテンツを表示
ドキュメント用:

  • 印刷可能なドキュメントとレポート用のPDFに変換
  • オフィス使用のためのWordドキュメント(.docx)を生成
  • 学術論文と出版物用のLaTeXを作成
出版用:

  • eBooks(EPUB形式)を生成
  • プレゼンテーションスライドを作成
  • ドキュメントウェブサイトを制作
このワークフローは、Markdownで一度書いて、異なるツールを使用してコンテンツを必要な形式に変換することを意味します - ウェブサイトでの表示、PDFとしての印刷、ドキュメントとしての共有のいずれでも。

追加リソース

必須ドキュメント

  • John GruberのMarkdownドキュメント : Markdownの作成者によって書かれた原始的なガイド。哲学と基本構文を理解するための必須の読み物。
  • Wikipedia - Markdown : Markdownの歴史、バリエーション、技術的詳細の包括的な概要。
  • Markdownガイド : あらゆるスキルレベルに対応した例とベストプラクティスを含む包括的で初心者向けのガイド。