ジェンスパーク(Genspark)で学ぶコード生成とコード実行の違い - サンドボックス環境の実践

💡 この記事で分かること
  • コード生成とコード実行の本質的な違い
  • なぜ「AIがコードを書く=実行できる」は誤解なのか
  • ジェンスパーク(Genspark)のサンドボックス環境の役割
  • エリック・ジョージ方式での役割分担の実例

1. 誤解されがちな「AIコーディング」

「AIがコードを書ける」という表現を聞いて、「AIがプログラムを完成させて実行してくれる」と理解する場合があります。しかし、これは誤解です。

⚠️ よくある誤解
「ChatGPTにコードを書いてもらったら、すぐに動くプログラムができる」

現実
ChatGPTが生成するのはテキストとしてのコードであり、それが実際に動作するかは別問題です。

この記事では、コード生成(Code Generation)コード実行(Code Execution)の違いを、ジェンスパーク(Genspark)開発での実例を通じて解説します。

🎯 重要:AIがコードを生成することと、そのコードを実際に実行することは、別の技術領域です。この違いを理解することがAI時代のソフトウェア開発において重要です。
📖 用語説明
  • コード生成: AIがテキストとしてプログラムコードを作成すること
  • コード実行: 生成されたコードを実際に動作させること
  • サンドボックス: 隔離された安全な実行環境。外部システムに影響を与えずにプログラムをテストできる

2. コード生成とは何か

AIによるテキスト生成の延長

コード生成は、本質的にはテキスト生成の一種です。ChatGPTGitHub CopilotClaude等のAIツールは、大量のコード例から学習し、文脈に応じたコードをテキストとして生成します。

📋 コード生成の例
ユーザー: 「Pythonでファイルを読み込むコードを書いて」
AI:
with open('file.txt', 'r') as f:
    content = f.read()
    print(content)
これは正しい構文のコードですが、実行にはfile.txtが必要です。

生成されたコードの3つの問題

1. 構文エラーの可能性
AIが生成したコードに、プログラミング言語の文法違反(構文エラー)が含まれることがあります。

2. 依存関係の未解決
コードが動作するために必要な外部ライブラリ(依存関係)が明示されないことがあります。

3. 実行環境の不一致
生成されたコードが想定する実行環境(OS、Pythonバージョン等)と、実際の環境が異なる場合があります。
📖 専門用語
  • 構文エラー: プログラミング言語の文法規則に違反しているエラー
  • 依存関係: プログラムが動作するために必要な他のライブラリやツール

3. コード実行とは何か

実行環境の必要性

コードを実行するには、適切な実行環境が必要です。これには以下が含まれます(詳細はPython公式チュートリアルを参照):

  • プログラミング言語の処理系PythonNode.js(JavaScript実行環境)等)
  • 必要なライブラリのインストール
  • 環境変数の設定
  • ファイルシステム(ファイルを保存・管理する仕組み)へのアクセス権限

ジェンスパーク(Genspark)のサンドボックス環境

ジェンスパーク(Genspark)では、サンドボックス環境を提供しています。これは以下の特徴を持ちます:

🔧 ジェンスパーク(Genspark)のサンドボックス環境
  • 隔離性: 外部システムに影響を与えない安全な環境
  • 完全性: Linux環境(オープンソースのOS(Operating System: コンピュータを動かす基本ソフトウェア))、Python、Node.js等が事前にインストール済み
  • 柔軟性: 必要なライブラリをpip install等で追加可能
  • 永続性の制約: ファイルシステムは一時的(セッション終了後に消去される場合がある)
📖 専門用語
  • 環境変数: プログラムの動作を制御する設定値(例: APIキー(API利用のための認証情報)、データベース接続情報(データベースにアクセスするための設定))
  • デバッグ: プログラムの誤り(バグ)を見つけて修正する作業

4. ジェンスパーク(Genspark)での実例:エリック・ジョージ方式

記事53(V字モデル適用)で紹介したエリック・ジョージ方式では、コード生成とコード実行の役割を明確に分けています。また、記事51では各AIの判断力の違いを実証しました。

🎯 エリック・ジョージ方式の誕生
このコード生成とコード実行の役割分担は、ユーザーの発案によるものです。長期間続いた不具合の解決策として、ユーザーがV字モデル(ソフトウェア開発のライフサイクルモデルの一つ)を適用し、上流工程(設計・コード生成)と下流工程(実装・コード実行)を分離する方式を提案しました。

この役割分担により、各AIの得意分野を活かした開発が可能となりました。ただし、完全な成功ではなく、部分的な成功であり、ユーザーの介入が必要な場合もあります。

エリック(上流工程AI): コード生成担当

役割
  • 要件定義に基づいた設計レベルのコードを生成
  • 全体構造、関数定義、処理フローの設計
  • 「何を実装すべきか」の明確化
典型的な成果物
  • 構造化された設計ドキュメント
  • 主要な関数のシグネチャ(関数名と引数の型・名前の定義)
  • 処理の流れを示す擬似コード(プログラミング言語に依存しない、処理の流れを表現したコード)
限界
  • 生成されたコードが実際に動作するかは未検証
  • 依存関係の詳細まで考慮できない
  • 判断力は中学生レベル(記事51で実証)。ただし、設計の大枠を提示することは可能です。詳細な判断や実装はジョージとユーザーが担当します
🎯 重要:エリック・ジョージ方式は、ユーザーの発案によりV字モデルをAI開発に適用したものです。コード生成とコード実行を明確に分離することで、各AIの得意分野を活かした開発が可能となりました。

ジョージ(下流工程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でも、実行環境の制約を完全に予測することは困難です。実際に動かしてみて初めて分かる問題が多数存在します。

🎯 重要:コード生成AIは「設計図を描く人」、実行環境は「実際に建物を建てる現場」です。どちらか一方だけでは不十分で、両方が必要です。
⚠️ よくある失敗例
  • ChatGPTが生成したPythonコードをコピペしたが、ModuleNotFoundError(必要なライブラリがインストールされていないというエラー)が発生
  • 生成されたコードが古いバージョンの構文で、最新環境では動作しない
  • ファイルパスが環境に依存しており、他の環境では動作しない

理由2: デバッグの複雑性

プログラムが期待通りに動作しない場合、デバッグが必要です。これは単なるコード生成とは異なるスキルです(参考:Python Debugging Guide - Pythonデバッグ技術の実践ガイド)。

デバッグの典型的な流れ
  1. エラー発生: プログラム実行時にエラーメッセージが表示される
  2. 原因特定: エラーメッセージやログから問題箇所を特定
  3. 修正: 該当箇所のコードを修正
  4. 再テスト: 修正後に再度実行して動作確認
このプロセスは、コード生成AIには困難な作業です。

理由3: 実行環境の管理

実際の開発では、実行環境の管理が重要な作業の一つです(参考:The Twelve-Factor App - クラウドネイティブアプリケーション開発のベストプラクティス集)。

  • 依存関係の管理: どのライブラリのどのバージョンが必要か(pip公式ドキュメント - Pythonパッケージ管理ツール参照)
  • 環境変数の設定: APIキー等の秘密情報の安全な管理
  • ファイルシステムの制約: 書き込み権限、ディスク容量(データを保存できる量)等

6. まとめ - AI時代のコーディング理解

コード生成とコード実行は、別の技術領域です。その違いを理解することが、AI時代のソフトウェア開発において重要です。

🔍 コード生成 vs コード実行

項目 コード生成 コード実行
本質 テキスト生成 プログラム実行
主なツール ChatGPT, Copilot等 サンドボックス環境
成果物 テキストとしてのコード 動作するプログラム
検証方法 構文チェック 実行テスト
エリック・ジョージ方式 エリック(上流工程AI) ジョージ(下流工程AI)
🎯 重要なポイント
  • コード生成AIは「設計図を描く人」、実行環境は「実際に建物を建てる現場」
  • どちらか一方だけでは不十分、両方が必要
  • ジェンスパーク(Genspark)のサンドボックス環境は、生成と実行の橋渡し役

ジェンスパーク(Genspark)の特徴

ジェンスパーク(Genspark)は、コード生成とコード実行の両方を提供しています:

  • コード生成: AIによる設計・コード作成支援(ジェンスパーク(Genspark)公式サイト参照)
  • コード実行: サンドボックス環境での即座の実行・テスト
  • 反復改善: 生成→実行→修正のサイクルを効率化
⚠️ 現在の限界と課題
  • エリックの判断力: 中学生レベルであり、複雑な設計判断には限界がある
  • サンドボックスの制約: ファイルシステムが一時的であり、長期的なデータ保存には不向き
  • 実行時間制限: 長時間実行されるプログラムには制約がある
  • ユーザー介入の必要性: 複雑な問題では、依然としてユーザーの判断と介入が必要

AI技術が進化しても、コード生成と実行の違いを理解することが、効果的なAI活用の第一歩です。

🎯 重要:ジェンスパーク(Genspark)は、コード生成とコード実行の両方を提供することで、生成→実行→修正のサイクルを効率化しています。これはAI開発プラットフォームとしての強みです。

📚 関連記事