AI × GITHUB CODE REVIEW

GitHubのコードをAIと一緒に検証して使ってみる

GitHubには便利なコードがたくさんあります。一方で、知らないコードをそのまま実行すると、秘密情報の流出や予想外の変更が起きることもあります。AIを「代わりに実行する人」ではなく「一緒に読むレビュアー」として使い、少しずつ確かめます。

この記事の結論
AIに見せて説明してもらうだけで安全が保証されるわけではありません。読む→隔離する→小さく試す→結果と差分を人が確認する、という順番を繰り返すと、予想外の変更を減らし、同じ手順を再現しやすくなります。
  1. 01いきなり実行しない理由読む →
  2. 02AIと進める4段階試す →
  3. 03記事作成はCodex with ChatGPTで分担する →
  4. 04止めるべきサイン止まる →
  5. 05AIにできること・できないこと決める →

いきなり実行しない理由

公開されていること、星が多いこと、AIが「大丈夫そう」と言うことは、安全の証明ではありません。コードは、パソコン上でファイルを読んだり、ネットワークへ接続したり、別のプログラムを起動したりできます。

01読むREADME・依存関係・実行スクリプト
02隔離するコピー・別ブランチ・ダミー情報
03小さく試すテスト・静的チェック・少量データ
04確認する出力・差分・ログ・戻し方
最初に見る場所

README、依存パッケージの一覧、実行スクリプト、最近の変更、設定ファイルを順に読みます。特にインストール時に自動実行される処理、外部URLへの通信、ファイル削除、環境変数の読み取りがないかを確認します。

AIと進める4段階

AIには、まず「実行せずに調査する」と明示します。調査結果を人が読んでから、隔離した場所で最小限だけ動かします。

1. リポジトリを読み取り専用で調べる

読む

ファイル構成、依存関係、実行スクリプト、ネットワーク通信、秘密情報の扱いを一覧にしてもらいます。ファイル名と行番号を添えて説明するよう頼みます。

git remote -v
git log --oneline -5
git status
git diff --stat

2. 使い捨ての場所に隔離する

分ける

本番フォルダや個人データのある場所では試しません。コピー、別ブランチ、仮想環境など、失敗しても捨てられる場所を用意します。実在するAPIキーや個人情報は渡さず、ダミー値に置き換えます。

3. 静的チェックと小さなテストから始める

試す

まずコードを実行しないチェック、次に既存テスト・型チェック・リンター、最後に小さな入力での実行へ進みます。外部送信や本番更新を無効にしたまま、期待する出力を1つ決めます。

git diff --check
git diff --stat

4. 結果と差分を人が確認する

確かめる

出力が期待どおりか、ファイルが増減していないか、通信先やログに想定外がないかを確認します。おかしければ停止し、差分とログをAIに読ませて原因候補を整理します。戻し方が分からない変更は採用しません。

AIへの依頼文ひな型

このGitHubリポジトリを、まだ実行せずに読み取り専用で調査してください。
1. ファイル構成と依存関係
2. install・build・実行時に呼ばれるスクリプト
3. ネットワーク通信、外部送信、ファイル削除、認証情報の読み取り
4. バグになりそうな箇所と、その根拠(ファイル名・行番号)
を表にしてください。不明な点は不明と書き、コマンドの実行やファイル変更は提案だけにしてください。

今後の記事作成はCodex with ChatGPTで

記事を書くときは、ChatGPTに企画・構成・読み手目線のレビューをしてもらい、Codexがワークスペース内の編集・テスト・公開前確認を担当する分担にします。

1. ChatGPTで計画をつくる

考える

記事の目的、対象読者、見出し、必要な出典、確認項目を先に整理します。既存記事との重複や不足もレビューしてもらいます。

2. Codexで実装・検証する

つくる

Codexがファイルを編集し、リンク・HTML・検索登録・プレビューを確認します。変更は小さく分け、差分を人が読んでから公開します。

3. 秘密情報は渡さない

守る

APIキー、パスワード、個人情報はChatGPTにもCodexにも貼り付けません。出典URLや公開情報だけを使い、公開前の判断は人が行います。

この分担の目的

ChatGPTの計画力とCodexの実行・検証を組み合わせ、記事の抜け漏れと公開時のミスを減らします。どちらも安全を保証するものではないため、最後に人が本文・リンク・出典を確認します。

このサインが出たら止める

理由を説明できない処理があるときは、便利そうでも先に進みません。AIに「なぜ必要か」「何が起きるか」「代替はあるか」を聞き、公式ドキュメントと照合します。

赤信号の例

  • 難読化・圧縮されたコード、内容が読めないバイナリがある。
  • 外部からスクリプトを取得して即時実行する、または管理者権限を求める。
  • 環境変数、SSH鍵、ブラウザ保存データなどを理由なく読み取る。
  • 大量のファイル削除、履歴の書き換え、見知らぬ宛先への送信を行う。
  • 依存パッケージの出所やバージョンが分からず、更新で内容が変わる。

止めた時点のログと差分を保存し、分からないまま削除・公開・本番接続をしません。

「人気があるから大丈夫」は確認項目ではない

スター数や最終更新日は参考情報です。脆弱性の警告、メンテナの説明、ライセンス、依存パッケージの状態も合わせて見ます。

AIにできること・できないこと

できる

コードの流れを要約し、怪しい処理やエラーの候補を、根拠つきで整理する。

一緒に確認する

安全なテスト入力を考え、チェック結果と差分を人が読める言葉にする。

できない

未知の悪意や将来のバグがないことを保証する。本番での判断や責任を代わる。

安定して使える、の意味

「AIが見れば必ず安全」ではなく、同じ確認項目を毎回通し、変更を小さくし、戻せる状態で試せるという意味です。確認を省略せず、最終判断は人が行います。