| 項目 | 内容 |
|---|---|
| 見出し | 共通ルールの「修正は1点ずつ、確認を重視」「重大な操作の確認方法」 |
| 違い | 意味のまとまりが1つ終わるたびに、指示を待たずに commit し、続けて push する |
| なぜ | 公開資料を少しずつ直していくプロジェクトで、1点ごとに指示を挟むと進みが止まるため。push しても GitHub Pages が更新されるだけで、取り返しはつく |
| どこまで | このリポジトリだけ。共有環境 (PlayWright 等)への commit は対象外で、従来どおり指示を待つ |
| 変えないもの | 載せるファイルを名指しする・git add -A を使わない・最初のコミットの点検・メッセージの書き方 |
資料は HTML で直接作成する (docs/NN-タイトル.html)。HTML が唯一の原本。
docs/ZZ-構成.htmlnotes/90_rules/local-rules.htmlGitHub は .html をレンダリングしないため、同じ内容の .md を HTML から生成する。
html2md --dir notes --dir docs
--dir は既定の notes を置き換える。--dir docs だけを渡すと notes/ の md が作られない (実際に踏んだ).md を直接編集しない。次回の生成で上書きされる。修正は .html 側に入れるdocs/images/*.svg (HTML から切り出した SVG)への参照になる。コミット対象.html へのリンクは .md に、#chNN は見出しのスラッグに自動で書き換わるWhy: 資料を2箇所で保守すると必ず食い違う。HTML を原本と決め、Markdown は毎回作り直す派生物として扱う。
ps1 / cmd スクリプトは src/scripts/<用途>/ に置く。ここはコミット対象。
src/scripts/
├── figures/ # docs の SVG 図を PNG に書き出す
└── pptx/ # PNG と HTML から pptx を生成する
tmp/ に置く。コミットしないetc/ はセッションログと c.bat 用。スクリプトを置かない (gitignore 対象のため)Why: スクリプトは資料と同じく再現に必要な資産なので、履歴に残す必要がある。etc/ は gitignore 対象なので置くと失われる。
docs/NN-*.html を新規作成・完成させたら、同じ作業の中で docs/ZZ-構成.html の状態を更新する。
更新する箇所は2つ:
<span class="badge b-none">未着手</span> → <span class="badge b-good">作成済</span>)Why: 計画と実体がずれると、次にどこから再開すればよいか分からなくなる。状態の更新を別作業にすると必ず忘れる。
A1- A2- の連番にする本編は docs/NN-タイトル.html (01〜10)、付録は docs/AN-タイトル.html (A1・A2)とする。
A1.1 A2.3 のように接頭辞を引き継ぐ (目次の CSS カウンタは content: "A1." counter(toc) " ").chNN の付け方・色相の分割は本編と同じ。ファイル内の節数で 280°を分割するWhy: 本編は順に読むもの、付録は必要なときに引くもので、役割が違う。番号を連番で続けると「11章がある」と誤解される。
docs/A1-逆引き.html の A1.2 (コマンドから引く)は手書きしない。
src/scripts/index/build-index.ps1 が docs/NN-*.html を走査し、<!-- AUTO:cmdlets --> 〜 <!-- /AUTO:cmdlets --> の間を書き換える$Purpose に持つ。未登録の Cmdlet が見つかると実行時に警告が出るWrite-Log など)は $Examples で除外するWhy: 69 種 × 10 章の対応表を手で維持すると、章を追加するたびに陳腐化する。A1.1・A1.3・A1.4 は内容の判断が要るため手書きのまま。
tests/targets.ts が唯一の一覧。capture-figures / export-outline の2つの spec はどちらもここから読む。
targets.ts に1行足すだけでよいexport-outline は README を除外する (目次ページはスライド化しない)tests/ に置く。借りるのはブラウザだけで、共有環境側にファイルを置かない (PlayWright の USAGE「フォルダ規約」)Why: spec ごとに一覧を持つと追記漏れが起きる。実際に export-outline だけ追記を忘れ、付録の構造 JSON が生成されず pptx を作れなかった。
| 項目 | 内容 |
|---|---|
| 見出し | 共通ルールの「HTMLデザインルール」>「クラス名」の「章の連番は html2md が振る。HTML 側に番号を書かない」 |
| 違い | HTML の見出しに資料番号付きの番号を書く。タイトルバーの h1 は 01. PowerShell の生まれた経緯、章の h1 は 01.1 Windows Command Shell の限界 |
| なぜ | 資料をまたいで「01.2 を参照」と書くため。html2md が振る番号は資料ごとに 1 から始まり、資料番号を持たない |
| 引き受けること | Markdown では html2md の番号と重なり、## 1. 01.1 Windows Command Shell の限界 になる |
できるだけ SVG 図をいっぱい付ける。
各ファイルにフロー図・比較図・概念図を複数枚埋め込む。描き方は docs/rules/html-design.md および共通ルールの「SVG図」節に従う。
本文で述べた結論を callout で言い直さない。言い回しを変えても、読者は同じ話を2回読んだと感じる。
| 種類 | 例 |
|---|---|
| 警告・注意 | 「/MIR はコピー先の余分なファイルを削除します」 |
| 落とし穴 | 「Select-Object を通すと型が変わります」 |
| 意外な事実 | 「実行ポリシーはセキュリティ機能ではありません」 |
| 補足 | 「PowerShell が初めての人へ」 (読者B向け) |
| 判断 | 事実から導いた「だからこうする」。本文に書いていない場合のみ |
callout を消しても本文だけで意味が通るなら、その callout は不要。
逆に、本文側が結論まで書いてしまっている場合は、本文を「何が起きるか」の提示に留め、判断は callout に集約する。
✗ 本文 : PowerShell の関数はコマンドとして呼びます。
callout: 関数は「コマンド」であって「メソッド」ではありません。…
✓ 本文 : ここが経験者ほど間違える箇所です。しかもエラーが出ないまま、意図と違う値が渡ります。
callout: 関数は「コマンド」であって「メソッド」ではありません。…
Why: 本文と callout はどちらも「地の文」として読まれる。同じ主張が並ぶと、読者は情報量の割に長い資料だと感じる。
code / pre / SVG 内のコード表記は、バックスラッシュを ¥ で描くフォントを使う。
font-family: "BIZ UDゴシック", "MS ゴシック", Consolas, "Cascadia Mono", monospace;
¥ になるので、コピペすれば正しく \ として貼り付けられる¥ (U+00A5)を直接書いてはいけない。コピペしたパスが動かなくなるbuild-pptx.ps1 の $FontCode)も同じフォントに揃える実測での比較:
| フォント | \ の表示 | 等幅 |
|---|---|---|
| Consolas / Cascadia Mono | \ | ✅ |
| BIZ UDゴシック | ¥ | ✅ 採用 |
| MS ゴシック | ¥ | ✅ 見た目が古い |
| MS UI Gothic | ¥ | ❌ プロポーショナル |
Why: 日本語 Windows のコンソールは \ を ¥ で表示する。資料の表示を実機に合わせたほうが、読者が画面と資料を照合しやすい。
資料は Windows PowerShell 5.1 と PowerShell 7 (pwsh) の両方を対象にする。どちらか一方でしか動かない、または挙動が異なる内容には、その場でバッジを付ける。
.b-ps7 { background: linear-gradient(100deg, #1a5fa8, #4d9ae0); } /* pwsh 7 以降 */
.b-ps51 { background: linear-gradient(100deg, #5b2d82, #9a6bc4); } /* 5.1 固有 */
<span class="badge b-ps7">pwsh 7</span>三項演算子 <code>$a ? $b : $c</code> が使える
<span class="badge b-ps51">5.1</span>BOM がないと日本語が壊れる
Why: 読者の実行環境が 5.1 か 7 か分からない。コピペして動かなかったとき、原因がバージョン差だと即座に判別できる必要がある。