zpaper-draft

Type to search...

to open search from anywhere

Markdown執筆ルール

Markdownで記事を執筆する際の構造的なルールをまとめたドキュメント。文体ではなく、Markdownの書き方に関するルール。

このドキュメントは、Markdownで記事を執筆する際の構造的なルールをまとめたものです。文体や言葉遣いについては 執筆スタイル を参照してください。

見出しと強調のルール

太字をセクション見出しとして使わない

太字(**text**)やイタリック(*text*)は、文中のインライン強調にのみ使用する。セクションタイトルには必ず見出し(#########)を使う。

<!-- ❌ Bad: 太字を見出しとして使用 -->

**セクションタイトル:**

- リスト項目
- リスト項目

<!-- ✅ Good: 適切な見出しを使用 -->

### セクションタイトル

- リスト項目
- リスト項目

太字をリスト項目のヘッダーとして使わない

リスト項目の先頭で太字をヘッダー代わりに使わない。

<!-- ❌ Bad: 太字をリストヘッダーとして使用 -->

- **新規フィッティング実行**
  - ユーザーが新しいフィッティングを実行したとき
  - バッジの非表示状態がリセットされる
- **localStorageクリア**
  - ブラウザキャッシュのクリア
  - プライベートブラウジングモード

<!-- ✅ Good: プレーンテキストでリスト項目を記述 -->

- 新規フィッティング実行
  - ユーザーが新しいフィッティングを実行したとき
  - バッジの非表示状態がリセットされる
- localStorageクリア
  - ブラウザキャッシュのクリア
  - プライベートブラウジングモード

<!-- ✅ Good: インライン強調として太字を使用 -->

- ユーザーが**新規フィッティング**を実行すると、バッジの非表示状態がリセットされる
- ブラウザキャッシュのクリアや**プライベートブラウジングモード**ではlocalStorageがクリアされる

日本語文中での太字の使用

本プロジェクトでは remark-cjk-friendly プラグインを導入済みのため、日本語文中で太字(**text**)を使用しても正しくレンダリングされる。CJK句読点が ** に隣接していても問題ない。

ただし、他のMarkdownレンダラー(GitHubなど)ではCommonMark仕様の制約により、CJK句読点が ** の内側に隣接している場合に太字が認識されないことがある。GitHub上でのREADME表示なども考慮する場合は、太字の内側に句読点を含めないようにすると安全。

深いネストの見出しは基本的に避ける

記事は文字数に制限があり、ブログのようなスタイルで、超長編のストーリーは含まない。長くなる場合は2〜3本の記事に分割すべきである。そのため、深くネストした見出し構造は基本的に避ける。

基本ルール:

  • 基本的にh2を使う

ただし、h3、h4、h5の使用を禁止するわけではない。

たとえば、以下のような見出し構造の記事があったとする。

## 大きなセクション

### サブセクション1

内容...

### サブセクション2

内容...

### サブセクション3

内容...

### サブセクション4

内容...

このh2セクションは長すぎる印象がある。このような場合、見出しレベルを調整することを検討する。

## 大きなセクション

内容...

## サブセクション1

内容...

## サブセクション2

内容...

## サブセクション3

内容...

## サブセクション4

内容...

文章が不自然でなければ、多くの場合このほうが読みやすい。

リストのルール

番号付きリストと箇条書きリストを混在させない

同じコンテンツ構造内で、番号付きリスト(ol)と箇条書きリスト(ul)を混在させない。

<!-- ❌ Bad: リストタイプの混在 -->

1. **項目1**: 説明
   - サブ項目1-1
   - サブ項目1-2
2. **項目2**: 説明
   - サブ項目2-1

<!-- ✅ Good: 一貫した箇条書きリスト -->

- 項目1: 説明
  - サブ項目1-1
  - サブ項目1-2
- 項目2: 説明
  - サブ項目2-1

リスト内にコードブロックを入れない

リスト項目の中にコードブロックを配置しない。コードブロックはリストの外に、適切なコンテキストとともに配置する。

<!-- ❌ Bad: リスト内のコードブロック -->

- LayoutDivide: 2カラムレイアウトコンポーネント
  ```jsx
  <LayoutDivide>
    <LayoutDivideItem>左カラム</LayoutDivideItem>
    <LayoutDivideItem>右カラム</LayoutDivideItem>
  </LayoutDivide>
  ```
  • LayoutDivide: 2カラムレイアウトコンポーネント
<LayoutDivide>
  <LayoutDivideItem>左カラム</LayoutDivideItem>
  <LayoutDivideItem>右カラム</LayoutDivideItem>
</LayoutDivide>
  • Column: コンテンツ用の単一カラムラッパー

番号付きリスト vs 見出し

コンテンツの複雑さに応じて、番号付きリストと見出しを使い分ける。

シンプルな内容 → 番号付きリスト

#### メリット

1. メンテナンス性の向上 - スタイルの差別化が容易
2. 効率的なレビュー - シンプルなバリデーション
3. 素早い問題解決 - 明確な防御策

複雑な内容(コードブロック、複数段落を含む) → 見出し構造

## 使用方法

### 1. HTMLマークアップ

```html
<div id="app"></div>
```

### 2. 初期化

```js

myLibrary.init({
  /* ... */
});

```

内容のない連続見出しを避ける

見出しの間には必ず内容を入れる。内容がない場合は番号付きリストを使う。

<!-- ❌ Bad: 内容のない連続見出し -->

### 1. 条件を追加

### 2. 型をインポート

### 3. 設定を返す

<!-- ✅ Good: シンプルなリストに変換 -->

1. 条件を追加
2. 型をインポート
3. 設定を返す

水平線(hr)の使用ルール

水平線(---)は、コンテンツの大きな区切りにのみ使用する。

❌ 使用しない場面

  • セクション(h2)の区切りとして使用しない
  • h2やh3の見出しがある場合、それ自体がセクションの区切りを示すため、水平線は不要
<!-- ❌ Bad: h2の前に水平線は不要 -->

---

## セクション1

内容...

---

## セクション2

内容...
<!-- ✅ Good: h2だけでセクションは区切られる -->

## セクション1

内容...

## セクション2

内容...

✅ 使用する場面

  • 記事内で大きく話題が変わる場合(章をまたぐような区切り)
  • 付録や補足情報を本文と明確に分離する場合
  • 連載記事の「次回予告」などを本文と分ける場合
## 本文の最後のセクション

本文の内容...

---

## 次回予告

次回は〜について解説します。

日本語テキスト内のURL記述

日本語文中にURLを含める際、GitHubが誤ってオートリンクしてしまうインラインURLは避ける。

パターン1: URLを箇条書きで分離

URLが補足情報の場合:

<!-- ✅ Good: 箇条書きで分離 -->

サイト名において、問題が発生していました。

- サイト名
  - https://example.com/path/to/page

パターン2: Markdownリンク形式

URLが文の流れに組み込まれる場合:

<!-- ✅ Good: Markdownリンク形式 -->

[サイト名](https://example.com/path/to/page)において、問題が発生していました。

避けるべきパターン

<!-- ❌ Bad: 括弧内の生URL(GitHubが誤ってオートリンクする) -->

サイト名(https://example.com/path/to/page)において、問題が発生していました。

使い分けの基準:

  • URLが参照・補足情報の場合 → パターン1(箇条書き)
  • サイト名とURLが自然なクリック可能なユニットを形成する場合 → パターン2(リンク形式)

ブロック記法(アドモニション)

ドキュメントサイトには様々なブロック記法(アドモニション)があるが、記事執筆では以下の2種類のみを使用する。

注記(note)

本文の補足説明や注意事項を示す場合に使用する。

:::note 注記

The quick brown fox jumps over the lazy dog.

:::

:::note 注記

The quick brown fox jumps over the lazy dog.

:::

備考(info)

本筋から外れるが関連する追加情報を示す場合に使用する。「ちなみに」「余談ですが」のようなニュアンス。

:::info 備考

The quick brown fox jumps over the lazy dog.

:::

:::info 備考

The quick brown fox jumps over the lazy dog.

:::

使用しないブロック記法

以下のブロック記法は記事執筆では使用しない:

  • :::tip - ヒント
  • :::warning - 警告
  • :::danger - 危険
  • :::caution - 注意

これらはドキュメントサイトでは有用だが、記事としては「注記」と「備考」の2種類で十分であり、種類を絞ることで一貫性を保つ。

ブログMDXへの変換マッピング

/l-convert-to-articleで下書きをブログ用MDXに変換する際、アドモニション記法をブログのカスタムコンポーネントに変換する。

ドキュメント記法ブログMDX
:::note 注記<Note>
:::info 備考<Info>

変換例:

ドキュメント形式:

:::note 注記

補足説明の内容です。
複数行も可能です。

:::

ブログMDX形式:

<Note>

補足説明の内容です。
複数行も可能です。

</Note>

カスタムタイトルがある場合はtitlepropで渡す:

<Note title="カスタムタイトル">

内容

</Note>

フロントマターのルール

descriptionの長さ

記事のフロントマターに書くdescriptionは、80文字前後(±20文字、つまり60〜100文字程度)が適切なバランス。短すぎると記事の内容が伝わらず、長すぎるとOGPやカード表示で途切れる。

# ❌ Bad: 短すぎる(39文字)
description: "Claude CodeのAgent Teams機能をいつ使うべきかについて紹介。"

# ✅ Good: 80文字前後(71文字)
description: "Claude CodeのAgent Teams機能をいつ使うべきかという問いに対して、普段の開発で使っている2つのパターンと、git worktreeベースの並列開発の実例を交えて紹介。"

なぜこれらのルールが重要か

これらの構造的ルールは、単なるスタイルの好みではなく、セマンティックHTMLとアクセシビリティに基づいている。

  • 太字・イタリックはインライン強調用: HTMLでは <strong><em> タグに変換される。これらは文中の強調用であり、見出しとして使うとセマンティック構造が壊れる
  • 適切な見出しはドキュメント階層を作る: 見出し(#########)は目次生成やスクリーンリーダーのナビゲーションに使用される。太字を見出し代わりに使うと、これらの機能が正しく動作しない
  • リストタイプの混在は視覚的階層を乱す: 番号付きリストと箇条書きリストを混在させると、読者にとって情報の優先度や関係性が不明確になる
  • アクセシビリティへの配慮: スクリーンリーダーは見出しやリストの構造に依存してドキュメントをナビゲートする。正しい構造は視覚障害を持つ読者にとって特に重要