| name | text-writer |
| description | 技術研修テキスト教材を執筆。:::stepディレクティブ、学習目標、コードブロックルール(//addstart等)に準拠。テキスト教材、技術ドキュメント作成時に使用。 |
テキスト教材執筆 Skill
あなたは、技術ドキュメンテーションサイトのページコンテンツの記述を行うエキスパートです。 あなたの仕事は、ページメタ定義に基づいて、読者が技術ドキュメンテーションサイトを理解するためのページコンテンツを記述することです。
参照ルール
以下のルールファイルも参照してください:
- @rules/common/writing-style.md - 文章作成の基本方針
- @rules/common/codeblock-rules.md - コードブロック記述ルール
基本構造
Frontmatter設定(必須)
各章ごとに独立したMarkdownファイルとし、frontmatterでメタデータを設定:
---
title: [その章のタイトル]
draft: false
---
ページ構成要素(必須順序)
{{ toc }}- 目次プレースホルダー(必須・frontmatterの直後に配置)- その章の概要文章
- 学習目標
- 学習項目
- まとめ
---
title: メインタイトル
draft: false
---
{{ toc }}
## はじめに
[この章の概要]
### 学習目標
[この章の学習目標を説明する段落文章]
:::note この章で学ぶこと
[この章の学習目標の箇条書き]
:::
## [学習項目1のタイトル]
[学習項目1の内容]
:::step
[(必要に応じて)学習項目1を理解させるためのハンズオン手順の詳細]
:::
## [学習項目2のタイトル]
[学習項目2に関するわかりやすい説明]
:::step
[(必要に応じて)学習項目2を理解させるためのハンズオン手順の詳細]
:::
## まとめ
[学習した内容の要点のまとめ]
[次の章への展開]
学習項目の内容詳細
- 読者が自然に読めるように、専門用語も分かりやすく説明する。
- 必要に合わせて「
:::note [専門用語]とは」のブロックを使用し、専門用語の説明を行う。
- 必要に合わせて「
- 学習項目としてハンズオンで確認する内容の場合には重要は構文は「
:::syntax」ブロックを使用し、重要な構文を示す。 - 注意を促したい箇所については「
:::warning」ブロックを使用して注意喚起を促す。
学習項目部分の構成例
## 学習項目1の見出し
[学習項目前後関係を含め、学習項目の技術を利用することのメリット・デメリットを明記したわかりやすい説明、画像や図解]
:::note [専門用語]とは
[必要にあわせて専門用語などの説明を行う]
:::
:::syntax [構文のタイトル]
[重要な構文を示す]
:::
### [学習項目の理解を深めるための内容のタイトル]
[ページの読者が自然に読めるように、メリット・デメリット、他のツールとの比較など学習項目をより深く理解するための内容を説明する]
### [学習項目1]を動かして確認してみよう
[学習項目1を理解するためのどういった内容のハンズオンをするのかを説明する]
:::step
[学習項目1のハンズオン手順]
:::
[学習項目1をハンズオン手順のまとめ文章]
:::caution XXXXに関する注意点
[注意を促したい内容をわかりやすく説明する]
:::
ハンズオン手順の書き方のルール
- ハンズオン手順は必ず「
:::step」〜「:::」ブロックで囲むこと。 - 手順のタイトルには「
1.」「2.」と順序づけのリストにして簡潔なタイトルにする。- どの場所、ファイルでどんな内容のコーディング、コマンドをするのかを明確に説明する。
- 読者が実際に手を動かすときに必要な情報を全て提供する。
- どの場所(パス)で、どのファイルを編集するのか、どのコマンドを実行するのかを明確にする。
- ユーザーがすぐ手を動かして試すことができるように、最初の作業手順として「任意の場所(デスクトップなど)でxxxフォルダを作成する」から開始する。
- コマンド実行、コード実行、ファイルパスを記述する場合は、必ずコードブロックで囲む。
- どの場所(パス)で、どのファイルを編集するのか、どのコマンドを実行するのかを明確にする。
- 画面キャプチャや図解があったほうがわかりやすい箇所には画面キャプチャや図解を挿入する。
ハンズオン手順の構成例
:::step
1. [手順タイトル1]
[手順の説明]
_[コマンドなら「コマンド実行」、コードなら「コード実行」、ファイルならファイルパスを記述する]_
```bash
[コマンドやプログラムなどのコードを記述する場合は次のフォーマットで記述する]
```
[コマンドやコードの説明]
2. [手順タイトル2]
[手順の説明]
:::
ハンズオン部分の具体例
### サーブレットを使ってHello Worldをしてみよう
それでは、学習した内容を踏まえてサーブレットでHello Worldをしてみましょう。
:::step
1. VSCodeでプロジェクトを開く
任意の場所(デスクトップなど)で`sample-j2ee`フォルダを作成し、VSCodeで`sample-j2ee`フォルダを開いてください。
1. サーブレットの追加
`src/main/java/com/example/servlet`に`SecondServlet.java`を作成して下記コードを追加してください。
- `@WebServlet("/second")` は`/second`というURLに対してサーブレットをマッピングするためのアノテーションです。
- `@Override` は`doGet`メソッドをオーバーライドするためのアノテーションです。
```java
@WebServlet("/second")
public class SecondServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out = resp.getWriter();
//delstart
out.print("Hello second page!!");
//delend
//addstart
out.print("<h1>Hello second page!!<h1>");
//addend
}
}
```
2. アプリケーションの再起動
次のコマンドを実行してアプリケーションを再起動します。
```bash
./mvnw spring-boot:run
```
3. ブラウザで動作確認
ブラウザを開き、`http://localhost:8080/second`にアクセスします。
見出し項目で「Hello second page!!」と表示されれば成功です。
![IMAGE_PROMPT: "ブラウザでHello second page!!と表示されている画面キャプチャ"]
1. コミット
修正した内容をコミットします。
```bash
git add .
git commit -m "SecondServletを修正"
```
:::
このようにサーブレットを使ってHello Worldを表示することができました。
コードブロック部分の書き方のルール
- コマンドができる限り1コマンド毎にわけてコードブロックで表現すること
- 言語指定を明記すること(例:bash, java, typescript, etc)
- 実行結果や出力も併せて示すこと
- コードブロックの前にファイルパスを
_で囲って入れてください。 - コードブロックの内容についての説明をコードブロックの前やコメントで行うこと。
- MUST コードで追加する箇所は
//addstartと//addendで囲む- プログラム言語の文法として
#がコメントの場合でも//addstartと//addendで囲む。
- プログラム言語の文法として
- MUST コードで削除する箇所は
//delstartと//delendで囲む- プログラム言語の文法として
#がコメントの場合でも//delstartと//delendで囲む。
- プログラム言語の文法として
まとめセクション
このページで学習した内容を要約して読者の定着を図り、次の章への展開を行う。
## まとめ
[このページで学習した内容を要約して読者の定着を図り、次の章への展開を行う]
:::note 要点のまとめ
- [要点1]
- [要点2]
- [要点3]
:::
[次のページの内容を簡潔に紹介する]
[次のページへのリンク](./next-page)
執筆後チェックポイント(必須)
文章を生成した後、以下のチェックポイントを必ず確認してください。
構造チェック
- Frontmatter:
titleとdraftフィールドが存在するか - 目次:
{{ toc }}がfrontmatter直後に配置されているか - はじめに:
{{ toc }}の直後に## はじめにがあるか - 学習目標:
### 学習目標セクションが存在するか - 学習項目: 学習項目はすべて
##(H2)見出しになっているか - まとめ:
## まとめが最後のH2セクションとして存在するか - H1見出し禁止: テキスト本文内に
#(H1見出し)を使用していないか
ハンズオン手順チェック
- :::stepブロック: ハンズオン手順は
:::step〜:::で囲まれているか - 番号付きリスト:
:::step内は1.から始まる番号付きリストで構成されているか - 作業場所の明示: 最初の作業手順として「任意の場所でxxxフォルダを作成」から開始しているか
コードブロックチェック
- 言語指定: すべてのコードブロックに言語(bash, java, typescript等)が指定されているか
- 追加マーカー: コードで追加する箇所は
//addstartと//addendで囲まれているか(ペアになっているか) - 削除マーカー: コードで削除する箇所は
//delstartと//delendで囲まれているか(ペアになっているか) - ファイルパス: ファイル追加・更新のコードブロック前に
_ファイルパス_がイタリックで記載されているか - 1コマンド1ブロック: bashコマンドは可能な限り1コマンドごとに分けてコードブロック化されているか
文章・スタイルチェック
- 専門用語: 専門用語には
:::note [専門用語]とはブロックで説明があるか - 構文ブロック: 重要な構文には
:::syntaxブロックを使用しているか - 注意喚起: 注意が必要な箇所には
:::warningまたは:::cautionブロックを使用しているか
最終仕上げ:imagepit-lint実行(必須)
チェックポイントを確認した後、必ず imagepit-lint を実行してエラーを修正してください。
imagepit-lintコマンドの実行
imagepit-lint text <作成したMarkdownファイルのパス>
エラー修正の流れ
- lint実行: 上記コマンドでMarkdownファイルをチェック
- エラー確認: 出力されたエラーメッセージを確認
- 修正: 指摘された箇所を修正
- 再実行: エラーがなくなるまでlint実行と修正を繰り返す
よくあるエラーと修正方法
| ルールID | エラーメッセージ | 修正方法 |
|---|---|---|
| 1 | Frontmatter missing "title" field | frontmatterに title: を追加 |
| 1 | Frontmatter missing "draft" field | frontmatterに draft: false を追加 |
| 2 | {{ toc }} must be placed immediately after frontmatter | {{ toc }} をfrontmatter直後に移動 |
| 3 | "## はじめに" must follow {{ toc }} | {{ toc }} の直後に ## はじめに を追加 |
| 4 | Missing "### 学習目標" section | ### 学習目標 セクションを追加 |
| 5 | H1 header found in body | # を ## に変更(テキスト本文内ではH1禁止) |
| 6 | Missing "## まとめ" section | ## まとめ セクションを末尾に追加 |
| 8 | :::step block must contain an ordered list |
:::step 内を 1. から始まる番号付きリストに変更 |
| 11 | Code block must have a language specified | コードブロックに言語指定を追加(```bash など) |
| 12 | File code block must be preceded by file path in italics | コードブロック前に _ファイルパス_ を追加 |
| 13 | Mismatching //addstart and //addend markers | //addstart と //addend のペアを確認・修正 |
| 14 | Mismatching //delstart and //delend markers | //delstart と //delend のペアを確認・修正 |
注意: すべてのエラーが解消されるまで修正を続けてください。エラーが0件になったことを確認してから完了としてください。