DAY 1

セキュリティ・ガバナンス基礎
+ Vibe Coding 入門

Vibe Codingを始める前に知るべきセキュリティリスクとチェックリストを学ぶ。後半では実際にAIにコードを書かせ、安全に使いこなす一連の流れを体験する。

4時間(240分)
対面ハンズオン
非エンジニア向け
DEFINITION
Vibe Coding とは
2025年2月にAndrej Karpathy(元Tesla AI責任者)が提唱した開発手法。自然言語でAIに指示を出し、コードを自動生成させる。プログラミング言語の文法を知らなくても、業務ツールや自動化スクリプトが作れる。ただし生成されたコードの安全性は人間が担保する必要がある。この研修では「AIにコードを書かせ、人間がセキュリティを確認して使う」一連のプロセスを習得する。
55%
Copilot利用開発者の
タスク完了速度向上(GitHub調査 2024)
46%
新規コードのうち
AI生成コードの割合(GitHub調査 2024)
4問
Day 2認定テストの
合格ライン(全5問中)
自然言語で指示
AIがコード生成
人間がチェック
実行・改善
参考リンク
GitHub Copilot Trust Center GitHub Copilot Docs Stack Overflow Developer Survey 2024 - AI
TIMETABLE
タイムテーブル
座学 + 議論
100分
セキュリティ基礎
チェックリスト習得
ハンズオン
100分
環境構築
初Vibe Coding体験
休憩 + 開閉会
40分
休憩 x2回
Opening / Closing
時間セッション形式内容
0:00 - 0:10Opening座学研修の目的・ゴール、2日間の全体像
0:10 - 1:00Session 02 Part 1座学議論セキュリティリスク4分類、判断基準、入力禁止情報
1:00 - 1:10休憩--
1:10 - 1:40Session 02 Part 2座学演習セキュリティチェックリスト + ケーススタディ3題
1:40 - 2:10Session 03 Part 3ハンズオン環境構築(VSCode + Copilot、GAS)
2:10 - 2:20休憩--
2:20 - 3:30Session 03 Part 4ハンズオン初めてのVibe Coding(演習A: VSCode / 演習B: GAS)
3:30 - 3:50Session 04座学議論振り返り + 宿題提示
3:50 - 4:00Closing座学質疑応答・閉会
0:00 - 0:10
Opening
ゴール説明

2日間で「Vibe Codingを安全に使いこなせる状態」を目指す。いきなりコードは書かない。まず交通ルールを覚える。

日程テーマキーワード
Day 1(今日)セキュリティ + 入門リスクを知る / チェックリストを使う / 初めて作る
Day 2(次回)実践 + 認定プロンプトを磨く / 自分の課題を解決 / テストで合格
SESSION 02 PART 1 / 0:10 - 1:00
なぜセキュリティが先か

車の運転を習うとき、まず教習所で危険予測を学ぶ。Vibe Codingも同じ構造を持っている。AIは便利だが、使い方を間違えれば会社に実害が出る。知っていれば防げる。だからセキュリティを先に学ぶ。

生成AIセキュリティリスク 4分類

受講者に「生成AIを業務で使うとき、どんな危険がありそうですか」と問いかけてから、以下の4分類を解説する。

RISK 1
情報漏洩
RISK 2
知的財産侵害
RISK 3
マルウェア混入
RISK 4
データプライバシー
RISK 01

情報漏洩リスク

AIへの入力内容が外部に流出する、またはAIの学習データに取り込まれるリスク。プロンプトに含めた情報はサービス提供者のサーバーを経由する。設定によっては学習に利用される可能性がある。

製造業における具体例
  • 設計図面のパラメータや寸法をプロンプトに含める
  • サプライヤーとの取引条件や単価情報を入力する
  • 品質管理データや不良率をそのまま貼り付ける
  • 新製品の開発コードネームや発売時期を記載する
対策
  • 入力前に「この情報が外部に出たら困るか」を自問する
  • 機密データはダミーデータに置き換えてからAIに渡す
  • ツールの利用規約でデータ利用ポリシーを確認する
RISK 02

知的財産リスク

AI生成コードにオープンソースのライセンス付きコードが混入する可能性がある。そのコードを社内で使うと、意図せずライセンス違反になりうる。

製造業における具体例
  • GPLライセンスのライブラリが含まれ、自社コード公開義務が生じる
  • 競合他社の特許技術に似たアルゴリズムが生成される
  • 独自ツールをAIに改善依頼する際、コード自体が流出する
対策
  • 生成コードに外部ライブラリのimport文がないか確認
  • 標準ライブラリのみを使うようプロンプトで制約
  • コードの出典が不明な場合は使用しない
RISK 03

マルウェアリスク

AI生成コードに、外部サーバーへのデータ送信、ファイルの削除、権限の昇格など意図しない動作が含まれる可能性がある。AIはコードの安全性を保証しない。

製造業における具体例
  • 生成スクリプトが社内ファイルサーバーに不正アクセスする
  • GASスクリプトが想定外のGoogleサービスに接続しデータを外部送信
  • Excel処理スクリプトがPC内の他のファイルも読み取る
対策
  • 生成コードを実行前に必ず目視確認する
  • 外部通信コード(fetch, UrlFetchApp等)の有無をチェック
  • 不明な関数があればAIに「この関数は何をするか」と確認
RISK 04

データプライバシーリスク

個人情報や個人を特定できるデータをAIに入力すると、プライバシー侵害に該当する場合がある。個人情報保護法や社内規定に抵触する。

製造業における具体例
  • 社員の人事評価データをAIで分析しようとする
  • 顧客の注文履歴や連絡先を含むデータを処理する
  • 協力会社の担当者名・連絡先をプロンプトに含める
  • 工場作業員のシフト情報や勤怠データを入力する
対策
  • 個人を特定できる情報は入力しない
  • 分析が必要な場合は匿名化・集計済みデータのみ使用
  • 「個人名を含むデータは絶対にAIに渡さない」をルール化
4分類クイックリファレンス
リスク想定される影響防止策
情報漏洩競合への技術流出、株価への影響ダミーデータ置換、利用規約確認
知的財産ライセンス違反訴訟、公開義務import文チェック、標準ライブラリ限定
マルウェア不正アクセス、データ破壊実行前目視、外部通信キーワード検索
プライバシー法令違反、行政処分、信頼失墜個人情報入力禁止、匿名化処理
入力禁止情報の判断基準
カテゴリ具体例判断基準
社内機密設計データ、原価情報、未発表製品情報、経営戦略社外に出たら競争力に影響するか
個人情報社員名簿、顧客情報、連絡先、人事評価個人を特定できるか
認証情報パスワード、APIキー、アクセストークンシステムへのアクセス権限に関わるか
業務固有データ品質データ、不良率、サプライヤー情報取引先との守秘義務があるか
OKな入力 vs NGな入力
場面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に入力したいデータがある
まず以下のチェックを上から順に実施する
個人名・社員番号・連絡先が含まれているか
Yes 入力禁止。匿名化してから再検討
No 次のチェックへ
社外秘・機密扱いのデータか
Yes 入力禁止。ダミーデータに置き換えて使用
No 次のチェックへ
パスワード・APIキー・トークンが含まれているか
Yes 入力禁止。該当部分を削除してから使用
No 次のチェックへ
取引先との守秘義務に抵触するか
Yes 入力禁止。上長に確認
No 次のチェックへ
入力OK
ただし生成コードのセキュリティチェック(カテゴリ2)を忘れずに実施する
GROUP DISCUSSION / 20分

「自分の業務でAIに入力してはいけない情報は何か」

  1. 3~4名のグループに分ける(2分)
  2. 各自、業務で扱っている情報を洗い出す(5分)
  3. その中で「AIに入力してはいけないもの」を議論(8分)
  4. 各グループから1名が発表(5分)
参考リンク
IPA 情報処理推進機構 個人情報保護委員会 経済産業省 AI事業者ガイドライン NIST AI Risk Management Samsung ChatGPT情報漏洩事例 - Cybernews GitHub Copilot 知的財産訴訟 - Saveri Law 生成AIによる事件5選 - AI総研 企業における生成AI活用の落とし穴 - NTTデータ テキスト生成AI導入・運用ガイドライン - IPA
SESSION 02 PART 2 / 1:10 - 1:40
セキュリティチェックリスト + ケーススタディ

チェックは「入力 → 生成 → 出力 → 共有」の順に行う。コードを生成するたびに、実行前にこのリストを使う。

1. 入力チェック
2. 生成コードチェック
3. 出力チェック
4. 共有前チェック
カテゴリ1:入力データのチェック

AIにプロンプトを送信する前に確認する項目。

カテゴリ2:生成コードのチェック

AIが生成したコードを実行する前に確認する項目。

VSCODE 固有の確認
  • fetch, requests, http, urllib, socket のキーワード検索で該当なし
  • ファイルアクセスが data/ と output/ に限定されている
GAS 固有の確認
  • SpreadsheetApp以外のサービス(GmailApp, DriveApp等)を使っていない
  • UrlFetchAppによる外部通信がない
  • 権限承認ダイアログの内容がスプレッドシートのみ
カテゴリ3:出力データのチェック
カテゴリ4:共有・公開前のチェック
検索すべきキーワード クイックリファレンス

コードの中で以下のキーワードを検索し、該当があれば確認する。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 出力内容に機密情報が含まれていないか確認
ケーススタディ 3題

各ケースについて自分なりに考えてから、解説を確認してください。

CASE STUDY 01

社員情報を含むExcelの処理

あなたは総務部の担当者。社員500名分の氏名・社員番号・部署・連絡先が入ったExcelファイルがある。部署ごとの人数集計を自動化したいと考え、GitHub Copilotに「このExcelファイルを読み込んで、部署ごとの人数を集計するPythonスクリプトを作ってください」と送ろうとしている。

このプロンプトを送信する前に、何を確認すべきか。

  • Excelファイルそのものをプロンプトに添付してはいけない(個人情報の塊)
  • プロンプトにはファイルの構造だけを伝える(「A列に社員番号、B列に氏名、C列に部署が入ったExcel」のような記述)
  • 生成されたコードで処理する分にはOK。ただしコードがファイル内容をログ出力しないか確認
  • テスト実行時はダミーデータ(5名分程度の架空データ)で行う
CASE STUDY 02

生成コードに外部API通信が含まれていた

GitHub Copilotで、CSVファイルのデータ整形スクリプトを作ってもらった。生成コードを確認すると、以下の行が含まれていた。

import requests response = requests.get("https://api.example.com/validate")

この2行を見つけたら、どう対処するか。

  • 自分がこのAPI通信を依頼したかどうか確認 → 依頼していなければ即座に削除
  • 依頼していた場合でも、通信先URLが正当なものか確認
  • 社内ネットワークから外部APIに接続すること自体が許可されているか確認
  • 代替手段として、外部通信なしで同じ処理ができないかをAIに再依頼
  • 判断がつかない場合は情報システム部門に確認

AIはときどき親切心で外部サービスを使おうとする。頼んでいない通信は必ず疑う。

CASE STUDY 03

便利ツールを部署内で共有したい

Vibe Codingで、月次レポートの数値を自動集計するGASスクリプトを作成した。便利なので部署の同僚10名にも使ってもらいたい。

共有する前に、どんな手順を踏むべきか。

  1. セキュリティチェックリストのカテゴリ4(共有・公開前)を全項目確認する
  2. 上長に報告し、共有の承認を得る
  3. スクリプトの権限スコープを最小限に設定する(必要なスプレッドシートだけにアクセス)
  4. 利用者向けに「このツールでできること」「やってはいけないこと」を明記した簡易説明を付ける
  5. 共有範囲を必要な同僚のみに限定する(全社公開にしない)
  6. 定期的に(月1回等)動作確認とセキュリティ見直しを行う

自分のために作ったものと、人に使ってもらうものでは求められる品質が違う。共有前の一手間がトラブルを防ぐ。

参考リンク
OWASP Top 10 IPA セキュリティガイド GitHub Copilot Trust Center AI生成コードのサイバーセキュリティリスク - Georgetown CSET AI Generated Code Security Risks - Veracode AI生成コードの脆弱性パターン - Endor Labs
SESSION 03 PART 3 / 1:40 - 2:10
環境構築

事前セットアップガイドで導入済みの前提。ここでは確認と動作テストを行う。画面で手順を確認しながら進めていく。

GitHub Copilot / Copilot Chat(AI補助)
VSCode(コードエディタ) / GAS(スプレッドシート拡張)
GitHub アカウント / Google アカウント
受講者の PC + ネットワーク
VSCode Copilot セットアップ確認
  1. VSCodeを起動する
  2. 左下のアカウントアイコンからGitHubにサインイン済みか確認
  3. 拡張機能タブで GitHub Copilot / GitHub Copilot Chat がインストール・有効化されているか確認
  4. 新しいファイルを作成し、コメントを書いて補完候補が出るかテスト
// テスト: 以下のコメントを書いてCopilotの補完を待つ // 1から10までの合計を計算する関数

補完候補が表示されればOK。Tabキーで受け入れる。表示されない場合はトラブルシューティングへ。

GAS 開発環境の確認
  1. Google スプレッドシートを新規作成
  2. メニュー「拡張機能」→「Apps Script」を開く
  3. Apps Scriptエディタが開くことを確認
  4. 以下のコードを貼り付けて実行テスト
function testGAS() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.getRange("A1").setValue("GAS動作テスト完了"); }

スプレッドシートのA1セルに「GAS動作テスト完了」と表示されれば成功。

キーボードショートカット リファレンス
操作WindowsMac用途
Copilot Chat を開くCtrl+Shift+ICmd+Shift+IAIに質問・コード生成依頼
補完を受け入れTabTabCopilotの提案を採用
補完を拒否EscEsc提案を却下
次の候補を表示Alt+]Option+]別の提案を見る
ファイル内検索Ctrl+FCmd+Fセキュリティキーワード検索
行のコメント化Ctrl+/Cmd+/不要コードの無効化
GAS:スクリプト実行エディタ上部の「実行」ボタンGASコードを実行
GAS:ログ確認「実行ログ」タブLogger.logの出力確認
トラブルシューティング
問題原因対処法
Copilotの補完が出ないサインインしていないVSCode左下のアカウントからGitHubにサインイン
Copilotの補完が出ない拡張機能が無効拡張機能タブでCopilotを有効化
Copilotの補完が出ないネットワーク制限社内プロキシ設定を確認。IT部門に連絡する
Copilot Chatが開かない拡張機能未インストールマーケットプレイスからCopilot Chatをインストール
GASエディタが開かないポップアップブロックブラウザでポップアップを許可する設定に変更
GASの実行でエラー権限の承認が未完了「権限を確認」ダイアログで承認する
GASの実行で「認証が必要」Googleアカウントの問題一度サインアウトして再サインイン
参考リンク
GitHub Copilot Docs Google Apps Script Reference GAS Authorization Scopes - Google Developers GAS OAuth スコープの監視と制限 - Google Developers
SESSION 03 PART 4 / 2:20 - 3:30
初めてのVibe Coding
この演習の核心

ただコードを書いてもらうだけではない。Part 1とPart 2で学んだセキュリティの目でコードをチェックする。これがVibe Codingの正しいやり方。

プロンプト作成
AIがコード生成
セキュリティチェック
実行・確認
改善依頼
VSCode Copilot Python 演習A:CSVデータ整形スクリプト(35分)

GitHub Copilot Chatを使って、CSVファイルを読み込み整形するPythonスクリプトを生成する。

目標
Copilot Chatの基本操作を覚える
体験
AIにプロンプトを送ってコード生成
チェック
生成コードのセキュリティチェック3項目
ステップバイステップ
Step 1: Copilot Chat を開く(0-3分)
Ctrl+Shift+I(Mac: Cmd+Shift+I)でCopilot Chatを開く。画面で手順を確認しながら進める。
Step 2: プロンプトを送信(3-8分)
「CSVファイルを読み込み、指定列でソートして新しいCSVとして出力するPythonスクリプトを書いてください。標準ライブラリのみ使用してください。」と入力。準備ができた人から順に送信。
Step 3: コード生成を確認(8-15分)
各自でコード生成。生成結果を読み、何をしているか把握する。わからなければ「このコードの各部分を簡潔に説明してください」とCopilotに聞く。
Step 4: セキュリティチェック(15-25分)
チェックリスト カテゴリ2を使って確認。外部通信コード、ファイルアクセス範囲、不要なimportの3点を重点チェック。ここが本日の核心。
Step 5: 実行確認(25-30分)
ダミーCSVデータで実行テスト。動かなくてもOK、チェックプロセスを優先。
Step 6: 改善依頼(30-35分)
「ヘッダー行を太字で表示」「エラーハンドリングを追加」など改善を依頼。時間がなければスキップ可。
GAS 演習B:スプレッドシート集計(35分)

GitHub Copilot Chatでスプレッドシート操作のGASコードを生成し、Apps Scriptエディタに貼り付けて実行する。

目標
GASでのVibe Codingの流れを体験
体験
権限スコープの確認を実践
チェック
データ外部送信のチェックを実践
Step 1: GASの特徴を理解(0-5分)
Copilot Chatでコードを作り、GASエディタに貼り付ける。VSCode内でGASを直接動かすわけではない点を確認。
Step 2-3: プロンプト送信 + コード生成(5-20分)
「アクティブなスプレッドシートのA列のデータを集計し、B列に結果を出力するGoogle Apps Scriptを書いてください」と依頼。GAS特有の関数名(SpreadsheetApp等)が正しく生成されているか確認。
Step 4: セキュリティチェック(20-30分)
権限スコープの確認方法を丁寧に確認。UrlFetchApp等の外部通信がないか検索。権限承認ダイアログの内容を読む。
Step 5: 実行確認 + 改善(30-35分)
実行して結果を確認。スプレッドシートのシート名やセル範囲が異なる場合は自分の環境に合わせてコードを修正。
演習で実践するセキュリティチェックポイント 5つ
#チェックポイント対象確認内容
CP1外部通信の有無VSCodefetch, requests, http等の通信コードがないか
CP2ファイルアクセス範囲VSCode指定フォルダ以外にアクセスしていないか
CP3入力データの処理方法VSCodeデータをログに出力したり外部に送信していないか
CP4権限スコープGASGASが要求する権限が最小限か
CP5データ外部送信GASUrlFetchApp等で外部にデータを送っていないか
Day 2テストにも出題

今日練習した5つのチェックは、明日からの業務でも毎回使う。Day 2の認定テストにも出題される。

参考リンク
GitHub Copilot Docs Google Apps Script Reference GitHub Copilot Trust Center AI生成コードのレビュー方法 - GitHub Docs OWASP LLM Top 10: Prompt Injection
SESSION 04 / 3:30 - 3:50
振り返り + 宿題
振り返りクイック確認
4
セキュリティリスク分類
17
チェックリスト項目数
5
セキュリティチェックポイント
リスク4分類のクイック確認(3分)
受講者に順番に聞く:「4つのリスク、覚えていますか」
→ 情報漏洩、知的財産、マルウェア、データプライバシー
チェックリストの使い方復習(2分)
「入力・生成・出力・共有の4カテゴリ、いつ使いますか」
→ コードを生成するたびに、実行前にチェックする
気づきの共有(10分)
「今日一番印象に残ったこと」「明日から気をつけたいこと」を振り返り、共有する時間です。

宿題:Day 2に向けた準備

自分の業務で「Vibe Codingで解決したい課題」を1つ考えてくる。

CLOSING / 3:50 - 4:00
質疑応答・閉会
質問受付(5分)
セキュリティ、ツール操作、業務への適用など。
Day 2の案内(2分)
日程・持ち物の確認。宿題の再確認。
閉会(3分)
「来週のDay 2では、皆さんが持ってきた課題を実際にツールにします。最後に5問のテストを受けて、4問正解でVibe Coding解禁の社内資格を取得できます。宿題をお忘れなく。」
Day 1 で学んだこと
セキュリティ基礎
リスク4分類
入力禁止情報
判断フローチャート
チェックリスト
入力 / 生成 / 出力 / 共有
全17項目
検索キーワード
Vibe Coding体験
VSCode + Copilot
GAS
チェックポイント5つ
Day 1: リスクを知る
宿題: 課題を見つける
Day 2: 課題を解決 + 認定テスト
参考リンク(全体)
IPA 情報処理推進機構 OWASP Top 10 GitHub Copilot Trust Center Google Apps Script Reference 個人情報保護委員会 経済産業省 AI事業者ガイドライン GitHub Copilot Docs NIST AI Risk Management Samsung ChatGPT情報漏洩事例 - Cybernews GitHub Copilot 知的財産訴訟 - Saveri Law AI生成コードのサイバーセキュリティリスク - Georgetown CSET テキスト生成AI導入・運用ガイドライン - IPA OWASP LLM Top 10: Prompt Injection