<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Vibe Coding on KnightLiブログ</title>
        <link>https://www.knightli.com/ja/tags/vibe-coding/</link>
        <description>Recent content in Vibe Coding on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Sat, 16 May 2026 22:44:43 +0800</lastBuildDate><atom:link href="https://www.knightli.com/ja/tags/vibe-coding/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>easy-vibe：Vibe Coding初心者のための学習マップ</title>
        <link>https://www.knightli.com/ja/2026/05/16/easy-vibe-vibe-coding-learning-map/</link>
        <pubDate>Sat, 16 May 2026 22:44:43 +0800</pubDate>
        
        <guid>https://www.knightli.com/ja/2026/05/16/easy-vibe-vibe-coding-learning-map/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/datawhalechina/easy-vibe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;easy-vibe&lt;/a&gt; は、Datawhaleが公開しているVibe Coding学習プロジェクトです。対象は、すでにAIコーディングツールを使いこなしている開発者ではありません。Vibe Codingに触れ始めたばかりの学生、プロダクトマネージャー、デザイナー、運用担当者、個人開発者、技術好きの一般ユーザーです。&lt;/p&gt;
&lt;p&gt;このプロジェクトの価値は、また別のAIツール一覧を作っていることではありません。「AIでどうやってプロジェクトを作り始めるか」を、より理解しやすい学習パスに分解していることです。多くの初心者にとって本当に難しいのは、Claude Code、Cursor、MCP、Agentの存在を知らないことではありません。最初に何を学び、どう練習し、いつ高度なツールに進むべきかが分からないことです。&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding初心者に最も足りないのは道筋&#34;&gt;Vibe Coding初心者に最も足りないのは道筋
&lt;/h2&gt;&lt;p&gt;Vibe Codingはここ数年注目されていますが、初心者にとって親切とは言えません。&lt;/p&gt;
&lt;p&gt;表面上は、要件を説明できればAIにコードを書かせられるように見えます。実際には、タスクが少し複雑になるだけで問題が出ます。要件が曖昧、モデルが違うファイルを編集する、プロジェクト構造が分からない、エラーを処理できない、依存関係が入らない、プロンプトがどんどん乱れる。最後には「コードをチャットボックスにコピーする」状態へ戻ってしまいます。&lt;/p&gt;
&lt;p&gt;そのため、Vibe Coding入門は「プロンプトの書き方」だけでは足りません。少なくとも次のことを解決する必要があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;アイデアを実行可能なタスクに分ける方法。&lt;/li&gt;
&lt;li&gt;AIにプロジェクト構造を理解させる方法。&lt;/li&gt;
&lt;li&gt;モデルが生成したコードを読む方法。&lt;/li&gt;
&lt;li&gt;エラーを処理し、反復する方法。&lt;/li&gt;
&lt;li&gt;ターミナルとローカル開発環境を使う方法。&lt;/li&gt;
&lt;li&gt;Webチャットから実際のAIコーディングツールへ移行する方法。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;easy-vibeの意味はここにあります。ツール、チュートリアル、用語の中で初心者を迷わせるのではなく、これらを1つの学習ルートとして整理しようとしています。&lt;/p&gt;
&lt;h2 id=&#34;単発チュートリアルではなくロードマップ&#34;&gt;単発チュートリアルではなくロードマップ
&lt;/h2&gt;&lt;p&gt;プロジェクト説明を見ると、easy-vibeは基礎チュートリアル、インタラクティブ演習、可視化コンテンツ、RAG、ターミナルツール、AIコーディングツール、さらにClaude Code、MCP、Skills、Agent Teamsなどの発展トピックを扱っています。&lt;/p&gt;
&lt;p&gt;この構成は初心者に向いています。AIコーディングは単一のスキルではなく、複数の能力の組み合わせだからです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;要件を説明する。&lt;/li&gt;
&lt;li&gt;タスクを分ける。&lt;/li&gt;
&lt;li&gt;プロジェクトを読む。&lt;/li&gt;
&lt;li&gt;モデルにコードを編集させる。&lt;/li&gt;
&lt;li&gt;実行し、検証する。&lt;/li&gt;
&lt;li&gt;エラーに基づいて反復する。&lt;/li&gt;
&lt;li&gt;よく使う流れをツールやスキルとして蓄積する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;特定のツールだけを学ぶと、そのツールの画面に縛られやすくなります。モデル、エディタ、CLIが変わると、また何をすればよいか分からなくなります。ロードマップの利点は、先に作業方法を身につけ、その後でツールを適切な場所に置けることです。&lt;/p&gt;
&lt;h2 id=&#34;非プログラマーに特に役立つ&#34;&gt;非プログラマーに特に役立つ
&lt;/h2&gt;&lt;p&gt;Vibe Codingの最大の魅力は、専門プログラマーでなくてもプロトタイプを作れることです。&lt;/p&gt;
&lt;p&gt;プロダクトマネージャーは製品アイデアをインタラクティブなdemoにできます。デザイナーはインタラクションのロジックを検証できます。運用担当者は社内ツールを書けます。学生は授業プロジェクトを素早く作れます。起業家は初期段階で需要を検証できます。こうした人たちは、従来の意味でフルタイムエンジニアになる必要はないかもしれませんが、「AIに手伝わせてアイデアを形にする」方法を持つ必要があります。&lt;/p&gt;
&lt;p&gt;これが、easy-vibeが中国語コミュニティに合っている理由でもあります。多くの中国語ユーザーは、AIがコードを書けることをすでに知っています。しかし、開発環境、プロンプト、プロジェクト構造、デバッグ方法、Agentツールの使い方を体系的に学べる入門資料はまだ不足しています。中国語で明確に説明され、演習と一緒に進められることには意味があります。&lt;/p&gt;
&lt;p&gt;この種のユーザーにとって最も重要なのは、最初から複雑なフレームワークを学ぶことではありません。まず、要件を出す、プロジェクトを生成する、動かす、問題を見つける、修正を続ける、最終的に使えるものを得る、という一連のループを回すことです。&lt;/p&gt;
&lt;h2 id=&#34;発展部分は実際のai開発ワークフローに近づく&#34;&gt;発展部分は実際のAI開発ワークフローに近づく
&lt;/h2&gt;&lt;p&gt;easy-vibeで触れられているClaude Code、MCP、Skills、Agent Teamsは、もはや単なる入門概念ではありません。&lt;/p&gt;
&lt;p&gt;Claude Codeはターミナル型コーディングAgentを表します。モデルがローカルプロジェクトに入り、ファイルを読み、コードを変更し、コマンドを実行できます。MCPはツールとデータソースの接続を解決し、モデルをチャットボックス内に閉じ込めません。Skillsは、固定のプロジェクト生成、文書整理、テストチェック、コンテンツ制作などの再利用可能な流れを蓄積します。Agent Teamsはさらに、タスクを複数の智能体へ分割します。&lt;/p&gt;
&lt;p&gt;これらは初心者には少し遠く感じるかもしれません。それでも早めに知っておく価値があります。Vibe Codingの方向性は明確だからです。「AIに一部のコードを書かせる」段階から、「AIに完全なプロジェクトフローへ参加させる」段階へ向かっています。&lt;/p&gt;
&lt;p&gt;学習ルートがプロンプトだけで止まると、ツールの進化についていけません。一方で、最初からすべての高度な概念を初心者に投げると、どこから始めればよいか分からなくなります。easy-vibeの良さは、それらを段階的なアップグレードの道筋に置いていることです。&lt;/p&gt;
&lt;h2 id=&#34;学習時に避けたい2つの誤解&#34;&gt;学習時に避けたい2つの誤解
&lt;/h2&gt;&lt;p&gt;1つ目は、Vibe Codingならコードが分からなくても完全にコードを気にしなくてよい、と思うことです。&lt;/p&gt;
&lt;p&gt;AIは多くのものを生成できますが、ユーザーは結果が正しいか判断する必要があります。少なくとも、プロジェクト構造を理解し、どう実行するかを知り、エラーがどこで起きているかを大まかに把握する必要があります。複雑なコードを書かなくても、基本的なエンジニアリング常識は必要です。&lt;/p&gt;
&lt;p&gt;2つ目は、高度なツールほど良いと思うことです。&lt;/p&gt;
&lt;p&gt;初心者が最初からClaude Code、MCP、複数Agentを必要とするとは限りません。より良い順序は、まず簡単なプロジェクトでフィードバックループを作り、その後でターミナル、バージョン管理、テスト、ツール呼び出し、自動化フローを少しずつ導入することです。ツールはタスクの複雑さに合わせるべきです。そうでなければ「強そうだが何に使うか分からない」ものになります。&lt;/p&gt;
&lt;h2 id=&#34;どう使うとよいか&#34;&gt;どう使うとよいか
&lt;/h2&gt;&lt;p&gt;Vibe Codingに触れ始めたばかりなら、easy-vibeを学習チェックリストとして使えます。&lt;/p&gt;
&lt;p&gt;まず基礎概念と簡単な演習から始めます。すべてのツールを追う必要はありません。個人ホームページ、データダッシュボード、フォームツール、自動化スクリプト、知識ベースdemoなど、小さなプロジェクトを1つ作ります。その過程で、AIがどこで助けになるか、どこは自分で確認すべきかを観察します。&lt;/p&gt;
&lt;p&gt;小さなプロジェクトを安定して完成できるようになったら、より複雑な内容に進みます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ターミナルツールでローカルプロジェクトを扱う。&lt;/li&gt;
&lt;li&gt;Gitで各変更を管理する。&lt;/li&gt;
&lt;li&gt;RAGで自分の資料を接続する。&lt;/li&gt;
&lt;li&gt;MCPで外部ツールを接続する。&lt;/li&gt;
&lt;li&gt;Skillsで反復作業を固定化する。&lt;/li&gt;
&lt;li&gt;Agent Teamsで複雑なタスクを分割する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このように学ぶVibe Codingは、単にAIへ質問することではありません。AIを自分のワークフローに入れることです。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;easy-vibeは、Vibe Codingの中国語入門マップとして見るのがよいでしょう。散らばったAIコーディングの概念、ツール、演習を1つの道筋にまとめ、初心者が「AIはコードを書けるらしい」から「AIでプロジェクトを作れる」へ進みやすくしています。&lt;/p&gt;
&lt;p&gt;Vibe Codingの本当の価値は、すべての学習を飛ばせることではありません。アイデアからプロトタイプまでのハードルを下げることです。要件を理解し、タスクを整理し、結果を検証し、リスクを制御する必要は残ります。ただし、多くの反復的で退屈で詰まりやすい手順は、AIに手伝わせることができます。&lt;/p&gt;
&lt;p&gt;AIコーディングに体系的に入門したいが、最初からツール名や複雑な開発設定に埋もれたくないなら、easy-vibeは保存しておきたい出発点です。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>API Key を GitHub に push しないために：AI コーディング時代のシークレット漏洩対策</title>
        <link>https://www.knightli.com/ja/2026/05/16/ai-coding-api-key-leak-github/</link>
        <pubDate>Sat, 16 May 2026 16:26:50 +0800</pubDate>
        
        <guid>https://www.knightli.com/ja/2026/05/16/ai-coding-api-key-leak-github/</guid>
        <description>&lt;p&gt;AI によるコーディングは、ソフトウェアを作り始めるハードルを大きく下げました。一方で、これまで主に開発チーム内で起きていたセキュリティ問題が、初心者や非エンジニアにも直接降りかかるようになっています。&lt;/p&gt;
&lt;p&gt;よくある事故は、&lt;code&gt;API Key&lt;/code&gt;、&lt;code&gt;Secret&lt;/code&gt;、&lt;code&gt;Token&lt;/code&gt;、データベース接続文字列、&lt;code&gt;.env&lt;/code&gt; 設定ファイルを公開リポジトリに push してしまうことです。ローカルでは「アプリを動かすための設定」に見えても、GitHub の公開リポジトリに入った瞬間、自動スキャン、自動呼び出し、自動悪用の対象になります。&lt;/p&gt;
&lt;p&gt;シークレット漏洩は珍しい事故ではありません。GitGuardian の 2026 年レポートでは、2025 年の公開 GitHub コミットに約 2865 万件の新しいハードコードされた認証情報が含まれ、AI サービス関連の認証情報漏洩は前年比 81% 増加したとされています。これは単なる不注意ではなく、AI コーディング、素早いプロトタイピング、公開ホスティングが重なって規模を拡大している問題です。&lt;/p&gt;
&lt;h2 id=&#34;初心者が-key-を漏らしやすい理由&#34;&gt;初心者が Key を漏らしやすい理由
&lt;/h2&gt;&lt;p&gt;多くの AI Agent や小さなツールには、ローカルディスク上の「リポジトリ」と、GitHub 上で世界中から見える「リポジトリ」があります。初心者はこの境界を意識できないことがあります。&lt;/p&gt;
&lt;p&gt;ローカル実行時には、&lt;code&gt;config.json&lt;/code&gt;、&lt;code&gt;.env&lt;/code&gt;、&lt;code&gt;settings.yaml&lt;/code&gt; に API Key を入れていても、単なる開発用設定に見えます。しかし &lt;code&gt;git add .&lt;/code&gt;、&lt;code&gt;git commit&lt;/code&gt;、&lt;code&gt;git push&lt;/code&gt; を実行すると、それらのファイルがそのままアップロードされる可能性があります。公開されたリポジトリでは、スキャンボットはビジネスロジックを理解する必要がありません。シークレットらしい形式を見つければ十分です。&lt;/p&gt;
&lt;p&gt;AI コーディングはこの問題をさらに広げます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AI が生成するサンプルコードに &lt;code&gt;OPENAI_API_KEY = &amp;quot;sk-...&amp;quot;&lt;/code&gt; のような書き方が入ることがある。&lt;/li&gt;
&lt;li&gt;初心者は「まず動かす」ために、フロントエンド、スクリプト、設定ファイルへ直接 Key を書きがち。&lt;/li&gt;
&lt;li&gt;多くの vibe coding プラットフォームは、GitHub の Push Protection を通らずに直接デプロイできる。&lt;/li&gt;
&lt;li&gt;ユーザーは AI が生成したプロジェクト内のファイル、API、既定権限を把握していないことがある。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI は動くものを速く作る手助けをしますが、セキュリティ責任まで自動で引き受けてはくれません。&lt;/p&gt;
&lt;h2 id=&#34;gitignore-は飾りではない&#34;&gt;&lt;code&gt;.gitignore&lt;/code&gt; は飾りではない
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Git&lt;/code&gt; はバージョン管理を行い、&lt;code&gt;GitHub&lt;/code&gt; はコードをホストします。&lt;code&gt;.gitignore&lt;/code&gt; は、どのファイルを履歴に入れないかを Git に伝えるためのファイルです。&lt;/p&gt;
&lt;p&gt;基本的な AI プロジェクトでは、少なくとも次を除外すべきです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config.local.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;secrets.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;credentials.*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ただし &lt;code&gt;.gitignore&lt;/code&gt; だけでは不十分です。これは未追跡ファイルが今後追加されるのを防ぐだけです。すでにコミットされたシークレットファイルは、後から &lt;code&gt;.gitignore&lt;/code&gt; に書いても履歴から消えません。&lt;/p&gt;
&lt;p&gt;安全な習慣は次の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;新規プロジェクトの最初に &lt;code&gt;.gitignore&lt;/code&gt; を作る。&lt;/li&gt;
&lt;li&gt;API Key は環境変数またはローカル設定だけに置く。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env.example&lt;/code&gt; にはプレースホルダーだけを書き、本物の Key は書かない。&lt;/li&gt;
&lt;li&gt;コミット前に &lt;code&gt;gitleaks&lt;/code&gt;、&lt;code&gt;trufflehog&lt;/code&gt;、GitHub Secret Scanning などでスキャンする。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;key-を-push-したらファイル削除だけでは安全にならない&#34;&gt;Key を push したら、ファイル削除だけでは安全にならない
&lt;/h2&gt;&lt;p&gt;Key を公開リポジトリへ push してしまった場合、最初にやるべきことは「ファイルを消してもう一度コミットする」ことではありません。まず Key を失効またはローテーションします。&lt;/p&gt;
&lt;p&gt;Git は履歴を記録します。最新コミットでファイルを削除しても、古いコミット、fork、clone、キャッシュ、スキャンシステムに内容が残る可能性があります。GitHub の公式ドキュメントでも、パスワード、Token、認証情報が漏れた場合は、まず取り消しまたはローテーションすることを勧めています。&lt;/p&gt;
&lt;p&gt;推奨手順は次の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;サービス提供元の管理画面で古い Key を失効し、新しい Key を発行する。&lt;/li&gt;
&lt;li&gt;請求、利用ログ、不審な IP、異常な使用量を確認する。&lt;/li&gt;
&lt;li&gt;ハードコードされた Key を消し、環境変数またはシークレット管理サービスへ移す。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git filter-repo&lt;/code&gt; または BFG でリポジトリ履歴から機密ファイルを除去する。&lt;/li&gt;
&lt;li&gt;GitHub Secret Scanning と Push Protection を有効にする。&lt;/li&gt;
&lt;li&gt;CI/CD、デプロイ基盤、クラウド関数、フロントエンド成果物に古い Key が残っていないか確認する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;OpenAI、Anthropic、DeepSeek、クラウド事業者、決済、メール、データベースなどの Key が漏れると、課金被害だけでなく、データ読み取り、サービス悪用、サプライチェーン汚染、業務アカウント停止につながる可能性があります。&lt;/p&gt;
&lt;h2 id=&#34;フロントエンドに本物の-key-を置いてはいけない&#34;&gt;フロントエンドに本物の Key を置いてはいけない
&lt;/h2&gt;&lt;p&gt;初心者は「画面が動けばよい」と考えて、API Key をフロントエンド JavaScript に書いてしまうことがあります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sk-xxxxxxxx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これはほぼ公開と同じです。ブラウザ上のコード、ネットワークリクエスト、Source Map、ビルド成果物は確認できます。秘密にすべき Key はクライアント側に出してはいけません。&lt;/p&gt;
&lt;p&gt;正しい構成は、フロントエンドから自分のバックエンド API を呼び、バックエンドが環境変数を読んで外部 API を呼ぶ形です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// frontend
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/api/chat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;method&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;POST&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;サーバー側で環境変数を使います。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;env&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは形式の問題ではなく、Key をサーバー環境に残し、ページ訪問者全員へ露出しないための設計です。&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding-でも安全責任は消えない&#34;&gt;Vibe Coding でも安全責任は消えない
&lt;/h2&gt;&lt;p&gt;vibe coding の問題は GitHub 漏洩だけではありません。AI コーディングプラットフォームから直接公開インターネットへデプロイされるアプリも多く、従来のコードレビュー、リポジトリスキャン、セキュリティテストを通らないことがあります。&lt;/p&gt;
&lt;p&gt;RedAccess の最近の調査では、AI コーディングツールで生成またはホストされた公開資産が大量に見つかり、その一部が企業データ、個人情報、内部ファイルを露出していました。ここでの教訓は単純です。「公開できる」が簡単になりすぎると、「公開すべきか」「社内限定にすべきか」「権限制御があるか」が見落とされやすくなります。&lt;/p&gt;
&lt;p&gt;AI で生成したアプリを公開する前に、少なくとも次を確認します。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;このアプリは本当に公開アクセスが必要か。&lt;/li&gt;
&lt;li&gt;ログイン、認証、権限分離があるか。&lt;/li&gt;
&lt;li&gt;データベース、API Key、Token、Webhook URL がフロントエンドに露出していないか。&lt;/li&gt;
&lt;li&gt;外部 API のクォータ、ドメイン、権限、有効期限を制限しているか。&lt;/li&gt;
&lt;li&gt;異常発見後に Key を無効化し、デプロイを素早くロールバックできるか。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI が書いたコードにもセキュリティレビューは必要です。「自分では一行も書いていない」ほど、安全だと思い込むべきではありません。&lt;/p&gt;
&lt;h2 id=&#34;今すぐ確認すること&#34;&gt;今すぐ確認すること
&lt;/h2&gt;&lt;p&gt;まず自分の GitHub アカウントから確認できます。ユーザー名と次のキーワードを組み合わせて検索します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SECRET
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TOKEN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OPENAI_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ANTHROPIC_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DEEPSEEK_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;credentials
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;本物の Key を見つけたら、迷わず先にローテーションし、その後でクリーンアップします。一度でも公開リポジトリに入ったなら、漏洩済みとして扱うべきです。&lt;/p&gt;
&lt;p&gt;今後の AI プロジェクトでは、次の流れを固定化すると安全です。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;業務コードを書く前に &lt;code&gt;.gitignore&lt;/code&gt; を用意する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env.example&lt;/code&gt; で必要な変数を説明する。&lt;/li&gt;
&lt;li&gt;すべての Key は環境変数に置き、ソースコードへ書かない。&lt;/li&gt;
&lt;li&gt;API Key には最小権限、クォータ、有効期限を設定する。&lt;/li&gt;
&lt;li&gt;GitHub Secret Scanning と Push Protection を有効にする。&lt;/li&gt;
&lt;li&gt;公開前に AI にセキュリティチェックを手伝わせても、AI の結論だけを信じない。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI コーディングの本当の危険は、コードを書き間違えることだけではありません。多くの人が初めて、安全でないアプリを公開インターネットへ素早く出せるようになったことです。速く書くこと自体は問題ではありません。シークレット、データ、権限まで一緒に渡してしまうことが問題です。&lt;/p&gt;
&lt;h2 id=&#34;参考資料&#34;&gt;参考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.gitguardian.com/state-of-secrets-sprawl-report-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitGuardian State of Secrets Sprawl 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/articles/remove-sensitive-data&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Docs: Removing sensitive data from a repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/code-security/secret-scanning/push-protection-for-repositories-and-organizations&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Docs: About push protection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/05/07/loveable-replit-vibe-coding-privacy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios: AI vibe-coding apps leak sensitive data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
