AIエディタ Windsurf の活用
【概要】 WindsurfはVS Codeベースの無料でも利用できるAIエディタである。DeepSeek-V3-0324は無料利用できる。Ctrl+LでCascade機能を起動し日本語でさまざまな依頼(プログラムの解説、出力の解説、デバッグ、改良、利用技術のリサーチ、実験のヒントなど)が可能である。API Key不要でアカウント登録のみで使用できる。
旧版のWord windsurf.docx, PDF windsurf.pdf(このページの記事が最新版です)
【サイト内の関連ページ】
Windows の基本操作とWindows AI開発環境構築について: 別ページで説明している。
目次
- メリットと機能
- 基本機能とショートカットキー
- 無料プランの機能(2025年6月現在)
- API Key 要件
- Cursor と Windsurf の比較
- 事前準備
- Windsurf の起動と初回設定
- Windsurf の推奨モデル(クレジット節約のため)
- DeepSeek-V3-0324 モデルの選択手順
- Windsurf をエディタとして活用する
- Windsurf の AI 機能の活用
- Windsurf の重要機能一覧
1.メリットと機能
- 無料で利用可能: 学生や個人開発者向けに無料プランが提供されている。
- VS Code ベースで、操作法がVS Code と類似: 全てではないが、VS Code の多くの拡張機能をそのまま利用できる。
- Windsurf Tab: Tab キーを活用したコード補完および提案機能がある。
- Cascade機能:コード生成や実行を支援する AI 機能がある。
データ処理時の注意事項: 個人情報を含む画像やデータを使用する場合は、適切な匿名化処理を行い、データ保護法に従って取り扱う必要がある。
2.基本機能とショートカットキー
Cascade 機能
Cascade はコード生成や実行を支援する AI 機能である。
- 開始方法: Ctrl + Lキー(同時押し)で Cascade パネルを開く。
- 使用例: 例えば、「Python で折れ線グラフのサンプルコードを作成して」のように日本語でリクエストできる。
主要ショートカットキー
Ctrl + L
: Cascade(AI対話)パネルを開くCtrl + I
: AIコード生成機能を起動Ctrl + `
: 統合ターミナルを開くF5
: デバッグを開始Tab
: コード補完候補を選択
3.無料プランの機能(2025年6月現在)
- プロンプトクレジット: 月25クレジット(GPT-4.1 プロンプト約100回分に相当)。
- AI モデル: GPT-4.1(0.25クレジット/プロンプト)、Claude 3.7 Sonnet(1クレジット/プロンプト)、DeepSeek-V3-0324(無料)など、複数のモデルを利用できる。
- その他機能: 無制限の Fast Tab、SWE-1 Liteなどの機能がある。
4.API Key 要件
- API Key 不要: サードパーティの API キー(外部サービスにアクセスするための認証キー)は不要である。
- 設定: Windsurf アカウントの作成のみが必要である(無料で可能)。
- 利用開始: Windsurfのアカウント登録で利用開始できる。
5.Cursor と Windsurf の比較
Claude 3.7 Sonnet の利用回数では、Cursor 無料版は月50回、Windsurf 無料版は月約25回利用可能である。ただし Windsurf では、無料(0クレジット)のモデル(DeepSeek-V3-0324など)が無制限で利用できる点が特徴である。
6.事前準備
Python, Windsurfをインストールしていない場合の手順(インストール済みの人は実行不要)。
- 管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)し、以下を実行する。
- 以下のコマンドをそれぞれ実行する(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 の起動と初回設定
- Windsurf を起動する(スタートメニューまたは「windsurf」コマンドを使用)。
- 「Get Started」をクリックする。
- VS Code から設定を引き継ぎたい場合は「Import from VS Code」を選択し、そうでない場合は「Start fresh」を選択する。
- 設定を続行する。
- 「Log in to Windsurf」の画面で、「Sign up」をクリックしてアカウントを新規作成する。この登録情報は記録しておき、次回からは「Log in」でログインする。Google アカウントを使用して Windsurf のアカウント登録も可能である。これでインストールと初期設定は完了である。
- Getting Started(始めよう)の画面を確認する
- 動作確認のため、Ctrl + L(同時押し)で Cascade を開き、「折れ線グラフを描くコードを出して」などと入力し、Enter キーを押す。

コードが出力される

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

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

実行結果を確認する

8.Windsurf の推奨モデル(クレジット節約のため)
- DeepSeek-V3-0324 (0クレジット・恒久的)
- SWE-1 (0クレジット・期間限定)
- SWE-1-lite (0クレジット・軽量版)
9.DeepSeek-V3-0324 モデルの選択手順
- Cascade パネル(Ctrl + L(同時押し))を開く。
- 入力欄上部のモデル選択ドロップダウンをクリックする。
- 使用モデル(例:「DeepSeek-V3-0324」)を選択する。
10.Windsurf をエディタとして活用する
ここでは、Windsurfで、ファイル作成、コード編集、実行を行う。
1. Windsurf の起動
Windsurf を起動する(スタートメニューなどを使用)。起動直後にログインを求められた場合はログインする(通常は自動ログインされる)。最初の起動では、サインイン(IDとパスワードの登録)が必要である。サインインの際は、Google アカウントの利用を推奨する。
2. 新規ファイルの作成
- 新規ファイルを作成する(メニューで「File」>「New File」)。
- ファイル名を設定する(例:
a.py
)。このとき、拡張子を「.py」に設定する(Python ファイルとして認識させるため)。 - ファイル作成を確定する(Enter キー > 「Create File」をクリック)。

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

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

- プログラムを実行する(画面上部の三角形の実行ボタンをクリック)。
※ 実行ボタンがない場合は、Python extension をインストールする - 実行結果として「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 のパッケージ管理システムである。インターネット上のライブラリを自動的にダウンロードし、インストールする機能を持っている。
ライブラリとは: プログラミングにおいて、再利用可能なプログラムの集合体である。機械学習や画像処理などの複雑な処理を簡単に実装できる。
各ライブラリの役割:
- PyTorch (torch): Facebook が開発した機械学習フレームワーク(プログラム開発を効率化するための基盤ソフトウェア)である。深層学習の実装に使用される。
- torchvision: PyTorch の画像処理用ライブラリである。画像データの前処理やデータセットの読み込みに使用される。
- Matplotlib: グラフや図表を作成するライブラリである。データの可視化に使用される。
- NumPy: 数値計算ライブラリである。多次元配列の操作や数学関数を提供する。
- Pillow: 画像処理ライブラリである。画像の読み込み、編集、保存が可能である。
- japanize-matplotlib: Matplotlib で日本語を正しく表示するためのライブラリである。
2. 画像分類プログラムの実装
画像分類とは: コンピュータが画像を見て、その画像に写っているものが何かを自動的に判断する技術である。人工知能の代表的な応用分野の一つである。
- 必要なライブラリのインストール
管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)し、以下を実行する。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126 pip install matplotlib numpy japanize-matplotlib
- 元のプログラムを削除する(Windsurf エディタ画面内)。
- 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}%")

プログラムの主要概念説明:
- CIFAR-10 データセット: 10種類の物体(飛行機、自動車、鳥、猫、鹿、犬、カエル、馬、船、トラック)が写った 32×32 ピクセルの小さなカラー画像60,000枚で構成される標準的な画像認識用データセットである。
- データの前処理: 機械学習では、元のデータをモデルが学習しやすい形に変換する必要がある。ここでは画像の画素値を-1から1の範囲に正規化(データの値を一定の範囲に変換する処理)している。PyTorchではラベルは自動的に適切な形式に変換される。
- CNN(畳み込みニューラルネットワーク): 画像認識に特化したディープラーニングモデルである。畳み込み層 (Conv2d) で画像の特徴を抽出し、プーリング層 (MaxPool2d) で情報を集約する構造を持っている。
- エポック(epochs): 全訓練データを1回学習することを1エポックと呼ぶ。ここでは5エポック、つまり全データを5回繰り返し学習する。
- バッチサイズ(batch_size): 一度に処理するデータの個数である。32個ずつまとめて処理することで、学習の効率と安定性を向上させる。
- デバイス設定: PyTorchでは計算をCPUまたはGPUで実行できる。GPUが利用可能な場合は自動的にGPUを使用し、学習を高速化する。
- 損失関数と最適化手法: CrossEntropyLoss(交差エントロピー損失)で予測と正解の差を計算し、Adam最適化手法でモデルのパラメータを更新する。
3. プログラムの実行と結果確認
- プログラムを実行する(実行ボタンを押してプログラムを開始)。
- 実行完了まで数分待機する(機械学習の処理時間が必要である)。

実行時間について: 深層学習モデルの訓練は計算量が多いため、通常のプログラムより長い時間を要する。コンピュータの性能により数分程度かかる場合がある。
実行結果の確認手順:
- 最初に AI による画像分類結果が表示される(5枚のテスト画像に対する予測結果と正解の比較)。
- 画面を切り替える(確認後、右上の「x」ボタンをクリックして次へ進む)。
- 学習曲線(損失の変化)が表示される(モデルの学習過程を可視化したグラフ)。
- プログラム実行を終了する(確認後、右上の「x」ボタンをクリック)。


学習曲線の見方: 左のグラフは精度(正解率)の変化を、右のグラフは損失(誤差)の変化を示す。理想的には精度が上昇し、損失が減少する傾向を示す。
4. AI 対話機能の活用
AI 対話機能は、Windsurf に搭載された人工知能アシスタント機能である。プログラムに関する質問や、コードの説明、改善提案などを自然言語で対話できる。
- AI 対話パネルの起動(Ctrl + L(同時押し)キーを同時押し)。
- 右側に AI 対話用パネルが開く。
注意: AI 対話パネルが「Loading...」と表示されて使用できない場合は、Windsurf の再起動(一度 Windsurf を終了し、再起動)で解決する場合がある。これは AI サービスへの接続に時間がかかる場合に発生する現象である。
5. AI との対話例
AI への質問(右側の対話画面で以下の質問を試す):
- 「このプログラムの機能は」(Enter キー)
- 「このプログラムの使い方を具体的に教えて」(Enter キー)
- 「このプログラムを使って何が研究できるの。研究中間発表(研究目標、研究課題、取り組み、期待される成果、独自の工夫予定)のサンプルを簡潔に教えて。そのとき、社会課題の解決を考えて。」(Enter キー)



AI との効果的な対話:
- 具体的で明確な質問をする。
- 専門用語が分からない場合は「初心者向けに説明して」と付け加える。
- 複数の質問がある場合は、一つずつ順番に聞く。
- AI の回答に対してさらに詳しく聞きたい場合は「もっと詳しく教えて」と追加質問する。
12.Windsurf の重要機能一覧
AI機能
- AI コード生成機能:
Ctrl + I
キー、または AI パネルで「○○○のコードを生成して」と依頼。複雑なコードの自動生成、学習時間の短縮、コーディングパターンの習得が可能。 - AI コード解説機能: コードを選択して右クリック > 「Explain」、または AI パネルで質問。理解困難なコードの詳細解説、学習効果の向上が可能。
- AI バグ修正支援機能: エラー箇所を選択して AI パネルで「このエラーを修正して」と依頼。デバッグ時間の短縮、エラー原因の理解促進が可能。
開発支援機能
- インテリセンス(自動補完)機能: コード入力中に自動的に候補が表示され、Tab キーで選択。タイプミス防止、開発効率の向上、関数名や変数名の正確な入力が可能。
- 統合ターミナル機能: 「View」メニュー > 「Terminal」、または
Ctrl + `
キー。エディタを離れることなくコマンド実行、ライブラリインストールが可能。 - ファイルエクスプローラー機能: 左側のサイドバーで自動表示され、フォルダやファイルをクリックで選択。複数ファイルの効率的な管理、プロジェクト全体の把握が可能。
- デバッガー機能: ブレークポイント設定でライン番号をクリックし、
F5
キーでデバッグ開始。実行時の変数値確認、ステップ実行による詳細な動作解析が可能。 - 問題検出機能: Problems パネルで自動表示される警告やエラーを確認。コンパイル前のエラー検出、コード品質の向上が可能。