Claude CodeとCursor:AIコーディングエージェントによる開発
このトピックを修了すると
エピソード9で議論したエージェントの原則が、最も成熟していて実用的なアプリケーションであるAIコーディングエージェントにどのように適用されているかを学びます。これには、Claude Code、Cursor、Windsurf、GitHub Copilotの実践的な使用方法が含まれており、各ツールの長所と、それらを生物学研究室でどのように活用できるかを説明します。
これは、2025年までにソフトウェアの開発方法を根本的に変えるツールに焦点を当てた、ツールフェーズ3シリーズの3番目のパートです。これらのツールを活用することで、生物学研究室は、データ分析、パイプラインの構築、および出版物のためのコードの再現を劇的に加速させることができます。
AIコーディングエージェントの機能
エピソード9で議論したように、エージェントはLLM + ツール + ループ + メモリとして定義されます。AIコーディングエージェントは、この構造の特殊な形式であり、開発環境に合わせて調整されています。
重要なツール:
- **ファイルシステム:**ファイルの読み取り、書き込み、および検索。
- **ターミナル実行:**シェルコマンドとテストの実行。
- **Git:**ステータスの確認、コミット、および差分の表示。
- **Webアクセス:**ドキュメントとライブラリ情報の取得。
- **エディタ統合:**カーソル位置と選択されたコードの認識。
これらのツールにより、エージェントは実際にコードを書き、実行し、デバッグすることができます。
一般的なタスク:
- 新機能の実装。
- バグの修正。
- テストの作成。
- リファクタリング。
- ドキュメントの作成。
- コードレビューの実施。
- 移行の実行。
生物学固有のタスク:
- scRNA-seq分析パイプラインのスクリプトの作成。
- 実験データの可視化(matplotlib、plotly)。
- APIとの統合(PubMed、UniProt、ClinicalTrials.gov)。
- SnakemakeおよびNextflowワークフローの作成。
- Jupyterノートブックの分析。
主要なツールランドスケープ
Claude Code
AnthropicのCLIコーディングエージェントで、ターミナルから直接対話できます。
# プロジェクトフォルダからclaude
# 会話を開始> "src/analysis.pyのデータ解析セクションをリファクタリングしてください"特徴:
- **ターミナルネイティブ:**個別のGUIはなく、任意のIDEと組み合わせることができます。
- **強力なツール使用:**Bash、ファイルシステム、Git、およびWebツールが組み込まれています。
- **長いセッション:**エピソード10で説明したように、コンテキストを自動的に管理します(圧縮、オフロード)。
- **スキルとプラグイン:**プロジェクトごとにカスタムロジック拡張を可能にします。
- **MCPサポート:**エピソード9で説明したMCPサーバーに接続します。
生物学におけるユースケース:
- 実験データフォルダ内の大きなファイルを処理します。
- Jupyterノートブックの代わりに、CLIを使用して分析パイプラインを開発します。
- SSHセッションを介してリモートサーバー(HPC)と直接対話します。
Cursor
AIペアプログラミングに特化したIDEであるVS Codeのフォークです。
主な機能:
- **タブ自動補完:**ファイルのコンテキストを理解するインライン補完。
- **Cmd+K:**コード編集のための自然言語コマンド。
- **Cmd+L(チャット):**サイドバーでの会話。
- **Cmd+I(コンポーザー):**複数のファイルを編集するためのエージェント。
- **コードベースのインデックス作成:**セマンティック検索のために、プロジェクト全体をインデックス化します。
- **AIのルール:**プロジェクト固有のルール(コーディングスタイル、アーキテクチャ)を指定できます。
特徴:
- **視覚的なIDE:**VS Codeに慣れているユーザーは、すぐに適応できます。
- **インライン編集:**特定のコードブロックを選択し、自然言語を使用して編集します。
- **モデル選択:**Claude、GPT-4o、Gemini、および独自の高速モデルから選択できます。
Windsurf (Codeium)
Cursorファミリーの競合するIDEであり、Cascadeエージェントモードで知られています。
差別化要因:
- **フロー:**複数のファイルにわたる大規模な変更を自動的に計画および実行します。
- **Windsurf Cascade:**コードを積極的に理解します(ユーザーが選択したものに加えて、関連ファイルを参照します)。
- **価格競争力:**一般的に、Cursorよりも安価です。
GitHub Copilot
**Copilot Chat:**サイドバーでの会話。 **Copilot Workspace:**問題→計画→実装→PRを自動化します。 **Copilot Agent Mode:**最近追加されたエージェント機能であり、CursorおよびClaude Codeに似ています。
MicrosoftとOpenAIによってサポートされており、強力なVS Code統合と成熟したエンタープライズ規模のインフラストラクチャを備えています。
その他
- **Zed:**パフォーマンスに重点を置いたエディタで、最近AI機能が強化されました。
- **Continue.dev:**オープンソースのコーディング拡張機能(VS Code、JetBrains)。
- **Aider:**CLIベースのオープンソースエージェント。
- **Devin (Cognition):**完全に自律的なエージェントで、クラウド上で実行されます。
Claude Code の実践的なワークフロー
生物学の分野における Claude Code の具体的な使用例です。
準備
cd ~/lab_projectclaude最初の会話では、エージェントは CLAUDE.md ファイルを参照して、プロジェクトについて学習します。このファイルには、プロジェクトのルールと構造が含まれています。
タスクの委任
例 1: scRNA-seq データ分析スクリプト:
「
data/samples/フォルダに 5 つの新しい scRNA-seq h5ad ファイルがあります。各サンプルに対して、QC、フィルタリング、正規化、UMAP、および Leiden クラスタリングを実行し、結果をresults/{sample_id}/フォルダに保存するスクリプトを作成してください。また、各サンプルの結果の概要テーブルを作成してください。」
エージェントは次の手順を実行します。
- フォルダ構造を確認します (
ls,find)。 - サンプルファイルをレビューします(ファイルサイズ、拡張子)。
- Scanpy の標準パイプラインスクリプトを作成します。
- 必要なライブラリを特定してインストールします。
- 小さなサンプルでスクリプトをテストします。
- 発生する問題を修正します。
- 最終的なスクリプトと使用方法の指示を返します。
コードレビュー
例 2: PR コードのレビュー:
「このブランチの変更をレビューし、特に統計的検定セクションで、多重検定補正が欠落していないか注意深く確認してください。」
エージェントは git diff main を使用して変更を確認し、統計セクションを特定し、p_adjusted 処理が欠落している箇所を指摘し、statsmodels の FDR 補正の使用を提案します。
デバッグ
例 3: 失敗したパイプラインのデバッグ:
「
run_analysis.pyを実行すると、3 番目のサンプルでクラッシュします。ログはlogs/error.logにあります。原因を特定して修正してください。」
エージェントはログを読み、問題のあるファイルを調べ、3 番目のサンプルの具体的な状況(例:0 個のセルサイズ)を特定し、例外処理コードを追加し、スクリプトを再実行して修正を検証します。
ドキュメントの生成
例 4: README およびチュートリアル:
「このリポジトリの README を作成し、インストール、データ準備、実行、および結果の解釈を含めます。新しいラボメンバーが始めるために必要なすべての情報を含めてください。」
エージェントはプロジェクトをスキャンし、包括的な README を作成し、既存のスクリプトから実際の使用例を抽出します。
Cursor の実践的なワークフロー
Cursor の別の使用方法です。
インライン編集 (Cmd+K)
特定の関数を選択し、Cmd+K を押します。
「この関数に NumPy のベクトル化を適用して、for ループを削除してください。」
Cursor は関数の編集を提案し、それを採用または拒否できます。
サイドバーでの会話 (Cmd+L)
「現在開いているノートブックで、UMAP 可視化の色を、細胞タイプに基づいて変更したい。」
Cursor Chat はノートブックのコンテキストを理解し、コードスニペットを提案します。
コンポーザー (Cmd+I)
複数のファイルにわたる大規模な変更に使用します。
`@src/utils.py @src/analysis.py: ハードコードされた設定から、pydantic Settings クラスへの設定管理のリファクタリングを行う。」
コンポーザーは 2 つのファイルを同時に変更し、変更は diff を使用して確認できます。
AI のためのルール
プロジェクトのルートに .cursorrules ファイルを作成します。
- 常に型ヒントを使用する。
- ドキュメント文字列は Google スタイルに従う。
- Scanpy 関連の関数は、`utils.scanpy_helpers` モジュールに分離する。
- テストは pytest を使用して記述し、80% のコードカバレッジを達成する。
- 生物学的な用語には英語を使用し、コメントには韓国語を使用する。これらのルールは、各会話のシステムプロンプトに自動的に組み込まれます。
Vibe コーディング: 新しいワークフロー
Vibe コーディング は、開発者が自然言語で 意図と感情 を表現し、エージェントがコードを実装するワークフローであり、詳細なコードを記述するのではなく、エージェントにタスクを委ねるワークフローです。このワークフローはますます人気が高まっています。
従来の開発:
ドキュメントを読む → コードを書く → 実行する → デバッグする → 繰り返すVibe コーディング:
自然言語によるリクエスト → エージェントによる実行 → 結果をレビューする → 調整する生物学の例:
「8 つの遺伝子の発現の seaborn ヒートマップを作成します。遺伝子は階層的にクラスタリングされ、サンプルは元の順序を維持し、カラーパレットは平均を中心とした発散型にし、欠損値はグレーにします。」
この 1 つの文が、瞬時に 20 ~ 30 行のコードに変換されます。結果が満足のいくものでない場合は、自然言語を使用して再度修正できます。
適切なケース:
- 反復的な分析スクリプト(探索、プロット、調整のサイクル)。
- 一時的な可視化とデータ探索。
- プロトタイプと MVP。
- スクリプトの自動化。
不適切なケース:
- 重要な精度: 臨床および規制アプリケーション。コードレビューが不可欠です。
- アーキテクチャ上の決定: システム設計には人間の判断が中心である必要があります。
- セキュリティ: 認証、暗号化、およびインジェクション対策。
重要な原則: 常に エージェントによって生成されたコードを実行およびテストし、結果をレビュー します。「Vibe」だけに頼らないでください。第 11 話で議論したように、コードにも幻覚が発生する可能性があります。
プロジェクトコンテキストの管理
エージェントが大規模なプロジェクトの全体的なコンテキストを理解できるようにすることが重要です。
CLAUDE.md (Claude Code)
プロジェクトのルートに CLAUDE.md ファイルを作成します。エージェントは、各セッションの開始時にこのファイルを自動的に参照します。
例:
# プロジェクトコンテキスト
## プロジェクトの目的
このリポジトリには、シングルセル RNA シーケンスデータを分析するための自動化されたパイプラインが含まれています。
## 主要な構造
- `data/`: 生の h5ad ファイル(Git から除外)。
- `src/`: パイプラインコード。
- `notebooks/`: 探索的な分析。
- `results/`: 実行結果。
## コーディングスタイル
- 型ヒントは必須です。
- ドキュメント文字列: Google スタイル。
- 新しいスクリプトは `src/scripts/` に配置する必要があります。
## データ規則
- 細胞タイプラベルは、CellTypist の命名規則を優先する必要があります。
- 遺伝子シンボルは、最新の HGNC を使用する必要があります。
## よくあるタスク
- 新しいサンプルを追加する: `python src/scripts/add_sample.py {sample_id}`。
- QCレポートを再生成する: `snakemake qc_report`。
## 注意事項
- `data/raw/` の内容を修正しないでください。
- Gitにプッシュする前に、必ず pre-commit を実行してください。
エージェントは、このドキュメントを参照して、プロジェクトの規約に従います。
### .cursorrules (Cursor)
Cursorは`.cursorrules`ファイルを使用します。形式は若干異なりますが、目的は同じです。
### その他のツール
Windsurf(`.windsurfrules`)、Continue(`config.json`)など。各ツールには独自のルールファイルがあります。プロジェクトコンテキストファイルは、第7話のシステムプロンプトの拡張と見なすことができ、プロジェクト全体で永続的に使用できます。
## MCPサーバーとの連携
第9章で議論したように、MCPはコーディングエージェントで特に役立ちます。
### 便利なMCPサーバー
**ファイルシステム**: ファイルシステムへのアクセス(デフォルト)。
**GitHub**: リポジトリ、Issue、プルリクエストの操作。
**Slack**: チームコミュニケーション。
**Postgres**: データベースクエリ。
**Puppeteer**: Webブラウザの自動化。
**Memory**: セッション間で知識を保持。
**Notion**: Notionページへの読み書き。
**生物学に特化したMCPサーバー(カスタム)**。
- PubMed MCP: 論文の検索と詳細の取得。
- UniProt MCP: タンパク質情報。
- PDB MCP: 構造データ。
- 研究所LIMS MCP: 内部の実験管理。
### MCPサーバーの設定(Claude Codeの例)
`~/.claude/mcp.json`:
```json
{
"mcpServers": {
"pubmed": {
"command": "python",
"args": ["/path/to/pubmed_mcp_server.py"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
}
}
}エージェントは、これらのサーバーから提供されるツールを自動的に認識し、使用します。
優れたプラクティス
良い会話パターン
1. 明確な目的。
良くない例: 「このコードをレビューしてもらえますか?」 良い例: 「この関数の時間計算量はO(n^2)だと思います。O(n log n)に改善できるかどうか確認してもらえますか?」
2. コンテキストを提供する。
良くない例: 「なぜ動かないのですか?」 良い例: 「このスクリプトは3番目のサンプルでクラッシュします。ログはここにあります:(貼り付け)」
3. 検証を要求する。
良くない例: 「リファクタリングしてください。」
良い例: 「リファクタリング後、既存のテストに合格することを確認してください:pytest tests/。」
4. 最初に計画する。
良くない例: 「新しい機能を実装してください。」 良い例: 「まず、新しい機能を実装するための計画を作成してください。その後、承認しますので、実装を進めてください。」
Claude Codeのプランモードは、これを強制します。計画は実行前に承認されます。
ミスの防止
1. 破壊的な操作を確認する。ファイルの削除、Gitの強制プッシュ、データの削除を明示的に確認します。
2. テストを自動的に実行する。コードの変更後、テストを自動的に実行します。テストが失敗した場合は、人間の介入が必要です。
3. Gitコミットをレビューする。エージェントがコミットする前に、diffを確認します。
4. コストを意識する。Claude OpusとGPT-4oには、トークンごとのコストがあります。大規模なセッションの推定コストを確認してください。
チームでの使用
共有ルール: CLAUDE.mdと.cursorrulesをGitで管理します。
セッションログ: 重要な決定事項を記録します。
トレーニング: 優れた会話パターンをチームメンバーと共有します。
監査: エージェントによって作成されたコードを人間がレビューすることが不可欠です。
どのツールをいつ使用するか
個人的な実験/分析: Cursor + Claude SonnetまたはWindsurf。IDEに慣れている場合に便利です。 大規模な自動化/CLIワークフロー: Claude Code。ターミナルセッションを維持します。 チームによる共同コーディング: CursorまたはCopilot。IDEの共同作業機能。 機械学習/研究: Cursor + Claude Codeの組み合わせ。ノートブックとCLIを組み合わせます。 生物学的パイプライン(Snakemake / Nextflow): Claude Code。HPC SSHセッションで。 迅速なプロトタイピング: Windsurf CascadeまたはCursor Composer。 大規模なリファクタリング: Cursor ComposerまたはClaude Codeプランモード。
生物学的応用シナリオ
シナリオ1: Snakemakeワークフローの自動化
ラボで使用する新しい実験パイプラインをSnakemakeで構築します。
Claude Codeを使用します。
- ラボの標準(入力形式、出力仕様、リソース制限)を
CLAUDE.mdに指定します。 - 「このサンプルシートに基づいてSnakemakeワークフローを作成してください。QC、アライメント、バリアントコール、アノテーションを含める必要があります。クラスタへの送信をサポートしてください。」
- エージェントは、ルールファイル、
config.yaml、およびクラスタ構成を生成します。 - テストランで検証します。
- ドキュメントを作成します。
シナリオ2: Kaggle生物画像分類コンペティション
Kaggleの生物画像分類コンペティションに参加します。
Cursorを使用します。
- データ探索(Jupyter + Cursor)。
- ベースラインモデル(
torchvisionResNet + ファインチューニング)。 - データ拡張実験(Cmd+Kを使用して、複数の拡張の組み合わせを試します)。
- アンサンブルとTTAを実装します。
- 提出パイプラインを作成します。
第12章のPyTorchの知識を、Cursorのリアルタイム編集と組み合わせて使用します。
シナリオ3: 論文のコードを再現する
最近の論文の方法を自分のデータに適用します。
Claude Code + WebFetchを使用します。
- 論文のGitHubリンクを確認します。
- コードリポジトリをクローンします。
- 環境をセットアップします(要件、conda環境)。
- コードを自分のデータに合わせて調整します。
- 結果を確認します。
エージェントは、論文の方法セクションを読み取り、コードと比較します。違いが見つかった場合は、論文の著者のIssueやプルリクエストも参照します。
主要なポイント
- AIコーディングエージェントは、開発環境におけるパート#9の「エージェント」の特殊なアプリケーションです。
- 主要なツール:Claude Code (CLI)、Cursor (IDE)、Windsurf、GitHub Copilot。
- ターミナルとIDEのどちらのワークフローを選択するか。プロジェクトの性質と個人の好みに依存します。
- ヴァイブコーディング:自然言語で意図を表現します。常に結果を検証してください。
- プロジェクトコンテキストファイル (
CLAUDE.md、.cursorrules)を使用して、一貫性を維持します。 - MCPサーバーを使用して、カスタムツールを統合します。生物学に特化したサーバーを構築します。
- ベストプラクティス:明確な目的、コンテキスト、検証要求、および最初に計画を立てます。破壊的な操作を確認します。
- 生物学への応用:Snakemakeパイプライン、Kaggleコンペティション、論文の再現に使用します。
📐 付録:専門家向けの実践的なヒント
難易度:非常に難しい 対象読者:AIコーディングエージェントを本番環境で運用および展開した経験のある読者。
A.1 エージェントコンテキスト管理(Claude Codeの視点)
Claude Codeのコンテキストは、パート#10の原則を適用します。
セッション圧縮。会話が長くなると、自動的に圧縮します。古いツールの結果を要約で置き換えます。
スキル。ドメイン固有のロジックをカスタムプロジェクトスキルとして定義します。たとえば、bio-analysisスキルには、標準的なscRNA-seqパイプラインの知識を含めることができます。
サブエージェント。大規模なタスクをサブエージェントに委任します。各サブエージェントは独自のコンテキストウィンドウを持ちます。これは、パート#9のマルチエージェントパターンです。
A.2 Cursorのコードベースのインデックス作成
プロジェクト全体をインデックス化します。
手順:
- 各ファイルをチャンクに分割します(パート#8のチャンク化の原則を使用)。
- 埋め込みを計算します(Cursor独自のモデルまたはOpenAIを使用)。
- ベクトルデータベース(ローカルまたはクラウド)に保存します。
- チャット中に、自動的に関連するコードを検索してコンテキストに挿入します。
@構文。@file.py、@Codebase、および@Docsを使用して、明示的な参照を行います。
A.3 プロンプトキャッシュの利用
パート#10 A.4で説明されているプロンプトキャッシュは、コーディングエージェントで特に役立ちます。
CLAUDE.mdとシステムプロンプトをキャッシュします。これらはすべてのセッションで繰り返されます。- 繰り返し読み込まれる大きなファイルをキャッシュします。
- Anthropicの一時的なキャッシュは、自動的に適用されます。
効果:大規模なプロジェクトセッションのコストとレイテンシーを削減します。
A.4 ツール使用ループの最適化
各エージェントステップのコストは乗算されます。これは、最適化のための重要な領域です。
- 並列ツール呼び出し:独立したツール呼び出しを並列化します。Claudeは最近、これをサポートしました。
- ツール結果の圧縮:大きな結果(ファイルリストなど)を要約し、コンテキストに含めます。
- 早期終了:十分な情報が収集されたら、ループを終了します。
- バックオフによる再試行:ツールが失敗した場合、指数バックオフを使用します。
A.5 コード安全性の検証
エージェントによって作成されたコードには、自動検証のレイヤーが不可欠です。
静的分析:pyright、ruff、mypy。タイプエラー、スタイルに関する問題、および潜在的なバグをチェックします。
テスト実行:pytest。既存のテストがパスすることを確認します。
セキュリティスキャン:bandit、safety。脆弱性をチェックします。
差分レビュー:大規模な変更は、人間が最終的にレビューする必要があります。
Claude Codeのフックとpre-commitを使用して、これを自動化します。
A.6 マルチリポジトリとモノリポジトリ戦略
モノリポジトリ:大規模な組織の標準です。Bazel、Nx、Turborepo。.gitignoreと.cursorignoreを使用して、エージェントが関連部分のみをインデックスするようにします。
マルチリポジトリ:各リポジトリに対して個別のセッションを作成します。クロスリポジトリの変更を順番に処理します。
A.7 プロンプトインジェクションに対する防御(コードコンテキスト)
パート#7で説明されているプロンプトインジェクションのリスクは、コードにも存在します。
- README、Issue、およびコメントに埋め込まれた悪意のある指示。
- Web検索結果からのインジェクション。
- オープンソースの依存関係のコード内の指示。
防御:
- ユーザーリクエストとファイルコンテンツを明確に区別します。
- エージェントに、ファイルコンテンツ内の「システム指示」を無視するようにトレーニングします。
- シェル実行の結果は、データとしてのみ扱います。
Claude CodeとCursorは、これらの脅威を認識して防御するようにトレーニングされています。
A.8 パフォーマンスベンチマーク
SWE-Bench:GitHubの問題を正常に解決した割合。パート#9 A.10。 HumanEvalとMBPP:正しい関数実装の割合。 コード推論ベンチマーク:コードの理解とリファクタリングに関わるタスク。
2025年現在、Claude Sonnet、Opus、GPT-4o、GPT-3、およびGemini 2.5と3は、トップパフォーマーの1つです。ただし、実際のユーザー満足度は、ベンチマークランキングと異なる場合があります。
A.9 チーム導入戦略
フェーズ1:個人の使用(1〜2人)。CursorとCopilotから始めます。 フェーズ2:チームパイロット(5〜10人)。共有ルールとワークフローを定義します。 フェーズ3:組織全体の展開。ライセンス、ガバナンス、および監査を管理します。
リスク管理:
- IPの漏洩を防ぎます(エンタープライズプランを使用)。
- 誤ったコードの展開を防ぎます(必須のレビューを強制します)。
- スキル低下を防ぎます(継続的なトレーニングとペアリングを提供します)。
A.10 今後の方向性
自律型エンジニアリングエージェント:Issueからプルリクエストまで、タスクを自律的に完了します(例:Devin)。
長期的計画:数日または数週間かけて、プロジェクトを自律的に管理します。
マルチモーダル理解:スクリーンショット、図、およびビデオを理解します。
自己改善:繰り返し、独自のコードをレビューおよび改善します。
生物学に特化したエージェント:生物学のドメイン知識を組み込みます。実験の設計、分析、および論文の作成を統合します。
参考文献
この記事で紹介されているすべての内容、シナリオ、類推、図は、BioPlaygroundによって作成されました。以下は、これらの概念を理解するのに役立つ外部リソースです。
- Claude Code: claude.com/claude-code (Anthropic公式)
- Cursor: cursor.com
- Windsurf: codeium.com/windsurf
- GitHub Copilot: github.com/features/copilot
- Zed: zed.dev
- Continue.dev: continue.dev
- Aider: aider.chat
- Devin (Cognition): cognition.ai
- MCP: modelcontextprotocol.io
- SWE-Bench: swebench.com
- AIコーディングのベストプラクティス: Anthropic、Cursor、およびGitHubの公式ガイド
- Simon Willisonブログ: simonwillison.net/tags/llms — AIコーディングのトレンドニュースレター
AIコーディングエージェントの現状は、第14章にまとめられています。第15章では、これまでのすべての内容を実際のバイオ研究室のワークフローに統合する方法をまとめます。
次の概念
- 第15章
bio-ai-integration— フェーズ4:第1章から第14章までの内容を、バイオ研究室の実用的なワークフローに統合します。