生成AIで社内マニュアル・手順書を作り、更新し続ける運用。元の手順の集め方、画面の変更への追従、版の管理、古い手順の廃止
生成AIで
この
想定している
生成AIで手順書を作る前に、元の手順を「記録」として集める
生成AIで
集める
| 記録 | 集め方 | 気を |
|---|---|---|
| 画面の |
普段 |
練習用の |
| 既存の |
共有フォルダや |
いつ |
| 例外の |
「うまく |
録画には |
録画は、
録画や
手順書は、決まった形と管理の項目を持たせて書かせる
手順書は
手順書の
id: keihi-shinsei-01
title: 経費の申請を出す
system: 経費精算システム
screens: # この手順書が操作する画面(自動テストと結び付ける)
- expense-new
- expense-confirm
version: 3
status: published # draft / published / deprecated
owner: 経理担当
reviewed: 2026-10-03
next_review: 2027-01-31
replaced_by: null # 廃止したときに、案内する先の手順書の id
sources: # 下書きの元にした記録
- 録画 2026-09-30 経理担当
generated_by_ai: true
approved_by: 経理の責任者本文は、
- 目的。 この
作業で 何が 終わるのか - 前提。 必要な
権限、 始める 前に そろえる 書類、 作業できる 期間 - 手順。 1つの
番号に 1つの 操作。 ボタンや 入力欄は、 画面に 出ている 名前の とおりに 書く - 確かめ方。 作業が
終わった ことを、 どの 画面の どの 表示で 確かめるか
手順の
AIへの指示は、記録にない操作を足させず、分からない所を書かせる
手順書の
指示の
あなたは社内の手順書を下書きする担当です。
以下の <記録> だけを材料にして、決まった形の手順書を書いてください。
守ること:
- <記録> に出てこない操作、画面、ボタンの名前を書かない
- 記録から判断できない所は「【不明】」と書き、推測で埋めない
- 手順の番号ごとに、元にした記録と時刻(例: 録画 03:15)を括弧で付ける
- ボタンや入力欄の名前は、記録の中で読み上げられた表示のとおりに書く
- 個人の名前、顧客の情報、パスワードは書かない
形:
## 目的 / ## 前提 / ## 手順 / ## 確かめ方
<記録>
(録画の文字起こし、既存のメモ、例外の聞き取りを貼る)
</記録>下
- 操作しながら
読む。 その 作業を 普段しない 人が、 手順書だけを 見て 練習用の データで 最後まで 操作できるか - 不明の
所を 埋める。 「【不明】」の 箇所を 作業者に 聞いて 直し、 元に した 記録の 欄に 聞き取りを 足す
手順ごとに
画面の変更は、手順書に書いた名前が画面に残っているかを自動で見張る
手順書が
自社でscreens に
// tests/manual-screens/expense-new.spec.ts
// この画面を参照している手順書: keihi-shinsei-01
import { test, expect } from '@playwright/test';
test('expense-new: 手順書に書いた名前が残っている', async ({ page }) => {
await page.goto('/expenses/new');
await expect(page.getByRole('main')).toMatchAriaSnapshot(`
- heading "経費の申請"
- textbox "支払日"
- combobox "勘定科目"
- button "申請する"
`);
});ARIAスナップショットでは、toHaveScreenshot も
テストが
// scripts/manuals-for-screen.ts
// 使い方: npx tsx scripts/manuals-for-screen.ts expense-new
import { readFileSync, readdirSync } from 'node:fs';
import { parse } from 'yaml';
const screen = process.argv[2];
const dir = 'manuals';
for (const file of readdirSync(dir).filter((f) => f.endsWith('.md'))) {
const text = readFileSync(`${dir}/${file}`, 'utf8');
const head = text.match(/^---\n([\s\S]*?)\n---/);
if (!head) continue;
const meta = parse(head[1]);
if (meta.status === 'published' && meta.screens?.includes(screen)) {
console.log(`${meta.id}\t${meta.title}\t持ち主: ${meta.owner}`);
}
}外部のsystem に
版は履歴の残る場所で持ち、変えた理由とAIの関与を残す
手順書の
版の
| 変更の種類 | 例 | 版 | 確かめる人 |
|---|---|---|---|
| 表記の直し | 誤字、 |
履歴に |
持ち主 |
| 手順の変更 | ボタンの |
版を |
持ち主と、 |
| 前提の変更 | 権限や |
版を |
業務の |
AIにgenerated_by_ai と approved_by の
古い手順は消さずに「廃止」にして、新しい手順へ案内する
使わなくなった
廃止の
- 代わりを
決める。 新しい手順書が あれば replaced_byにその id を 書く。 業務 その ものが なくなったなら、 その 旨を 本文の 先頭に 書く - 状態を
変える。 statusをdeprecatedにし、本文の 先頭に 「この 手順は 使いません」と、 廃止した 日と 理由を 書く - 検索の
対象から 社内の外す。 ポータルの 一覧や、 社内の 文書を 探して 答える AIの、 検索の 対象からも 外す - 保存の
期間を 過去の決める。 作業を 確かめる ために 残す期間を 決め、 過ぎたら 消す
3つ目の、
定期の見直しは、次の見直し日と使われ方から順番を決める
画面の
見直しの
- 次の
見直し日を 持ち主に、過ぎた もの。 内容が いまの 業務と 合っているかを 確かめて もらう - よく
読まれている 読まれるもの。 回数が 多い 手順 書ほど、 間違いの 影響が 大きい - 問い合わせが
来た もの。 「手順書の とおりに やったが できない」と いう 声が あった 手順 書 - 持ち主が
いなくなった もの。 異動や 退職で 持ち主が 空いた 手順書は、 新しい 持ち主を 決めるまで 見直しの 対象に する
見直しでreviewed と next_review の
社内で回し始める順番
一度に
- 対象を
絞る。 よく使われ、 画面の 操作が 中心の 業務を 3本ほど 選ぶ - 形を
決める。 管理の項目と 本文の 4つの 見出しを 決め、 置き場所を 1か所に する - 記録を
集めて 録画と下書きする。 聞き取りから、 AIで 下書きを 作る - 操作しながら
確かめて 作業者以外の公開する。 人が 手順書だけで 操作できるかを 確かめる - 画面の
見張りを 公開した付ける。 手順書の 画面ごとに、 自動テストを 1本置く - 見直しの
日を 次の回す。 見直し日が 来た ものを、 毎月 まとめて 持ち主に 知らせる
株式会社bundlyzeでは
出典
参照した
- Playwright「Aria snapshots」:toMatchAriaSnapshot、
一部の 一致と 正規表現、 –update-snapshots での 更新 - Playwright「Visual comparisons」:toHaveScreenshot と、
環境に よる 描画の 違い - 総務省の
公表ページ :第1.2版(AI事業者ガイドライン) (2026年3月31日)、 共通の 指針
よくある質問
業務の画面を録画して、そのまま生成AIに手順書を書かせても大丈夫ですか?
録画には、
システムの画面が変わるたびに、手順書の画像を撮り直す必要がありますか?
すべてを
使わなくなった手順書は、消してしまってよいですか?
すぐには