AIエディタ Windsurf の活用

【概要】 WindsurfはVS Codeベースの無料でも利用できるAIエディタである。DeepSeek-V3-0324は無料利用できる。Ctrl+LでCascade機能を起動し日本語でさまざまな依頼(プログラムの解説、出力の解説、デバッグ、改良、利用技術のリサーチ、実験のヒントなど)が可能である。API Key不要でアカウント登録のみで使用できる。

旧版のWord windsurf.docx, PDF windsurf.pdf(このページの記事が最新版です)

【サイト内の関連ページ】

Windows の基本操作とWindows AI開発環境構築について: 別ページで説明している。

目次

  1. メリットと機能
  2. 基本機能とショートカットキー
  3. 無料プランの機能(2025年6月現在)
  4. API Key 要件
  5. Cursor と Windsurf の比較
  6. 事前準備
  7. Windsurf の起動と初回設定
  8. Windsurf の推奨モデル(クレジット節約のため)
  9. DeepSeek-V3-0324 モデルの選択手順
  10. Windsurf をエディタとして活用する
  11. Windsurf の AI 機能の活用
  12. Windsurf の重要機能一覧

1.メリットと機能

データ処理時の注意事項: 個人情報を含む画像やデータを使用する場合は、適切な匿名化処理を行い、データ保護法に従って取り扱う必要がある。

2.基本機能とショートカットキー

Cascade 機能

Cascade はコード生成や実行を支援する AI 機能である。

主要ショートカットキー

3.無料プランの機能(2025年6月現在)

4.API Key 要件

5.Cursor と Windsurf の比較

Claude 3.7 Sonnet の利用回数では、Cursor 無料版は月50回、Windsurf 無料版は月約25回利用可能である。ただし Windsurf では、無料(0クレジット)のモデル(DeepSeek-V3-0324など)が無制限で利用できる点が特徴である。

6.事前準備

Python, Windsurfをインストールしていない場合の手順(インストール済みの人は実行不要)。

  1. 管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)し、以下を実行する。
  2. 以下のコマンドをそれぞれ実行する(winget コマンドは1つずつ実行)。

REM Python をシステム領域にインストール
winget install --scope machine --id Python.Python.3.12 -e --silent
REM Windsurf をシステム領域にインストール
winget install --scope machine --id Codeium.Windsurf -e --silent
REM Python のパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON_SCRIPTS_PATH=C:\Program Files\Python312\Scripts"
echo %PATH% | find /i "%PYTHON_PATH%" >nul
if errorlevel 1 setx PATH "%PATH%;%PYTHON_PATH%" /M >nul
echo %PATH% | find /i "%PYTHON_SCRIPTS_PATH%" >nul
if errorlevel 1 setx PATH "%PATH%;%PYTHON_SCRIPTS_PATH%" /M >nul
REM Windsurf のパス設定
set "WINDSURF_PATH=C:\Program Files\Windsurf"
if exist "%WINDSURF_PATH%" (
    echo %PATH% | find /i "%WINDSURF_PATH%" >nul
    if errorlevel 1 setx PATH "%PATH%;%WINDSURF_PATH%" /M >nul
)

Ubuntu環境での設定

ターミナルを開く:

# システムの更新
sudo apt update && sudo apt upgrade -y
# Python3と開発環境のインストール
sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential
# Windsurf(Cursor系エディタ)のインストール
# 公式サイトからダウンロードするか、以下の方法でインストール
wget -qO- https://download.codeium.com/windsurf/linux/install.sh | sh

7.Windsurf の起動と初回設定

  1. Windsurf を起動する(スタートメニューまたは「windsurf」コマンドを使用)。
  2. 「Get Started」をクリックする。
  3. VS Code から設定を引き継ぎたい場合は「Import from VS Code」を選択し、そうでない場合は「Start fresh」を選択する。
  4. 設定を続行する。
  5. 「Log in to Windsurf」の画面で、「Sign up」をクリックしてアカウントを新規作成する。この登録情報は記録しておき、次回からは「Log in」でログインする。Google アカウントを使用して Windsurf のアカウント登録も可能である。これでインストールと初期設定は完了である。
  6. Getting Started(始めよう)の画面を確認する
  7. 動作確認のため、Ctrl + L(同時押し)で Cascade を開き、「折れ線グラフを描くコードを出して」などと入力し、Enter キーを押す。
  8. コードが出力される

    このとき、左下に「Do you want to install the recommended 'Python' extension...」という画面が出る場合がある。「Install」をクリックする。インストール終了を待つ。

    AIパネルには「コードを実行します」のように表示される。実行する場合は「Accept」をクリックする

    実行結果を確認する

8.Windsurf の推奨モデル(クレジット節約のため)

  1. DeepSeek-V3-0324 (0クレジット・恒久的)
  2. SWE-1 (0クレジット・期間限定)
  3. SWE-1-lite (0クレジット・軽量版)

9.DeepSeek-V3-0324 モデルの選択手順

  1. Cascade パネル(Ctrl + L(同時押し))を開く。
  2. 入力欄上部のモデル選択ドロップダウンをクリックする。
  3. 使用モデル(例:「DeepSeek-V3-0324」)を選択する。

10.Windsurf をエディタとして活用する

ここでは、Windsurfで、ファイル作成、コード編集、実行を行う。

1. Windsurf の起動

Windsurf を起動する(スタートメニューなどを使用)。起動直後にログインを求められた場合はログインする(通常は自動ログインされる)。最初の起動では、サインイン(IDとパスワードの登録)が必要である。サインインの際は、Google アカウントの利用を推奨する。

2. 新規ファイルの作成

  1. 新規ファイルを作成する(メニューで「File」>「New File」)。
  2. ファイル名を設定する(例: a.py)。このとき、拡張子を「.py」に設定する(Python ファイルとして認識させるため)。
  3. ファイル作成を確定する(Enter キー > 「Create File」をクリック)。

3. プログラムの入力と実行

  1. Windsurf の a.py 画面で、以下のプログラムを入力する。
print(100 + 200)

このとき、左下に「Do you want to install the recommended 'Python' extension...」という画面が出る場合がある。「Install」をクリックする。インストール終了を待つ。

  1. プログラムを実行する(画面上部の三角形の実行ボタンをクリック)。
      ※ 実行ボタンがない場合は、Python extension をインストールする
  2. 実行結果として「300」が表示されることを確認する。ターミナルがない場合には、「View」メニュー > 「Terminal」。

print について: print() は Python の関数であり、括弧内の値や計算結果を画面に表示する。この例では、100 + 200 の計算結果である 300 が出力される。

11.Windsurf の AI 機能の活用

ここでは、Windsurf で本格的なプログラム実行(AIによる画像分類を行うプログラム)と AI との対話を行う。

1. AI による画像分類プログラムのための必要なライブラリのインストール

管理者権限で起動したコマンドプロンプト(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)で以下を実行する。

pip install torch torchvision matplotlib numpy pillow japanize-matplotlib

pip について: Python のパッケージ管理システムである。インターネット上のライブラリを自動的にダウンロードし、インストールする機能を持っている。

ライブラリとは: プログラミングにおいて、再利用可能なプログラムの集合体である。機械学習や画像処理などの複雑な処理を簡単に実装できる。

各ライブラリの役割:

2. 画像分類プログラムの実装

画像分類とは: コンピュータが画像を見て、その画像に写っているものが何かを自動的に判断する技術である。人工知能の代表的な応用分野の一つである。

  1. 必要なライブラリのインストール

    管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)し、以下を実行する。

    
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
    pip install matplotlib numpy japanize-matplotlib
    
  2. 元のプログラムを削除する(Windsurf エディタ画面内)。
  3. Windsurf エディタ画面に、以下のプログラムをコピーして貼り付ける。

# CIFAR-10画像分類プログラム
#   CNNによる10クラス画像分類と学習過程の可視化
#   論文: "Deep Residual Learning for Image Recognition" (CVPR 2016)
#   GitHub: https://github.com/pytorch/vision/tree/main/torchvision/models
#   特徴: 畳み込みニューラルネットワーク(CNN)は画像の局所的特徴を効率的に抽出
#         CIFAR-10データセットで約70-80%の精度、並列処理により高速学習
#   前準備: pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
#           pip install matplotlib numpy japanize-matplotlib
#           (管理者権限のコマンドプロンプトで実行)

import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import numpy as np
import japanize_matplotlib

# 定数定義
BATCH_SIZE = 32
EPOCHS = 5
LEARNING_RATE = 0.001
RANDOM_SEED = 42

# 再現性確保のためのシード設定
torch.manual_seed(RANDOM_SEED)
np.random.seed(RANDOM_SEED)

# データセットのクラス名
CLASSES = ['飛行機', '自動車', '鳥', '猫', '鹿', '犬', 'カエル', '馬', '船', 'トラック']

# デバイス設定
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print(f'使用デバイス: {device}')
if torch.cuda.is_available():
    print('GPUを使用して学習を実行します')
else:
    print('CPUを使用して学習を実行します')

# データの前処理
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])

# CIFAR-10データセットの読み込み
print("データセットを読み込み中...")
trainset = torchvision.datasets.CIFAR10(
    root='./data', train=True, download=True, transform=transform
)
trainloader = torch.utils.data.DataLoader(
    trainset, batch_size=BATCH_SIZE, shuffle=True
)

testset = torchvision.datasets.CIFAR10(
    root='./data', train=False, download=True, transform=transform
)
testloader = torch.utils.data.DataLoader(
    testset, batch_size=BATCH_SIZE, shuffle=False
)

# CNNモデルの定義
class CNN(nn.Module):
    def __init__(self):
        super(CNN, self).__init__()
        self.conv1 = nn.Conv2d(3, 32, 3, padding=1)
        self.conv2 = nn.Conv2d(32, 64, 3, padding=1)
        self.conv3 = nn.Conv2d(64, 64, 3, padding=1)
        self.pool = nn.MaxPool2d(2, 2)
        self.fc1 = nn.Linear(64 * 8 * 8, 64)
        self.fc2 = nn.Linear(64, 10)
        self.relu = nn.ReLU()

    def forward(self, x):
        x = self.pool(self.relu(self.conv1(x)))
        x = self.pool(self.relu(self.conv2(x)))
        x = self.relu(self.conv3(x))
        x = x.view(-1, 64 * 8 * 8)
        x = self.relu(self.fc1(x))
        x = self.fc2(x)
        return x

model = CNN().to(device)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=LEARNING_RATE)

# メイン処理
print("学習を開始します...")
train_losses = []
val_losses = []
model.train()

for epoch in range(EPOCHS):
    # 訓練フェーズ
    model.train()
    running_train_loss = 0.0
    for inputs, labels in trainloader:
        inputs, labels = inputs.to(device), labels.to(device)

        optimizer.zero_grad()
        outputs = model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

        running_train_loss += loss.item()

    # 検証フェーズ
    model.eval()
    running_val_loss = 0.0
    with torch.no_grad():
        for inputs, labels in testloader:
            inputs, labels = inputs.to(device), labels.to(device)
            outputs = model(inputs)
            loss = criterion(outputs, labels)
            running_val_loss += loss.item()

    epoch_train_loss = running_train_loss / len(trainloader)
    epoch_val_loss = running_val_loss / len(testloader)
    train_losses.append(epoch_train_loss)
    val_losses.append(epoch_val_loss)
    print(f'エポック {epoch+1}/{EPOCHS}: 訓練損失 = {epoch_train_loss:.4f}, 検証損失 = {epoch_val_loss:.4f}')

print("評価を実行中...")
model.eval()
correct = 0
total = 0
test_images = []
test_labels = []
predictions = []

with torch.no_grad():
    for images, labels in testloader:
        images, labels = images.to(device), labels.to(device)
        outputs = model(images)
        _, predicted = torch.max(outputs, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

        if len(test_images) < 5:
            for j in range(min(5 - len(test_images), images.size(0))):
                test_images.append(images[j].cpu())
                test_labels.append(labels[j].cpu())
                predictions.append(predicted[j].cpu())

accuracy = 100 * correct / total

# 結果出力
plt.figure(figsize=(15, 3))
for i in range(5):
    plt.subplot(1, 5, i+1)
    img = test_images[i].permute(1, 2, 0)
    img = img * 0.5 + 0.5
    plt.imshow(img)
    plt.title(f'予測: {CLASSES[predictions[i]]}\n実際: {CLASSES[test_labels[i]]}')
    plt.axis('off')
plt.tight_layout()
plt.show()

plt.figure(figsize=(8, 4))
plt.plot(range(1, EPOCHS + 1), train_losses, 'b-', label='訓練損失')
plt.plot(range(1, EPOCHS + 1), val_losses, 'r-', label='検証損失')
plt.title('学習過程')
plt.xlabel('エポック')
plt.ylabel('損失')
plt.legend()
plt.grid(True)
plt.show()

print(f"テスト精度: {accuracy:.2f}%")

プログラムの主要概念説明:

3. プログラムの実行と結果確認

  1. プログラムを実行する(実行ボタンを押してプログラムを開始)。
  2. 実行完了まで数分待機する(機械学習の処理時間が必要である)。

実行時間について: 深層学習モデルの訓練は計算量が多いため、通常のプログラムより長い時間を要する。コンピュータの性能により数分程度かかる場合がある。

実行結果の確認手順:

  1. 最初に AI による画像分類結果が表示される(5枚のテスト画像に対する予測結果と正解の比較)。
  2. 画面を切り替える(確認後、右上の「x」ボタンをクリックして次へ進む)。
  3. 学習曲線(損失の変化)が表示される(モデルの学習過程を可視化したグラフ)。
  4. プログラム実行を終了する(確認後、右上の「x」ボタンをクリック)。

学習曲線の見方: 左のグラフは精度(正解率)の変化を、右のグラフは損失(誤差)の変化を示す。理想的には精度が上昇し、損失が減少する傾向を示す。

4. AI 対話機能の活用

AI 対話機能は、Windsurf に搭載された人工知能アシスタント機能である。プログラムに関する質問や、コードの説明、改善提案などを自然言語で対話できる。

  1. AI 対話パネルの起動(Ctrl + L(同時押し)キーを同時押し)。
  2. 右側に AI 対話用パネルが開く。

注意: AI 対話パネルが「Loading...」と表示されて使用できない場合は、Windsurf の再起動(一度 Windsurf を終了し、再起動)で解決する場合がある。これは AI サービスへの接続に時間がかかる場合に発生する現象である。

5. AI との対話例

AI への質問(右側の対話画面で以下の質問を試す):

AI との効果的な対話:

12.Windsurf の重要機能一覧

AI機能

開発支援機能