ジェンスパーク(Genspark)で学ぶコード生成とコード実行の違い - サンドボックス環境の実践
- コード生成とコード実行の本質的な違い
- なぜ「AIがコードを書く=実行できる」は誤解なのか
- ジェンスパーク(Genspark)のサンドボックス環境の役割
- エリック・ジョージ方式での役割分担の実例
1. 誤解されがちな「AIコーディング」
「AIがコードを書ける」という表現を聞いて、「AIがプログラムを完成させて実行してくれる」と理解する場合があります。しかし、これは誤解です。
「ChatGPTにコードを書いてもらったら、すぐに動くプログラムができる」
現実
ChatGPTが生成するのはテキストとしてのコードであり、それが実際に動作するかは別問題です。
この記事では、コード生成(Code Generation)とコード実行(Code Execution)の違いを、ジェンスパーク(Genspark)開発での実例を通じて解説します。
- コード生成: AIがテキストとしてプログラムコードを作成すること
- コード実行: 生成されたコードを実際に動作させること
- サンドボックス: 隔離された安全な実行環境。外部システムに影響を与えずにプログラムをテストできる
2. コード生成とは何か
AIによるテキスト生成の延長
コード生成は、本質的にはテキスト生成の一種です。ChatGPT、GitHub Copilot、Claude等のAIツールは、大量のコード例から学習し、文脈に応じたコードをテキストとして生成します。
ユーザー: 「Pythonでファイルを読み込むコードを書いて」
AI:
with open('file.txt', 'r') as f:
content = f.read()
print(content)
これは正しい構文のコードですが、実行にはfile.txtが必要です。
生成されたコードの3つの問題
AIが生成したコードに、プログラミング言語の文法違反(構文エラー)が含まれることがあります。
2. 依存関係の未解決
コードが動作するために必要な外部ライブラリ(依存関係)が明示されないことがあります。
3. 実行環境の不一致
生成されたコードが想定する実行環境(OS、Pythonバージョン等)と、実際の環境が異なる場合があります。
- 構文エラー: プログラミング言語の文法規則に違反しているエラー
- 依存関係: プログラムが動作するために必要な他のライブラリやツール
3. コード実行とは何か
実行環境の必要性
コードを実行するには、適切な実行環境が必要です。これには以下が含まれます(詳細はPython公式チュートリアルを参照):
- プログラミング言語の処理系(Python、Node.js(JavaScript実行環境)等)
- 必要なライブラリのインストール
- 環境変数の設定
- ファイルシステム(ファイルを保存・管理する仕組み)へのアクセス権限
ジェンスパーク(Genspark)のサンドボックス環境
ジェンスパーク(Genspark)では、サンドボックス環境を提供しています。これは以下の特徴を持ちます:
- 隔離性: 外部システムに影響を与えない安全な環境
- 完全性: Linux環境(オープンソースのOS(Operating System: コンピュータを動かす基本ソフトウェア))、Python、Node.js等が事前にインストール済み
- 柔軟性: 必要なライブラリを
pip install等で追加可能 - 永続性の制約: ファイルシステムは一時的(セッション終了後に消去される場合がある)
- 環境変数: プログラムの動作を制御する設定値(例: APIキー(API利用のための認証情報)、データベース接続情報(データベースにアクセスするための設定))
- デバッグ: プログラムの誤り(バグ)を見つけて修正する作業
4. ジェンスパーク(Genspark)での実例:エリック・ジョージ方式
記事53(V字モデル適用)で紹介したエリック・ジョージ方式では、コード生成とコード実行の役割を明確に分けています。また、記事51では各AIの判断力の違いを実証しました。
このコード生成とコード実行の役割分担は、ユーザーの発案によるものです。長期間続いた不具合の解決策として、ユーザーがV字モデル(ソフトウェア開発のライフサイクルモデルの一つ)を適用し、上流工程(設計・コード生成)と下流工程(実装・コード実行)を分離する方式を提案しました。
この役割分担により、各AIの得意分野を活かした開発が可能となりました。ただし、完全な成功ではなく、部分的な成功であり、ユーザーの介入が必要な場合もあります。
エリック(上流工程AI): コード生成担当
- 要件定義に基づいた設計レベルのコードを生成
- 全体構造、関数定義、処理フローの設計
- 「何を実装すべきか」の明確化
- 構造化された設計ドキュメント
- 主要な関数のシグネチャ(関数名と引数の型・名前の定義)
- 処理の流れを示す擬似コード(プログラミング言語に依存しない、処理の流れを表現したコード)
- 生成されたコードが実際に動作するかは未検証
- 依存関係の詳細まで考慮できない
- 判断力は中学生レベル(記事51で実証)。ただし、設計の大枠を提示することは可能です。詳細な判断や実装はジョージとユーザーが担当します
ジョージ(下流工程AI): コード実行担当
- エリックの設計を実際に動作するコードに実装
- サンドボックス環境でのテスト実行
- エラーの検出と修正(デバッグ)
- 必要なライブラリのインストール(
pip install: Pythonのパッケージ管理ツールでライブラリをインストールするコマンド等) - ファイルの読み書き、データ処理の実装
- エラー発生時の原因特定と修正
- 実装能力は中堅社員レベル(記事51で実証)
- 実行環境の制約を理解している
- エラーメッセージから問題を特定できる
役割分担の実例
⚠️ 開発過程での課題
この開発過程では、エリックが生成したスクリプトがGemini APIの認証エラーで失敗するなど、ユーザーがエラー修正を指示する場面が複数ありました。完全な成功ではなく、部分的な成功であり、継続的な改善が必要です。
エリック(コード生成)
- 「品質チェックスクリプトを作る」という要件を理解
- 「Gemini API(Google提供のAI API)を呼び出す」「結果をJSON(データ交換用のテキスト形式)で保存する」という設計を策定(記事52で詳しく解説)
- Bashスクリプト(Linuxで使用されるシェルスクリプト)の大枠を生成
- エリックの設計を実装
curlコマンド(HTTPリクエスト(Webサーバーへの通信要求)を送信するためのコマンドラインツール)でGemini APIを呼び出すコードを記述- サンドボックスで実行してエラーを修正
article_quality_check_critical.shとして完成
5. なぜ区別が重要なのか
理由1: コード生成だけでは不十分
どれだけ優れたコード生成AIでも、実行環境の制約を完全に予測することは困難です。実際に動かしてみて初めて分かる問題が多数存在します。
- ChatGPTが生成したPythonコードをコピペしたが、
ModuleNotFoundError(必要なライブラリがインストールされていないというエラー)が発生 - 生成されたコードが古いバージョンの構文で、最新環境では動作しない
- ファイルパスが環境に依存しており、他の環境では動作しない
理由2: デバッグの複雑性
プログラムが期待通りに動作しない場合、デバッグが必要です。これは単なるコード生成とは異なるスキルです(参考:Python Debugging Guide - Pythonデバッグ技術の実践ガイド)。
- エラー発生: プログラム実行時にエラーメッセージが表示される
- 原因特定: エラーメッセージやログから問題箇所を特定
- 修正: 該当箇所のコードを修正
- 再テスト: 修正後に再度実行して動作確認
理由3: 実行環境の管理
実際の開発では、実行環境の管理が重要な作業の一つです(参考:The Twelve-Factor App - クラウドネイティブアプリケーション開発のベストプラクティス集)。
- 依存関係の管理: どのライブラリのどのバージョンが必要か(pip公式ドキュメント - Pythonパッケージ管理ツール参照)
- 環境変数の設定: APIキー等の秘密情報の安全な管理
- ファイルシステムの制約: 書き込み権限、ディスク容量(データを保存できる量)等
6. まとめ - AI時代のコーディング理解
コード生成とコード実行は、別の技術領域です。その違いを理解することが、AI時代のソフトウェア開発において重要です。
| 項目 | コード生成 | コード実行 |
|---|---|---|
| 本質 | テキスト生成 | プログラム実行 |
| 主なツール | ChatGPT, Copilot等 | サンドボックス環境 |
| 成果物 | テキストとしてのコード | 動作するプログラム |
| 検証方法 | 構文チェック | 実行テスト |
| エリック・ジョージ方式 | エリック(上流工程AI) | ジョージ(下流工程AI) |
- コード生成AIは「設計図を描く人」、実行環境は「実際に建物を建てる現場」
- どちらか一方だけでは不十分、両方が必要
- ジェンスパーク(Genspark)のサンドボックス環境は、生成と実行の橋渡し役
ジェンスパーク(Genspark)の特徴
ジェンスパーク(Genspark)は、コード生成とコード実行の両方を提供しています:
- コード生成: AIによる設計・コード作成支援(ジェンスパーク(Genspark)公式サイト参照)
- コード実行: サンドボックス環境での即座の実行・テスト
- 反復改善: 生成→実行→修正のサイクルを効率化
- エリックの判断力: 中学生レベルであり、複雑な設計判断には限界がある
- サンドボックスの制約: ファイルシステムが一時的であり、長期的なデータ保存には不向き
- 実行時間制限: 長時間実行されるプログラムには制約がある
- ユーザー介入の必要性: 複雑な問題では、依然としてユーザーの判断と介入が必要
AI技術が進化しても、コード生成と実行の違いを理解することが、効果的なAI活用の第一歩です。