Vibe Codingを始める前に知るべきセキュリティリスクとチェックリストを学ぶ。後半では実際にAIにコードを書かせ、安全に使いこなす一連の流れを体験する。
| 時間 | セッション | 形式 | 内容 |
|---|---|---|---|
| 0:00 - 0:10 | Opening | 座学 | 研修の目的・ゴール、2日間の全体像 |
| 0:10 - 1:00 | Session 02 Part 1 | 座学議論 | セキュリティリスク4分類、判断基準、入力禁止情報 |
| 1:00 - 1:10 | 休憩 | - | - |
| 1:10 - 1:40 | Session 02 Part 2 | 座学演習 | セキュリティチェックリスト + ケーススタディ3題 |
| 1:40 - 2:10 | Session 03 Part 3 | ハンズオン | 環境構築(VSCode + Copilot、GAS) |
| 2:10 - 2:20 | 休憩 | - | - |
| 2:20 - 3:30 | Session 03 Part 4 | ハンズオン | 初めてのVibe Coding(演習A: VSCode / 演習B: GAS) |
| 3:30 - 3:50 | Session 04 | 座学議論 | 振り返り + 宿題提示 |
| 3:50 - 4:00 | Closing | 座学 | 質疑応答・閉会 |
2日間で「Vibe Codingを安全に使いこなせる状態」を目指す。いきなりコードは書かない。まず交通ルールを覚える。
| 日程 | テーマ | キーワード |
|---|---|---|
| Day 1(今日) | セキュリティ + 入門 | リスクを知る / チェックリストを使う / 初めて作る |
| Day 2(次回) | 実践 + 認定 | プロンプトを磨く / 自分の課題を解決 / テストで合格 |
車の運転を習うとき、まず教習所で危険予測を学ぶ。Vibe Codingも同じ構造を持っている。AIは便利だが、使い方を間違えれば会社に実害が出る。知っていれば防げる。だからセキュリティを先に学ぶ。
受講者に「生成AIを業務で使うとき、どんな危険がありそうですか」と問いかけてから、以下の4分類を解説する。
AIへの入力内容が外部に流出する、またはAIの学習データに取り込まれるリスク。プロンプトに含めた情報はサービス提供者のサーバーを経由する。設定によっては学習に利用される可能性がある。
AI生成コードにオープンソースのライセンス付きコードが混入する可能性がある。そのコードを社内で使うと、意図せずライセンス違反になりうる。
AI生成コードに、外部サーバーへのデータ送信、ファイルの削除、権限の昇格など意図しない動作が含まれる可能性がある。AIはコードの安全性を保証しない。
個人情報や個人を特定できるデータをAIに入力すると、プライバシー侵害に該当する場合がある。個人情報保護法や社内規定に抵触する。
| リスク | 想定される影響 | 防止策 |
|---|---|---|
| 情報漏洩 | 競合への技術流出、株価への影響 | ダミーデータ置換、利用規約確認 |
| 知的財産 | ライセンス違反訴訟、公開義務 | import文チェック、標準ライブラリ限定 |
| マルウェア | 不正アクセス、データ破壊 | 実行前目視、外部通信キーワード検索 |
| プライバシー | 法令違反、行政処分、信頼失墜 | 個人情報入力禁止、匿名化処理 |
| カテゴリ | 具体例 | 判断基準 |
|---|---|---|
| 社内機密 | 設計データ、原価情報、未発表製品情報、経営戦略 | 社外に出たら競争力に影響するか |
| 個人情報 | 社員名簿、顧客情報、連絡先、人事評価 | 個人を特定できるか |
| 認証情報 | パスワード、APIキー、アクセストークン | システムへのアクセス権限に関わるか |
| 業務固有データ | 品質データ、不良率、サプライヤー情報 | 取引先との守秘義務があるか |
| 場面 | OKな入力 | NGな入力 |
|---|---|---|
| Excel集計の自動化 | 「A列に部署名、B列に金額が入ったCSVを集計するスクリプトを書いて」 | 実際の社員名・金額入りCSVファイルを丸ごと貼り付ける |
| メール文面の作成 | 「取引先への納期遅延お詫びメールのテンプレートを作って」 | 「XX社の田中様への納期遅延メールを書いて。注文番号はABC-123で...」 |
| データ分析 | 「売上データの月次推移グラフを作るPythonコードを書いて」(ダミーデータで実行) | 実際の売上データ(金額・取引先名含む)をプロンプトにペースト |
| 設定ファイルの作成 | 「PostgreSQLの接続設定のテンプレートを作って」 | 「DBのパスワードはXXX、ホストは192.168.1.XXで...」 |
| GASでのシート操作 | 「アクティブシートのA列をソートするGASを書いて」 | 「社員番号H001~H500の勤怠データが入ったシートを...」 |
迷ったら入力しない。後から取り消すことはできない。
迷ったときの判断手順。上から順に確認し、一つでもYesなら入力を止める。
チェックは「入力 → 生成 → 出力 → 共有」の順に行う。コードを生成するたびに、実行前にこのリストを使う。
AIにプロンプトを送信する前に確認する項目。
AIが生成したコードを実行する前に確認する項目。
コードの中で以下のキーワードを検索し、該当があれば確認する。VSCode: Ctrl+F(Mac: Cmd+F)で検索。
| 分類 | キーワード | 検出時の対応 |
|---|---|---|
| 外部通信系 | fetch / requests / http / urllib / socket / UrlFetchApp / XMLHttpRequest |
該当があれば原則NG。依頼した通信のみ許可 |
| 不要サービス系(GAS) | GmailApp / DriveApp / CalendarApp / ContactsApp / MailApp / HtmlService |
SpreadsheetApp以外は要確認 |
| ファイル操作系 | open( / fs. / readFile / writeFile / deleteFile |
操作範囲が指定フォルダに限定されているか確認 |
| ログ出力系 | print( / console.log / Logger.log |
出力内容に機密情報が含まれていないか確認 |
各ケースについて自分なりに考えてから、解説を確認してください。
あなたは総務部の担当者。社員500名分の氏名・社員番号・部署・連絡先が入ったExcelファイルがある。部署ごとの人数集計を自動化したいと考え、GitHub Copilotに「このExcelファイルを読み込んで、部署ごとの人数を集計するPythonスクリプトを作ってください」と送ろうとしている。
このプロンプトを送信する前に、何を確認すべきか。
GitHub Copilotで、CSVファイルのデータ整形スクリプトを作ってもらった。生成コードを確認すると、以下の行が含まれていた。
この2行を見つけたら、どう対処するか。
AIはときどき親切心で外部サービスを使おうとする。頼んでいない通信は必ず疑う。
Vibe Codingで、月次レポートの数値を自動集計するGASスクリプトを作成した。便利なので部署の同僚10名にも使ってもらいたい。
共有する前に、どんな手順を踏むべきか。
自分のために作ったものと、人に使ってもらうものでは求められる品質が違う。共有前の一手間がトラブルを防ぐ。
事前セットアップガイドで導入済みの前提。ここでは確認と動作テストを行う。画面で手順を確認しながら進めていく。
補完候補が表示されればOK。Tabキーで受け入れる。表示されない場合はトラブルシューティングへ。
スプレッドシートのA1セルに「GAS動作テスト完了」と表示されれば成功。
| 操作 | Windows | Mac | 用途 |
|---|---|---|---|
| Copilot Chat を開く | Ctrl+Shift+I | Cmd+Shift+I | AIに質問・コード生成依頼 |
| 補完を受け入れ | Tab | Tab | Copilotの提案を採用 |
| 補完を拒否 | Esc | Esc | 提案を却下 |
| 次の候補を表示 | Alt+] | Option+] | 別の提案を見る |
| ファイル内検索 | Ctrl+F | Cmd+F | セキュリティキーワード検索 |
| 行のコメント化 | Ctrl+/ | Cmd+/ | 不要コードの無効化 |
| GAS:スクリプト実行 | エディタ上部の「実行」ボタン | GASコードを実行 | |
| GAS:ログ確認 | 「実行ログ」タブ | Logger.logの出力確認 | |
| 問題 | 原因 | 対処法 |
|---|---|---|
| Copilotの補完が出ない | サインインしていない | VSCode左下のアカウントからGitHubにサインイン |
| Copilotの補完が出ない | 拡張機能が無効 | 拡張機能タブでCopilotを有効化 |
| Copilotの補完が出ない | ネットワーク制限 | 社内プロキシ設定を確認。IT部門に連絡する |
| Copilot Chatが開かない | 拡張機能未インストール | マーケットプレイスからCopilot Chatをインストール |
| GASエディタが開かない | ポップアップブロック | ブラウザでポップアップを許可する設定に変更 |
| GASの実行でエラー | 権限の承認が未完了 | 「権限を確認」ダイアログで承認する |
| GASの実行で「認証が必要」 | Googleアカウントの問題 | 一度サインアウトして再サインイン |
ただコードを書いてもらうだけではない。Part 1とPart 2で学んだセキュリティの目でコードをチェックする。これがVibe Codingの正しいやり方。
GitHub Copilot Chatを使って、CSVファイルを読み込み整形するPythonスクリプトを生成する。
GitHub Copilot Chatでスプレッドシート操作のGASコードを生成し、Apps Scriptエディタに貼り付けて実行する。
| # | チェックポイント | 対象 | 確認内容 |
|---|---|---|---|
| CP1 | 外部通信の有無 | VSCode | fetch, requests, http等の通信コードがないか |
| CP2 | ファイルアクセス範囲 | VSCode | 指定フォルダ以外にアクセスしていないか |
| CP3 | 入力データの処理方法 | VSCode | データをログに出力したり外部に送信していないか |
| CP4 | 権限スコープ | GAS | GASが要求する権限が最小限か |
| CP5 | データ外部送信 | GAS | UrlFetchApp等で外部にデータを送っていないか |
今日練習した5つのチェックは、明日からの業務でも毎回使う。Day 2の認定テストにも出題される。
自分の業務で「Vibe Codingで解決したい課題」を1つ考えてくる。