Claude Codeでパッチノートをgitログから起こしSteamニュースに載せる
gitのコミットとIssueからプレイヤー向けの変更点だけを抜き、内部名を言い換えてSteamのSmall Update / Patch Notesに載せるまでの流れを、Claude Codeの設定例つきでまとめます。
ゲームのパッチノートは、コミットログをそのまま貼ると読まれません。fix: NPE in InventoryManager.Rebuild はプレイヤーに何も伝えないからです。Claude Codeでgitログを読ませ、プレイヤー向けの言葉に直した下書きを作り、SteamのSmall Update / Patch Notesに載せるまでを手順にします。
Steamのパッチノートは、タイトルと本文の2項目だけで公開できる軽いイベントです。書く側の負担は、下書きを作る工程のほうに偏ります。そこをClaude Codeに任せ、人間は「出してよい内容か」を確かめる役に回る構成です。
Steamのパッチノートはどこに表示され、何を書けば足りるか
Steamのイベントと告知(Events & Announcements)には、ゲーム更新の区分が3つあります。Patch Notes、Regular Updates、Major Updatesです。パッチノートは最も軽い区分で、更新内容を最も熱心なプレイヤーに知らせる位置づけです。
表示される場所は限られています。
- Steamクライアントのダウンロード画面から更新内容を開いたとき
- ゲームのNews Hub(コンパクト表示)
- ライブラリのゲーム詳細画面(コンパクト表示)
- ストアページ(直近のパッチノートへのリンク)
ライブラリのホームにある「What's New」には出ません。大きな告知の枠を押し出さないための仕様です。つまりパッチノートは、細かい変更を気兼ねなく並べてよい場所です。
必須項目はタイトルと説明の2つだけで、箇条書きを貼って公開タブから公開できます。画像などは任意です。SteamPipeでビルドをアップロードすると、パッチノートを投稿するよう促す小さなプロンプトも出ます。
パッチノートに求められる最低限
- 必須はタイトルと説明の2項目
- 箇条書きを貼るだけでも公開できる
- ライブラリのホーム画面には出ず、ダウンロード画面とゲーム詳細に出る
gitログからプレイヤーに関係する変更だけを集める
下書きの品質は、Claude Codeに渡す材料で決まります。リリース間の全コミットを渡すと、リファクタリングやCI設定が混ざってノイズになります。先に機械的に絞ってから渡します。
直前のリリースタグから現在までのコミットを、マージコミットなしで取り出します。
git describe --tags --abbrev=0
git log v1.4.1..HEAD --no-merges --extended-regexp \
--grep='^(feat|fix|balance)(\(.*\))?:' \
--pretty=format:'%h %s'1行目で直近のタグを確かめ、2行目の範囲指定(v1.4.1..HEAD)に当てはめます。--grep はコミット規約が feat: fix: balance: の接頭辞で揃っている前提の絞り込みです。接頭辞を使っていないリポジトリでは、この絞り込みが効かないので、全件を渡して除外基準を指示文に書く運用になります。
Issueの番号がコミットに入っているなら、症状の説明はIssue側にあります。番号を拾っておくと、Claude Codeが本文を読みに行けます。
git log v1.4.1..HEAD --no-merges --pretty=format:'%s %b' \
| grep -oE '#[0-9]+' | sort -uコミットメッセージは開発者向けの文です。「再現条件」や「プレイヤーが見た症状」はIssueに書かれていることが多く、パッチノートの「修正」に必要なのは後者です。
CLAUDE.mdに用語集と書き方の規約を置く
毎回の指示文に規約を書くと、実行のたびに揺れます。リポジトリの CLAUDE.md に置けば、claude -p でも読まれます。規約が増えて長くなったときの扱いはCLAUDE.md is too long警告の解説にあります。--bare を付けない claude -p は、作業ディレクトリの CLAUDE.md を含む自動検出を対話セッションと同じように行うためです。
## パッチノート作成
- 読者はプレイヤー。クラス名・関数名・チケット番号・ブランチ名は書かない
- 用語は docs/glossary.md の「表示名」列を使う
- 見出しは「新要素」「調整」「修正」の3つ。該当がなければ見出しごと出さない
- 数値の調整は「変更前 → 変更後」を併記する
- コミットとIssueに書かれていない効果を推測で足さない
- 判断できない項目は末尾に「要確認」として並べる最後の2行が肝です。コミットメッセージから効果を推測して書かせると、実際の挙動と食い違う一文が混ざります。「書かれていないことは書かず、迷う項目は要確認に回す」と決めておくと、人間が見る範囲が「要確認」の数行に絞られます。
claude -pで下書きを作る
ログを標準入力で渡し、-p で非対話実行します。結果をJSONで受け、jq で本文だけを取り出します。
git log v1.4.1..HEAD --no-merges --pretty=format:'%h %s' \
| claude -p "このコミット一覧からv1.4.2のパッチノートの下書きを作る" \
--output-format json \
| jq -r '.result' > patchnotes-draft.txt標準入力にログを流し、指示文を引数に置く形は、公式のCLI解説にあるパイプ入力の使い方と同じです。Issueの本文まで読ませたいときは、許可するコマンドを絞って渡します。gh が入っている環境の例です。
claude -p "コミット一覧とIssue #212 #230 からパッチノートの下書きを作る" \
--allowedTools "Bash(git log *),Bash(gh issue view *)"--allowedTools は権限ルールの記法で、末尾の * で前方一致になります。読み取り系のコマンドだけを許可しているので、無人で回しても書き込みは起きません。オプションの組み合わせと非対話実行の注意点はclaude -pオプションの解説にまとめています。
内部名をプレイヤー向けの言葉に直す
パッチノートで最も事故が起きやすいのは、内部名の漏れです。コード上の名前とゲーム内の表示名が違うゲームでは、対応表を用意しておくのが確実です。
docs/glossary.md を次のように作っておくと、CLAUDE.md の規約から参照できます。以下は架空のゲームの例です。
| コード上の名前 | ゲーム内の表示名 | メモ |
|---|---|---|
InventoryManager | ゲーム内の表示名持ち物画面 | メモ画面名で書く |
EnemyType.Goblin02 | ゲーム内の表示名ゴブリン斥候 | メモ図鑑の名称に合わせる |
SaveSlotLegacy | ゲーム内の表示名旧形式のセーブデータ | メモ「レガシー」は使わない |
NPE / null参照 | ゲーム内の表示名(書かない) | メモ症状で書く |
最後の行のように、名前を言い換えず症状に置き換える項目もあります。次の例は、規約を渡したときに目指す書き換えの方向です。実行結果の再現ではなく、考え方を示す例示です。
コミットメッセージとパッチノートの違い
コミットログ
a1b2c3d fix: NPE in InventoryManager.Rebuild (#212)
e4f5a6b balance: Goblin02 hp 40->34
c7d8e9f feat: SaveSlotLegacy migrationパッチノート
【修正】
・持ち物画面を開いたときにゲームが停止することがある問題を修正
【調整】
・ゴブリン斥候の体力を40から34に変更
【新要素】
・旧形式のセーブデータを新形式へ引き継げるようになりました注意したいのは、言い換えで意味を増やさないことです。「停止することがある」は、Issueに書かれた症状から取った表現です。Issueに症状がなければ、「要確認」に回します。
公開前に確かめる3点
下書きは人間が読んでから公開します。パッチノートは公開の場に出るので、見る観点を固定しておきます。
公開前に見る3点
内部情報の混入
ブランチ名、社内のチケット番号、未発表の機能名、ビルド用のパスが入っていないかを見ます。
数値の裏取り
「40から34」のような数値は、差分のコードやデータで一致を確かめます。文章だけから拾った数値は誤りやすい部分です。
書かれていない効果
コミットにない「快適になった」「安定した」のような評価語は削ります。
1点目には機械的な補助が使えます。ログやIssueに認証情報が混ざっていると、下書きにも写る恐れがあります。コミット時点で止める方法はgitleaksとhookの組み合わせで扱っています。
落とし穴
「要確認」を消して公開すると、推測の一文が残る
CLAUDE.md の規約で迷う項目を「要確認」に回していても、そこを読まずに公開すれば意味がありません。公開前の作業は「要確認」の行を埋めるか削ることだと決めておくと、見落としが減ります。
Steamのイベントエディタに載せてビルドに紐づける
下書きが固まったら、Steamworksで投稿します。手順は次のとおりです。
パッチノートの投稿手順
- 1
投稿画面を開く
Steamworksでアプリのランディングページを開き、下にある「Post/Manage Events & Announcements」を選びます。
- 2
種別を選ぶ
「Create new Event or Announcement」から「A Game Update」を展開し、「Small Update / Patch Notes」を選びます。
- 3
下書きを貼る
タイトルと説明を入力します。箇条書きをそのまま貼れます。HTMLで作った文書は、エディタ上部のHTML取り込みアイコンからBBCodeに変換して取り込めます。
- 4
ビルドに紐づける
説明タブの「Link to Build」で、対象のブランチを選びます。
- 5
公開する
公開タブで公開します。
ビルドへの紐づけは、ダウンロード画面から「PATCH NOTES」リンクで読めるようにするために必要です。過去のビルドに後から紐づける方法はなく、現在と今後のビルドだけが対象です。ビルドを公開する前に投稿画面を用意しておくと、この制約に引っかかりません。
投稿には、いくつか知っておくと詰まりにくい点があります。
- 投稿したアカウントが作成者として表示される。アカウントの名前やアバターも公開部分に出る
- 投稿できるのは、パートナーアクセスを持つ発行元グループのメンバーか、Steamコミュニティハブの管理者・役員
- ライブラリに表示されるまで、1時間ほどの遅れが出ることがある。内容のレビューとカテゴリー判定が入るため
- 公開後に保存した編集は、すぐプレイヤーに反映されることがある
HTML取り込みでは、<html> <head> <div> <hr> などのタグは取り込まれません。表や入れ子の多いHTMLを貼るときは、プレビューで崩れを確かめます。
多言語に出すとき
イベントのテキストと画像は、言語ごとに翻訳版を用意できます。用意のない言語のプレイヤーには英語版が表示されます。翻訳はCSVで一括取り込みでき、™のような特殊記号を含むときはCSV-UTF8形式で保存します。
英語版の下書きをClaude Codeに作らせる場合も、docs/glossary.md に英語の表示名の列を足しておくと、用語がぶれません。
Small UpdateとMajor Updateのどちらで出すか
更新の大きさで、出す区分を選びます。
| 観点 | Small Update / Patch Notes | Major Update |
|---|---|---|
| 向く更新 | Small Update / Patch Notesバグ修正、細かな調整 | Major Update年間でも大きな更新 |
| 必須項目 | Small Update / Patch Notesタイトル、説明 | Major Updateタイトル、説明、カバー画像(800×450px) |
| ライブラリのWhat's New | Small Update / Patch Notes出ない | Major Update出る(条件あり) |
| ストアページ | Small Update / Patch Notes直近のパッチノートへのリンク | Major Update表示される2件のイベントに入る |
Major Updateは画像と本文の作り込みが前提です。gitログから起こした下書きは「修正と調整の一覧」であって、更新の魅力を伝える文章ではありません。小さな更新はこの記事の流れで足ります。大きな更新は、一覧を土台にして見せ場を人間が書く分担になります。
Steamの更新ガイドは、自社タイトルの経験から、Major Updateは多くても1〜2か月に1回に収めるやり方を挙げています。その間の細かい更新を、パッチノートが受け持ちます。
自動化するときの線引き
パッチノートの下書き作成は、タグを打つタイミングで回すジョブにできます。claude -p が出力した下書きをファイルに保存するところまでを自動にし、Steamへの投稿は人間が行う線引きが扱いやすいです。投稿はプレイヤーに見える操作で、公開後の編集も、すぐ反映されることがあるからです。
リリース手順の中に置くなら、次の3段にします。
- タグを打つ
- 下書きをファイルに出力する(自動)
- 人間が読み、Steamworksで投稿する
どこまで自動化するかは、チームの許容度で決まります。下書きの精度が安定してから、要確認がゼロのときだけ人間の確認を軽くする、といった段階的な運用もできます。
まとめ
Steamのパッチノートはタイトルと説明だけで出せるので、負担の中心は「コミットをプレイヤーの言葉に直す」工程です。ここを CLAUDE.md の規約と用語集で固定し、迷う項目を「要確認」に集めると、人間が読む範囲を絞れます。
投稿だけは自動にせず、内部情報・数値・推測の混入を人間が見てから公開する。この線引きが、パッチノートの事故をいちばん減らします。