Markdownコードブロックの書き方完全ガイド|シンタックスハイライト・言語指定一覧・インラインコードの使い分けまで徹底解説

Markdown(マークダウン)で技術ブログ、README、仕様書、プログラミング学習ノートを書く際に、絶対に欠かせないのが「Markdown コードブロック(markdown code block)」「Markdown インラインコード(inline code)」です。

「マークダウン コードブロックでプログラムを綺麗に色分け(シンタックスハイライト)して表示したい」「バッククォート3つ(“`)と1つ(`)の使い分けが曖昧」「指定できる言語名の正しいスペルを知りたい」「QiitaやZennのようにファイル名を表示したり、コード内にバッククォートを含めてエスケープしたい」といった疑問や要望を持つ方は非常に多いのではないでしょうか。

Markdown コードブロックとMarkdown シンタックスハイライトを正しく使いこなすと、プログラムコードの可読性が飛躍的に向上し、誰にとっても読みやすく美しい技術文書を瞬時に作成できるようになります。

この記事では、コピペですぐに使える基本構文から、主要プログラミング言語の識別子一覧表(Web・バックエンド・インフラ・設定ファイル等)、マークダウン コードブロックとインラインコードの使い分け、ファイル名表示やdiff差分ハイライト、バッククォートのエスケープ技まで、網羅的かつ分かりやすく徹底解説します!

📌 本記事のポイント・要点まとめ

  • マークダウン コードブロックの基本: バッククォート3つ(```)またはチルダ3つ(~~~)で複数行コードを上下に囲む(フェンス記法)
  • markdown シンタックスハイライト: 開始フェンスの直後に pythonjavascript などの言語名を記述するだけで自動色分け
  • markdown インラインコード: バッククォート1つ(`code`)で文中の変数名・関数名・コマンド・ファイルパスを強調表示
  • 言語指定一覧: 主要Web言語、バックエンド言語、SQL、Docker、YAML、JSON、Diffなどの指定名を一覧表で網羅
  • 高度なテクニック: プラットフォーム別のファイル名表示記法、4連バッククォートによるエスケープ、diff差分ハイライトも解説

【早見表】Markdownコードブロック&インラインコード 逆引きチートシート

まずは「今すぐ書き方を確認してコピーしたい」という方向けに、代表的なMarkdown コードブロック記法の早見表を用意しました。用途に合わせてコピーしてお使いください。

やりたいこと・記法 Markdownの書き方(コード) 特徴・用途
複数行コードブロック
(言語指定なし)
```
echo "Hello World"
```
等幅フォントでそのまま表示。言語ハイライトなし。
シンタックスハイライト
(言語指定あり)
```python
def greet(name):
    return f"Hello, {name}!"
```
1行目に言語名を指定。キーワードや文字列が自動でカラー表示される。
チルダによるコードブロック
~~~javascript
console.log("Hello");
~~~
バッククォートの代わりにチルダ3つで囲む代替記法。
インラインコード
(文中のコード)
`const count = 0;` 文中の変数名、関数名、コマンド(npm install 等)を囲んで強調。
diff差分ハイライト
(変更点の強調)
```diff
- const oldVal = 1;
+ const newVal = 2;
```
行頭に +(追加/緑色)や -(削除/赤色)を付けて差分を分かりやすく色分け。
コードブロックのエスケープ
(“` を中に含む)
````markdown
```html
Hello
``` ````
外側を4つのバッククォートで囲むことで、内部の3連バッククォートを安全に表示。

Markdownコードブロックの基本記法(フェンス記法)

Markdown(マークダウン)で複数行にわたるプログラムコードやコマンドラインの出力結果を表示するには、「フェンスドコードブロック(Fenced Code Blocks / markdown code block)」を使用します。

1. バッククォート3つ(“`)で囲む書き方

マークダウン コードブロックを作成する最も標準的で広く使われている方法が、コードの開始行と終了行をバッククォート3つ(```)で挟むフェンス記法です。

キーボードのバッククォート入力方法は以下の通りです:

  • 日本語JISキーボード(Mac): Shift + @
  • 日本語JISキーボード(Windows): Shift + @ (または「@」のキーとShiftキーを同時押し)
  • US配列キーボード: ` (キーボード左上、Tab または Esc の下にあるキー)

▼ Markdownコードブロックの入力例

```
function sum(a, b) {
    return a + b;
}
console.log(sum(5, 3));
```

▼ 実際のブラウザ表示結果

function sum(a, b) {
    return a + b;
}
console.log(sum(5, 3));

マークダウン コードブロックで囲んだ部分は、HTMLの <pre><code>...</code></pre> タグに変換され、インデント(半角スペースやタブ)や改行がそのまま等幅フォントで保持されます。

2. チルダ3つ(~~~)で囲む書き方

Markdownの標準仕様(CommonMark)では、バッククォートの代わりにチルダ3つ(~~~でコードブロックを囲む記法も正式にサポートされています。

▼ Markdown入力例(チルダ記法)

~~~
# チルダでも同様にコードブロックになります
name = "Alice"
print(f"Hello, {name}")
~~~

▼ 実際のブラウザ表示結果

# チルダでも同様にコードブロックになります
name = "Alice"
print(f"Hello, {name}")

💡 チルダ記法はどんなときに使う?

キーボードの配列によってバッククォートが入力しづらい環境や、コードブロックの内部にバッククォート記号が含まれる場合に、エスケープを容易にする目的でチルダが便利に活用されます。開始と終了の記号は必ず一致させる必要があります(開始が ~~~ なら終了も ~~~)。

3. 【補足】インデント記法(スペース4個)との違い

初期のMarkdown(オリジナル仕様)では、行頭に「半角スペース4個」または「タブ1個」を挿入することでコードブロックにするインデント記法が存在しました。

比較項目 フェンス記法(```
【現代の推奨標準】
インデント記法(スペース4個)
【旧仕様・非推奨】
書きやすさ 上下を3文字で囲むだけで簡単 全行の先頭にスペース4個が必要で手間
シンタックスハイライト 言語名を指定して色付け可能(```python 言語指定ができず白黒表示のみ
リスト内のネスト 箇条書き内でも直感的に配置できる スペース8個以上のインデントが必要で崩れやすい
空行の扱い ブロック内に空行を自由に含められる 空行のスペース不足でブロックが分断されやすい

現在では、GitHub Flavored Markdown(GFM)をはじめとするほぼすべての現代的なMarkdown環境でフェンス記法(```)が標準となっています。特別な理由がない限り、フェンス記法を使用しましょう。

シンタックスハイライト(言語指定)の書き方と言語一覧表

Markdown コードブロックの最大の魅力は、プログラミング言語ごとの構文に合わせてキーワードや変数、文字列、コメントを美しく色分けしてくれる「Markdown シンタックスハイライト(Syntax Highlighting)」機能です。

言語指定の基本構文

markdown シンタックスハイライトを有効にする方法は極めてシンプルです。開始バッククォート(```)の直後に、対象の言語識別子(小文字)をスペースを空けずに記述します。

▼ Markdown入力例(Pythonのシンタックスハイライト)

```python
# ユーザー情報を処理する関数
def process_user(user_id: int, is_active: bool = True):
    if not is_active:
        return {"status": "inactive", "message": "User is disabled"}
    
    score = calculate_score(user_id)
    return {"status": "active", "score": score * 1.5}
```

▼ 実際のハイライト表示イメージ(言語に合わせた美しい色分け)

# ユーザー情報を処理する関数
def process_user(user_id: int, is_active: bool = True):
    if not is_active:
        return {"status": "inactive", "message": "User is disabled"}
    
    score = calculate_score(user_id)
    return {"status": "active", "score": score * 1.5}

ブラウザやエディタ側のハイライター(Prism.js、Highlight.js、Shikiなど)がこの識別子を読み取り、予約語(def, if, return)や文字列、数値、コメントを自動的に識別してCSSクラスを付与します。

主要言語・設定ファイルの指定名(言語識別子)一覧表

よく使われるプログラミング言語、マークアップ言語、設定ファイル、インフラ構成ファイルの指定名(エイリアス含む)をジャンル別にまとめました。

1. Webフロントエンド・デザイン

言語・フォーマット名 推奨指定名(識別子) 別名・エイリアス
HTML html htm, xhtml
CSS css
SCSS / Sass scss sass
JavaScript javascript js
TypeScript typescript ts
React JSX jsx javascriptreact
React TSX tsx typescriptreact
Vue.js vue
Svelte svelte
JSON json jsonc, json5

2. バックエンド・システムプログラミング言語

言語名 推奨指定名(識別子) 別名・エイリアス
Python python py
PHP php
Ruby ruby rb
Java java
Kotlin kotlin kt
Go (Golang) go golang
Rust rust rs
C言語 c
C++ cpp c++, cc, cxx
C# csharp cs
Swift swift
Scala scala
R言語 r

3. シェル・インフラ・データベース・設定ファイル

対象・ファイル形式 推奨指定名(識別子) 別名・エイリアス
Bash / シェルスクリプト bash sh, zsh, shell
PowerShell powershell ps1, pwsh
SQL (MySQL, PostgreSQL等) sql pgsql, mysql
YAML yaml yml
TOML toml ini
XML xml svg, plist
Dockerfile dockerfile docker
Nginx設定ファイル nginx nginxconf
Apache設定ファイル apacheconf apache
Terraform (HCL) hcl tf, terraform
GraphQL graphql gql

4. ドキュメント・作図・その他

種別 推奨指定名(識別子) 主な用途
Markdown markdown (または md) Markdown記法自体の書き方を説明する時
Diff(差分) diff コードの変更前(-)と変更後(+)の比較表示
Mermaid(作図) mermaid フローチャートやシーケンス図の自動描画
LaTeX(数式) latex (または tex) 複雑な数学記号や方程式の記述
プレーンテキスト(色なし) text (または plaintext) ログ出力や単純なテキストデータ
HTTP通信 http REST APIのリクエスト/レスポンスヘッダー

⚠️ 言語指定は大文字?小文字?

多くのパーサーは大文字小文字を区別しませんが、互換性や一般的な規約として「すべて半角小文字(例: python, javascript)」で記述するのが推奨されます。

Markdown インラインコード(`code`)の使い方とコードブロックとの使い分け

Markdownには、複数行のコードブロックのほかに、文章の途中に埋め込んでコードや専門用語を装飾する「Markdown インラインコード(inline code)」が用意されています。

1. インラインコードの基本構文

Markdown インラインコードを作成するには、装飾したい単語やフレーズをバッククォート1つ(`で左右から囲みます。

▼ Markdown インラインコードの入力例

パッケージをインストールするには `npm install axios` を実行し、
`package.json` の `dependencies` に追加されたことを確認してください。

▼ 実際のブラウザ表示結果

パッケージをインストールするには npm install axios を実行し、package.jsondependencies に追加されたことを確認してください。

インラインコードで囲んだ部分は、HTMLの <code>...</code> タグに変換され、背景色や文字色が変化して視覚的に引き立ちます。

2. インラインコードを使うべき代表的な場面

文章内で以下のような要素が登場するときは、インラインコードで囲むことで読者の誤読を防ぎ、専門文書としての完成度が高まります。

  • 変数名・関数名・クラス名: const userData, getUserInfo(), AuthService
  • コマンド・CLIオプション: git commit -m "feat: add login", docker compose up -d, --save-dev
  • ファイル名・ディレクトリパス: .env.local, /etc/nginx/nginx.conf, src/components/Header.tsx
  • HTMLタグ・属性: <div>, <a href="...">, class="container"
  • キーボードショートカット: Ctrl + CCmd + Shift + P
  • APIエンドポイント・HTTPステータス: GET /api/v1/users, 404 Not Found, 200 OK
  • 環境変数・設定キー: NODE_ENV=production, PORT=3000

3. コードブロックとインラインコードの比較・使い分け基準

項目 コードブロック(``` インラインコード(`
囲む記号 バッククォート3つ(``` バッククォート1つ(`
生成されるHTML <pre><code>...</code></pre> <code>...</code>
配置・レイアウト 独立した段落ブロック(別行立て) 文章の途中(行内・インライン)
複数行・改行 可能(改行やインデントを完全保持) 不可(1行の中でのみ使用)
シンタックスハイライト 可能(言語名を指定して多色表示) 不可(単色・背景色のみ)
主な用途 まとまったプログラムコード、設定ファイル全体、実行ログ 文中の変数名、ファイル名、短いコマンド、関数名

【実践・応用テクニック】コードブロックをより便利に使いこなす技

ここからは、実際の開発現場や技術ブログ執筆で役立つ、一歩進んだMarkdown コードブロックの応用テクニックを紹介します。

1. コードブロックに「ファイル名・タイトル」を表示する方法

技術ドキュメントでは「どのファイルに書くコードなのか」を明示したい場面が頻繁にあります。プラットフォームごとの記法を把握しておきましょう。

プラットフォーム別のファイル名記法

  • Qiita(キータ): 言語名の後ろにコロン(:)でファイル名を記述
    ```python:app.py
    print("Qiitaスタイルのファイル名表示")
    ```
  • Zenn(ゼン): 言語名の後ろにコロン(:)または半角スペースでファイル名を記述
    ```typescript:src/index.ts
    console.log("Zennスタイルのファイル名表示");
    ```
  • Docusaurus / Astro / VitePress / Nextra(MDX系): title="ファイル名" 属性を付与
    ```javascript title="config.js"
    module.exports = { port: 8080 };
    ```
  • GitHub / 標準Markdown(共通記法): 標準構文にはファイル名機能がないため、コードブロックの直前に太字や引用、またはファイルパスを明記します。
    📁 **src/utils/math.ts**
    ```typescript
    export const add = (a: number, b: number) => a + b;
    ```

▼ HTMLのfigcaptionを活用した汎用デザイン例(ブログ等に最適)

📄 src/auth.py
def authenticate(token: str) -> bool:
    return token == "secret-token"

2. コードブロック内にバッククォートを含めるエスケープ技

Markdown自体の書き方を解説するブログやREADMEを書く際、「コードブロックの中にバッククォート3つ(“`)をそのまま表示させたい」というケースがあります。

そのまま ``` を中に書くと、外側のコードブロックが意図せず途中で終了してしまいます。この問題を解決するルールは「外側のバッククォートの数を内側より多くする(4連バッククォートを使う)」ことです。

▼ 4連バッククォートで3連バッククォートをエスケープする例

````markdown
以下のようにMarkdownコードブロックを記述します:

```python
print("Hello World")
```
````

▼ 実際のブラウザ表示結果(中に “` が綺麗に表示される)

以下のようにMarkdownコードブロックを記述します:

```python
print("Hello World")
```

内側に4連バッククォートを含めたい場合は、外側を5連バッククォート(`````)にすれば何段階でも安全にネストして表示できます。

3. インラインコード内にバッククォートを含めるエスケープ技

文中のインラインコード内でバッククォート記号そのものを表示したい場合は、「2つのバッククォート(``)で囲み、前後に半角スペースを1つ空ける」というルールを使います。

▼ Markdown入力例

Markdownのインラインコードは `` `コード` `` のようにバッククォートで囲みます。
単体のバッククォート `` ` `` を表示することも可能です。

▼ 実際のブラウザ表示結果

Markdownのインラインコードは `コード` のようにバッククォートで囲みます。
単体のバッククォート ` を表示することも可能です。

前後の半角スペースはレンダリング時に自動的に除去されるため、余分な空白が表示される心配はありません。

4. diff記法によるコード差分(追加・削除)のカラー強調

コードの修正前後やGitコミットの差分を解説する際は、言語指定に diff を指定するのが非常に効果的です。

▼ Markdown入力例(diff記法)

```diff
  function calculateTotal(price, taxRate) {
-     return price * taxRate; // バグ:税額のみ返していた
+     return price * (1 + taxRate); // 修正:税込合計金額を返す
  }
```

▼ 実際のブラウザ表示イメージ(赤と緑で直感的に変更がわかる)

  function calculateTotal(price, taxRate) {
-     return price * taxRate; // バグ:税額のみ返していた
+     return price * (1 + taxRate); // 修正:税込合計金額を返す
  }

行頭に半角マイナス(-)を置くと赤色(削除行)、半角プラス(+)を置くと緑色(追加行)としてハイライトされます。変更のない行は半角スペース2個を行頭に空けます。

5. 長いコードブロックを折りたたむ(<details> の併用)

行数が非常に長い設定ファイルやログ出力をドキュメントに掲載する場合、ページが縦に伸びすぎて読者の集中力を妨げてしまいます。そんな時はHTML5の <details> タグを使って折りたたみ(アコーディオン)にしましょう。

▼ Markdown入力例(折りたたみ×コードブロック)

<details>
<summary>【クリックで展開】完全な設定ファイル(nginx.conf)を見る</summary>

```nginx
server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.html index.htm;
}
```

</details>

▼ 実際のブラウザ表示(クリックで開閉できます)

【クリックで展開】完全な設定ファイル(nginx.conf)を見る
server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.html index.htm;
}

⚠️ 【超重要】折りたたみの中には必ず「空行」を入れる!

<summary> の直後と </details> の直前に必ず空行を1行ずつ挟んでください。空行がないとMarkdownパーサーが内部の ``` をコードブロックとして正しく認識できず、生テキストのまま崩れて表示されてしまいます。

コードブロックでよくあるトラブル・原因と解決策

Markdown コードブロックを扱う際によく遭遇する疑問やトラブルとその対処法をQ&A形式でまとめました。

Q1. 言語を指定したのにシンタックスハイライト(色)が付かないのはなぜ?

主な原因とチェックポイント:

  1. 言語名のスペルミス・大文字: Python(大文字)や jsva(タイポ)になっていないか確認し、すべて小文字の python に修正する。
  2. 開始バッククォートとの間にスペースがある: ``` python のように空白が入ると正しく認識されない環境があります。```python と詰めて書きましょう。
  3. 閲覧環境(パーサー)がその言語に非対応: 使用しているMarkdownビューアやブログテーマにその言語のハイライトモジュールが組み込まれていない場合があります。
  4. VS Code等のエディタの場合: 拡張機能(シンタックスハイライト用プラグイン)がインストールされていない可能性があります。

Q2. コード内のインデントや半角スペースが崩れてしまう

解決策: 全角スペースが混入している場合や、タブ文字と半角スペースが混在していると表示崩れの原因になります。エディタの設定で「タブをスペース2個または4個に自動変換」「不可視文字の可視化」を有効にしておくのがおすすめです。

Q3. 行番号(Line Numbers)を表示させるにはどうすればいい?

標準のMarkdown(CommonMark)仕様には行番号を表示する構文は含まれていません。行番号を表示したい場合は、静的サイトジェネレーター(Astro, Docusaurus, VitePressなど)の行番号オプション(例: ```js showLineNumbers)や、WordPressのハイライトプラグイン(Code Syntax Block、Prism.js等)の行番号機能を有効化します。

Q4. コードブロックにワンクリック「コピーボタン」を付けたい

GitHubやZenn、Qiita、Notionなどでは標準でコード右上に「Copy」ボタンが自動付与されます。ご自身のブログやWebサイトに実装したい場合は、JavaScriptの navigator.clipboard.writeText() を利用した軽量スクリプトを導入するか、クリップボード機能付きのWordPressプラグインを使用するのが最も簡単です。

まとめ|Markdownコードブロックをマスターして読みやすい技術文書を作ろう

今回は、Markdown コードブロック(フェンス記法)とMarkdown インラインコードの基本文法から、主要言語のシンタックスハイライト指定一覧、ファイル名表示、エスケープ技、diff差分ハイライトまで幅広く解説しました。

🎯 今回のおさらいポイント

  • 複数行コードは ```言語名``` で上下を囲む
  • 文中の単語・変数・コマンド・ファイルパスは `インラインコード` で囲む
  • 言語指定は python, javascript, html, bash, sql, dockerfile などの小文字を使う
  • コードブロック内に ``` を含めたい場合は、外側を4連バッククォート(````)にする
  • コードの変更点(追加・削除)を分かりやすく伝えるには ```diff を活用する

マークダウン コードブロックを適切に使い分けることで、あなたの書いた記事や技術ドキュメントは格段に見やすく、読者にとってストレスのない価値ある情報になります。ぜひ日々のドキュメント作成やブログ執筆で活用してみてください!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です