バイブコーディングとクラウドAIエージェントでの作業に向けた、安全なデータ準備の実践。
この手法の考え方:業務データは企業の内側にとどめる。外部のAI環境へ渡すのは、匿名化したコピーか、すでにマスキング済みの文書だけ。個人情報の復元はローカルで行う。
労働安全衛生・産業保安の分野で人工知能を実際に使おうとすると、すぐに元データの問題に突き当たる。業務用の表や事故関係の資料には、氏名、社員番号、協力会社名、連絡先、金額など、リスク評価なしに外部サービスへアップロードしてはならない情報が含まれていることがある。
一方で、役に立つツールを作るには、まさに実際のデータ構造が必要になる。ダッシュボードは表の本物の項目と関係を理解しなければならず、事故分析エージェントは始末書や第一報、その他資料の構造を理解しなければならない。そこで私たちはデータとツールを切り離した。
その結果、オフラインのマスキングツールは二つの方向の土台になった。ひとつは後のバイブコーディング用に匿名化したExcelテンプレートを用意すること、もうひとつはクラウドAIエージェントで事故資料を分析するためにWord文書を用意することである。

初めての人にとっては、見た目より簡単だ。記事末尾の「すぐ使えるプロンプト」にあるPrompt 1は、特別なコードエディタに貼り付ける必要はない。アプリケーションやプログラムコードを作成・変更できるAIサービスに、普通のテキストとして入力すればよい。手順はいつも同じで、開発モードを開き、Prompt 1を丸ごと貼り付け、最初のバージョンを受け取って確認し、同じ対話の中でPrompt 2、Prompt 3、Prompt 4を順に与えていく。
実際にはいくつかの選択肢がある。ChatGPTでは「仕事」モードまたはCodex(アカウントで利用できる場合)、ClaudeではArtifacts、GeminiではCanvas、PerplexityではCreate files and appsモード(プランで利用できる場合)、ReplitではAgent。たとえばChatGPTなら「仕事」またはCodexを開き、新しいタスクを作ってPrompt 1の本文をメッセージ欄に貼り付ければよい。Geminiでは「ファイルを追加」→Canvas→プロンプトを貼り付け。PerplexityではCreate files and appsを選び、プロンプトを入力欄に貼り付け。ReplitではAgentを開き、必要ならまずPlanを有効にし、プロンプトを貼り付けて、ビルド後にPreviewで結果を確認する。
モード名は公開時点のものであり、これらのサービスの画面や機能の提供状況は時間とともに変わることがある。
最初の一歩としては、ChatGPT、Claude、Geminiのいずれかから始めることをすすめたい。普通の言葉でやり取りしながら、要件を段階的に詰めやすいからだ。すでにプログラムができていて、コードをより深く作り込む必要があるなら、ReplitやCodexなどの専用開発ツールが便利だ。
重要:どのプラットフォームを選ぶ場合でも、依頼の冒頭で次の要件を別途はっきり示す必要がある。「成果物は自己完結した単一のHTMLファイルであり、外部API・CDN・ネットワーク依存を使わず、インターネットを切った状態でも動作すること」。そしてもうひとつの原則。個人データを含む実際の業務用Excel/Wordファイルを、バイブコーディングのサービスにアップロードしてはならない。開発には、確認済みの匿名化コピーかテスト用ファイルだけを使う。
大量データの分析では、表の構造を保つことが重要になる。シート名と列名、データ型、日付、区分、「事業所—工場—区画」の階層、プロセスなどの属性である。実在の姓や識別番号は、プログラムの外枠を作るうえでは必要ない。
そこで業務用のExcel表を、ローカルのHTMLマスキングツールに読み込ませる。ユーザーのパソコン上でプログラムが機微になり得る値を見つけ、置換前に一覧で示し、ルールを手で直せるようにする。たとえば「イワン・イワノビッチ・イワノフ → Employee_001」「協力会社(有) → Organization_001」「社員番号 → ID_001」。
出力されるのは、元の表の論理を保ったままの匿名化コピーである。このコピーを使えば、すでにAIと一緒にプログラムを組み立てられる。フィルタ、KPI、対話的なグラフ、検索、レコード単位までの掘り下げなどだ。元のExcelファイルは企業の内側に残る。
開発が終わった後、実データベースは作成したHTMLの中に存在してはならない。完成したプログラムには、元のExcelをローカルで読み込むボタンを用意する。ファイルはユーザーのパソコンのブラウザが読み、ダッシュボードはローカルのセッション内で指標を計算し直す。これがこのシリーズの第2段階になる。
このモードを作るための基本的な指示はPrompt 1とPrompt 2にある(記事末尾の「すぐ使えるプロンプト」を参照)。




マスキングツールの二つ目の用途は、事故に関する文書を、クラウドAIでの分析に向けて準備することである。初期段階では、第一報、始末書、従業員の説明書、その他のWord資料などが対象になる。
ツールは匿名化したWordのコピーを作る。氏名やその他の選んだ値は、一貫した記号に置き換えられる。大切なのは、同じ人物が一式の文書全体で同じ記号を保つことだ。そうでなければ、エージェントは証言と出来事のつながりを見失う。
同時に、暗号化された復元キーがローカルで別ファイルとして作られる。キーには記号と元の値の対応が入っている。キーにはパスワードを設定し、そのパスワードは文書と一緒に渡さず、クラウドのエージェントにも保存しない。
その後、AIに渡すのはマスキング済みのWordだけである。エージェントは時系列を分析し、説明を突き合わせ、矛盾を見つけ、確認のための質問を作り、因果関係を探し、調査の分析資料の草案を用意できる。もちろん、正式な調査と最終的な判断は、委員会と責任ある専門家の役目として残る。
手を加えられたマスキング済み文書がクラウドから戻ってきたら、復元はまたローカルで行う。オフラインのツールに読み込ませるのは三つ。受け取ったWord、対応するキーのファイル、そしてパスワードである。プログラムは、本文に記号が残っている箇所を元の値へ戻す。
こうしてクラウドのエージェントは出来事の論理を扱いながら、元の氏名やその他のマスキングされた値は受け取らない。復元キーとパスワードはクラウド環境へ渡されない。
Wordとの双方向のやり取りの構成はPrompt 3に記した(記事末尾の「すぐ使えるプロンプト」を参照)。



マスキングツール自体もバイブコーディングで作った。ここで大切なのは、この方法を「プログラムを作って」と命じて完璧な結果を待つことだと考えないことだ。実際の進め方は違う。ひとつの機能を言葉にし、それを確かめ、不具合や新しい要件を書き留め、そのうえで次のバージョンへ進む。
最初の要件は、インストール不要の自己完結したHTMLファイル1つだった。その後、置換結果の手動確認、「追加で置換」のリスト、「変更しない」のリスト、現在のセッションの消去、Wordへの対応、暗号化キーの別ファイル作成、文書のローカル復元が加わっていった。
別の段階として技術的な自己点検を行った。今回AIに与えたのは開発者の役ではなく、自分のコードの監査人の役である。fetch、XMLHttpRequest、WebSocket、外部ライブラリ、CDN、API、iframe、ローカルストレージなど、データがパソコンの外へ出たり、作業終了後も残ったりし得る仕組みを点検させた。この種の自己点検は情報システム部門・情報セキュリティ部門の確認に取って代わるものではないが、試作の段階で明らかなリスクを取り除くことはできる。
点検用の依頼文はPrompt 4にある(記事末尾の「すぐ使えるプロンプト」を参照)。

ひとつのローカルなツールが、性質の異なる二つの課題をカバーする。Excelでは、安全なテンプレートを用意し、それを土台にAIで大量データのオフライン分析を作れる。Wordでは、マスキングされた個人情報を明かさずに事故資料をクラウドAIへ渡し、分析後にローカルで文書を復元できる。
肝心の原則は変わらない。まず、その課題を解くためにAIが知る必要のないものを外部から締め出し、そのうえで能力を使うということだ。
次回以降の記事では、この流れの二つの続きをそれぞれ紹介する。匿名化したExcelテンプレートから、実データをローカルで読み込む自己完結型のHSEダッシュボードをどう作るか。そして、事故調査の資料の分析にAIエージェントをどう使うかである。
これらの文面は、段階的な開発と、各社の具体的な状況に合わせた調整を想定している。
Excel (.xlsx) と Word (.docx) のデータをマスキングするための、自己完結したローカルアプリケーションを作ってください。
アプリケーションの形式:普通のブラウザで開ける単一のHTMLファイルで、追加のソフトウェアを入れずに動作すること。
必須要件:
1. 起動後、アプリケーションはインターネットにアクセスしないこと。
2. 外部API、telemetry、クラウド処理、ユーザーファイルの自動送信を使わないこと。
3. 必要なライブラリはすべてHTML内にローカルで埋め込むこと。
4. ユーザーがパソコンからExcel/Wordファイルを1つまたは複数読み込めること。
5. 元ファイルは変更しないこと。結果は別のコピーとして保存すること。
6. すべての処理は現在のブラウザタブのメモリ内で行うこと。
7. 現在のセッションを完全に消去するボタンを設けること。
マスキング機能:
- 氏名、イニシャル付きの姓、その他の選択した個人情報を探す;
- 組織名や、手動で指定したその他の値を探す;
- 必要に応じて番号、連絡先、金額をマスキングする;
- 同一のセッション内では、同じ元の値には同じ記号を割り当てる;
- 保存前に「場所 / 変更前 / 変更後」の形式で置換一覧をユーザーに示す;
- 任意の置換を手動で無効化・変更できるようにする;
- 「追加で置換」の入力欄を設ける;
- 置換より優先される「変更しない」の入力欄を設ける。
Excelでは表の構造と、その後の分析に必要な項目を保つこと。Wordでは文書の構造を可能な限り保つこと。
最初のバージョンができたら、自動認識の限界と、ユーザーが必ず手で確認すべき箇所を別途挙げてください。ローカルのHTMLマスキングツールを改良し、AIを使って分析プログラムを開発する際に利用できるExcelテンプレートを、安全に用意できるようにしてください。
目的:AIには業務用の表の構造を見せる一方で、実際の個人情報やその他の選んだ機微な値は見せないこと。
要件:
1. ユーザーが置換対象として指定していない限り、シート名、列見出し、データ型、日付、区分、階層を示す属性は保持すること。
2. 氏名は Employee_001、Employee_002 のような一貫した記号に置き換えること。
3. 組織名は Organization_001、Organization_002 のような記号に置き換えること。
4. 識別番号や社員番号がマスキング対象に選ばれている場合は、ID_001、ID_002 のような記号に置き換えること。
5. 同じ元の値には、現在のセッションで扱うすべてのExcelファイルを通じて同じ置換を割り当てること。
6. すべての置換の一覧を事前に表示し、ユーザーが手で修正できるようにすること。
7. プログラムが使っていないという理由だけで行や列を削除しないこと。
8. 元ファイルを変更しないこと。
9. 処理後、匿名化したコピーを別途ダウンロードできるようにすること。
10. 目立つ注意書きを加えること:結果を外部のAIへ渡す前に、ユーザーは匿名化したファイルを自分で確認しなければならない。
重要:Excelでは逆方向の復元は不要である。実際の業務データベースは企業の内側に残り、匿名化コピーは今後作るHTMLダッシュボードの論理と画面を設計するためだけに使う。自己完結型のHTMLマスキングツールを改良し、Word (.docx) との双方向のやり取りに対応させてください。
想定の流れ:
1. ユーザーが事故に関する元のWord文書を読み込む。
2. プログラムがローカルで、氏名、組織名、その他選んだ値を一貫した記号に置き換える。
3. ユーザーが置換一覧を確認して承認する。
4. プログラムが次を作成する:
a) マスキング済みのWord文書;
b) 「記号 ↔ 元の値」の正確な対応を収めた、暗号化された別ファイルのキー。
5. キーのファイルには、ユーザーが10文字以上のパスワードを設定する。パスワードはアプリケーションに保存せず、キーの中に平文で書き込まないこと。
6. マスキング済みのWordは、その後、内容分析のために外部のAIエージェントへ渡せる。
7. 手を加えられたWordを受け取ったら、ユーザーはローカルのアプリケーションに戻る。
8. 復元のために読み込むのは:
- 手を加えられたマスキング済みWord;
- 対応するキーのファイル;
- そしてパスワードの入力。
9. プログラムはローカルで、残っている記号を元の値に戻し、復元したWordを別ファイルとして作成する。
セキュリティ要件:
- 復元キーとパスワードは、決して自動でネットワークに送信しないこと;
- キーはマスキング済み文書とは別に保管すること;
- キーには現代的な暗号化を用いること(たとえば Web Crypto API による AES-256-GCM);
- パスワードが誤っている場合、キーの中身を明かさないこと;
- 作業終了後、現在のセッションを完全に消去できるようにすること;
- 外部のAIによって削除されたり大きく書き換えられたりした記号は自動では復元できない、と警告を表示すること;
- 画像内の文字は自動認識せず、画像やロゴは目視で確認する必要があることをユーザーにはっきり伝えること。
Wordの構造(段落、表、スタイル、ヘッダー・フッター、画像)は技術的に可能な範囲で保つこと。元ファイルは変更しないこと。作成したHTMLアプリケーションを、機微なデータを扱うローカルのオフラインツールとして技術監査してください。
コード全体を確認し、ネットワーク通信や、ユーザーファイルの内容の長期保存を生じさせ得る仕組みをすべて挙げてください。
個別に確認する項目:
- fetch;
- XMLHttpRequest;
- WebSocket;
- EventSource;
- navigator.sendBeacon;
- 外部の script src;
- 外部のCSSとフォント;
- CDN;
- 外部API;
- iframe;
- HTMLフォームの自動送信;
- Service Worker;
- localStorage;
- sessionStorage;
- IndexedDB;
- cookies;
- ライブラリやコード内の外部URL;
- telemetry、アクセス解析、crash-reporting。
求める結果:
1. プログラムはインターネットを切った状態で完全に動作すること。
2. ユーザーのExcel/Wordファイルがネットワークに送信されないこと。
3. 復元キーとパスワードが、アプリケーションによって自動で送信・保存されないこと。
4. ブラウザのローカルストレージを使う場合は、その理由を説明すること。元データ、キー、パスワードについては使用を排除すること。
5. アプリケーションの動作と両立する範囲で、ネットワーク接続と外部コンテンツの埋め込みを禁じる厳格な Content-Security-Policy を追加すること。
6. 「すべて消去」の操作後、現在のセッションのデータをアプリケーションの状態から削除すること。
7. 修正後にコードを再確認し、短い報告を出すこと:どの潜在的な経路が見つかり、何を取り除き、何が残り、それはなぜかを示す。
重要:このようなコードの自己点検は、社内の情報システム/情報セキュリティによる確認や、具体的な利用場面が許されるかどうかの法的判断に取って代わるものではない、と明記してください。実務上の原則:外部のAI環境へ渡すのは、確認済みの匿名化コピーだけ。復元キーのファイルとパスワードはローカルの内側にとどめ、エージェントへの依頼に添付しないこと。