### USER
次の関数を完成させてください  
仕様  
・開かれているエディタ画面において選択されたテキストを取得する  
・選択されたテキスをプログラム仕様書として記録する  
・toolsのgetCreateCodePrompt関数を利用してシステムプロンプトを取得する  
　export function getCreateCodePrompt():String
・toolsのgenerateCode 関数に、プログラム仕様書 とシステムプロンプトを渡し、プログラムコードを作成する。  
　export async function generateCode(systemPrompt: string, userPrompt: string): Promise<string> 
・ 新しいエディタウィンドウで生成されたコードを表示させます、  
・toolsの関数は作成済です。  
=========createCode.ts===================  
import * as vscode from 'vscode';  
export function executeCreateCode(context: vscode.ExtensionContext) {  
vscode.window.showInformationMessage('コードレビュー実行中...');  
// コードレビューの具体的なロジックをここに追加  
}

### ASSISTANT
`createCode.ts` ファイルで指定された仕様に従って関数 `executeCreateCode` を完成させるためには、以下の手順に沿って実装します。この関数は、VSCode のエディタ内で選択されたテキストを取得し、それをプログラム仕様書として記録し、指定されたツール関数を使用してコードを生成します。最後に、新しいエディタウィンドウで生成されたコードを表示します。

以下は、その実装例です：

```typescript
import * as vscode from 'vscode';
import { getCreateCodePrompt, generateCode } from './tools'; // ツール関数のインポート

export async function executeCreateCode(context: vscode.ExtensionContext) {
    try {
        // 開かれているエディタ画面において選択されたテキストを取得
        const editor = vscode.window.activeTextEditor;
        
        if (!editor) {
            vscode.window.showErrorMessage('どのエディタも開かれていません。');
            return;
        }

        const selection = editor.selection;
        const userPrompt = editor.document.getText(selection);

        if (!userPrompt.trim()) {
            vscode.window.showWarningMessage('選択されたテキストがありません。');
            return;
        }

        // プログラム仕様書として記録
        const programSpecification = userPrompt;

        // toolsのgetCreateCodePrompt関数を利用してシステムプロンプトを取得
        const systemPrompt = getCreateCodePrompt();

        // generateCode 関数に、プログラム仕様書とシステムプロンプトを渡し、プログラムコードを作成
        const generatedCode = await generateCode(systemPrompt, programSpecification);

        if (!generatedCode) {
            vscode.window.showErrorMessage('コードの生成に失敗しました。');
            return;
        }

        // 新しいエディタウィンドウで生成されたコードを表示
        const newEditor = await vscode.workspace.openTextDocument({ content: generatedCode });
        await vscode.window.showTextDocument(newEditor);

    } catch (error) {
        console.error('executeCreateCode関数内でエラーが発生しました:', error);
        vscode.window.showErrorMessage('コードレビュー中に予期しないエラーが発生しました。');
    }
}
```

### 説明

1. **選択されたテキストの取得**:
   - `vscode.window.activeTextEditor` を使用して現在アクティブなエディタを取得します。
   - エディタが開かれている場合、その中で選択された範囲のテキストを取得します。

2. **プログラム仕様書として記録**:
   - 選択されたテキストが空白ではないか確認し、それを `programSpecification` に格納します。

3. **システムプロンプトの取得**:
   - `getCreateCodePrompt()` を呼び出してシステムプロンプトを取得します。

4. **コード生成**:
   - 取得した `systemPrompt` と `programSpecification` を `generateCode` 関数に渡し、Promise を使って非同期でコードを生成します。

5. **新しいエディタウィンドウでの表示**:
   - 生成されたコードを含む新しいテキストドキュメントを作成し、それを開きます。

6. **エラーハンドリング**:
   - 各ステップで適切なエラーメッセージをユーザーに表示します。また、全体の処理が失敗した場合もエラーログを出力し、メッセージを表示します。

この実装は、指定された仕様に基づいて動作するVSCode拡