【入門＋実践】Dev Container × C# × AIエージェントで始める Web API 開発環境構築ガイド

## はじめに

本記事では、話題のAIエージェント「Cline」とDev Containerを組み合わせ、ASP.NET Core（C#）Web APIの開発環境を構築するプロセスを整理しています。

単なるローカル環境の立ち上げにとどまらず、以下の観点を重視して構成しています。

- AI駆動開発との親和性を意識した環境構築の工夫
- チーム開発を見据えた、再現性とポータビリティのある開発基盤
- 保守性・拡張性を考慮したツール選定と構成

特に、Dev Containerによるコンテナベースの開発環境は、メンバー間での環境差異を排除し、プロジェクトの立ち上げスピードを大きく向上させます。
また、初学者の方でも迷わず取り組めるように、各手順において実際に使用したコマンドや、生成されるコード・設定ファイルの中身も丁寧に記載しています。

今回のまとめが、同様の課題に取り組む方々の参考になれば幸いです。

## 前提

- 本記事は筆者個人の学びや見解に基づいており、所属する会社や組織の公式な見解、方針を反映するものではありませんので予めご了承ください。
- 内容は2025年6月時点の情報を基にしているため、今後のバージョンアップや技術の進化によって状況が変わる可能性があります。最新情報は公式ドキュメント等をご参照ください。
- まだまだ勉強中の身であり、内容の正確性には万全を期しているつもりですが、誤りが含まれている可能性もあります。もしお気づきの点があれば、コメント等で教えていただけるととても嬉しいです。

## 技術構成

この記事では、Web APIの開発環境構築にフォーカスし、以下の技術スタックを使用しています。

| 項目                 | 技術・ツール                |
| -------------------- | --------------------------- |
| IDE/エディター       | Visual Studio Code (VSCode) |
| 開発環境             | Dev Container               |
| AIツール             | Cline、Gemini API           |
| プログラミング言語   | C#                          |
| ランタイム／SDK      | .NET8                       |
| フレームワーク       | ASP.NET Core                |
| テストフレームワーク | xUnit                       |
| パッケージ管理       | NuGet                       |
| CLIツール            | .NET CLI                    |

## 本記事の対象読者

以下のような読者を想定しています。

- AIエージェントを活用したAI駆動開発を、安全で再現性の高い環境（Dev Container）で無料で試してみたい個人開発者や初学者の方
- 普段はVisual Studioを使用しているが、VS Codeでの開発に興味がある.NETユーザー
- ASP.NET CoreやC#を使ったWeb API開発環境の構築を、ローカル環境で手軽に学んでみたい方

## 本題

前置きが長くなってしまいましたが、いよいよ本題に入っていきます。
ここからは、上記の技術を使ってどのようにWeb APIの開発環境を構築していくのか、順を追って丁寧に解説していきます。

### Part 1. Dev Containerで環境構築

Dev Containerを使わない場合は、[こちらの手順](#net開発環境のセットアップ)から読み始めてください。

#### Dev Containerについて

**Dev Containerとは？**

Dev Containerは、VS CodeがDockerコンテナを開発環境として直接扱えるようにする仕組みです。
プロジェクト単位で依存関係やツール類を隔離できるため、複数人でも同一の環境を手軽に再現できるほか、ホスト環境に影響を与えずに開発が行えます。
詳しくは、[Visual Studio Code Dev Containersの公式ドキュメント](https://code.visualstudio.com/docs/devcontainers/containers)をご覧ください。

**なぜDev Container × AI駆動開発なのか？**

AIが生成するコードやコマンドには、意図しない操作や想定外の変更が含まれることがあり、ホスト環境でそのまま実行するのはリスクが伴います。
その点、Dev Containerを使えば、開発環境をホストOSから完全に分離できるため、スクラップ＆ビルドがしやすく、AIに自由に操作を任せやすくなります。
結果として、心理的安全性の高い試行錯誤が可能になるのが、Dev Container最大の強みです。

#### Dev Containerのセットアップ

前提：Docker Desktopがインストールされている必要があります。

先ずはVSCodeの拡張機能から[Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)をインストールします。

続いて、コマンドパレット(Ctrl+Shift+P)を開き、「Dev Containers: Add Dev Container Configuration Files...」を選択します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410227/13813fb0-5817-4f69-bcad-13df66e2505a.png)

「ワークスペースに構成を追加する」を選択します。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410227/b20c50f2-a182-4d9c-bbed-1395c6e6856b.png)

「C#(.NET)」を選択します。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410227/7ede00e2-c67e-4dba-87e8-dccc369aa36e.png)

現在LTSの.NET8の「8.0」を選択します。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410227/4811e853-16ea-464e-b500-26d1793217c0.png)
.NETのバージョンのサポート期間は[こちらのページ](https://dotnet.microsoft.com/ja-jp/platform/support/policy/dotnet-core)をご確認ください。

追加でインストールしたい機能があれば選択します。
今回はそのまま「OK」を選択します。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410227/f9c9df74-e388-4cd6-8b51-28f22afaaed9.png)

オプションのファイル/ディレクトリも未選択で「OK」を選択します。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410227/a65d3d97-2d8e-434a-9a9c-6fe85dc23fec.png)

プロジェクトフォルダに`.devcontainer/devcontainer.json`が作成されました。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410227/21a84751-f659-44d9-b2e3-4b45efd2ef5c.png)

```json
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/dotnet
{
    "name": "C# (.NET)",
    // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
    "image": "mcr.microsoft.com/devcontainers/dotnet:1-8.0"

    // Features to add to the dev container. More info: https://containers.dev/features.
    // "features": {},

    // Use 'forwardPorts' to make a list of ports inside the container available locally.
    // "forwardPorts": [5000, 5001],
    // "portsAttributes": {
    //        "5001": {
    //            "protocol": "https"
    //        }
    // }

    // Use 'postCreateCommand' to run commands after the container is created.
    // "postCreateCommand": "dotnet restore",

    // Configure tool-specific properties.
    // "customizations": {},

    // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
    // "remoteUser": "root"
}
```

VSCodeの左下のアイコン（><）をクリックし、「コンテナーで再度開く」を選択すると、Dev Container環境に切り替わります。
(\*)事前にDocker Desktopを起動する必要があります。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410227/98e16b95-5c22-4493-8712-80fa755fc273.png)

C#の拡張機能がインストールされていますね。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410227/5a7e16e1-7614-4e72-bfb2-c527ff1969b4.png)

続いて、`devcontainer.json`をカスタマイズして、Dev Container初回起動時に.NET ツールとVSCodeの拡張機能を自動インストール、ローカル開発用のHTTPS証明書を登録するようにします。
(\*).NETツールやVSCodeの拡張機能の詳細は後述します。

```json
{
    "name": "C# (.NET)",
    "image": "mcr.microsoft.com/devcontainers/dotnet:1-8.0",
    // コンテナ初回起動後に実行するコマンド
    "postCreateCommand": "dotnet restore && dotnet tool restore && dotnet dev-certs https --trust",
    "customizations": {
        "vscode": {
            "extensions": [
                // VSCodeの拡張機能
            ]
        }
    }
}
```

最後にターミナルから.NET CLIが使えることを確認します。

``` bash
dotnet --version
```

![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410227/83663b22-4bed-4c1f-9bbe-302762b7e08d.png)

Dev Containerの設定は以上となります。
Dev Container環境を終了するには、左下のアイコン（><）をクリックし、「リモート接続を終了する」を選択します。

### Part 2. ASP.NET Core Web APIの環境構築

#### .NET開発環境のセットアップ

こちらは、Dev Containerを使わない人向けの解説です。
Dev Containerを使用する場合は、[こちらの手順](#プロジェクト作成)から読み始めてください。

最近注目されているバージョン管理ツール`mise`を使って、.NET8をインストールする手順を紹介します。
miseを使うことで、プロジェクトごとに.NETのバージョンを簡単に切り替えることができます。

```sh
# Homebrewでmiseをインストール
brew install mise
# miseコマンドの確認
mise --version
# dotnetプラグインを追加
mise plugins install dotnet
# .NET8.0.410をインストール
mise install dotnet@8.0.410
# .NET CLIの確認
dotnet --info
```

プロジェクトディレクトリ直下に`mise.toml`を作成し、使用する.NETのバージョンを明示します。
これにより、該当ディレクトリ配下では常にこのバージョンの.NET SDKが有効になります。

``` txt
[tools]
dotnet = "8.0.410"
```

.NETのビルドや実行に使われるSDKバージョンは、`global.json`で明示的に指定できます。

``` json
{
  "sdk": {
    "version": "8.0.410"
  }
}
```

#### プロジェクト作成

.NET CLIを使って、ソリューション、Web APIおよび単体テスト用のプロジェクトを作成します。
.NET の主要なテストフレームワークには以下のようなものがありますが、今回はxUnitを使用します。

- MSTest
- xUnit
- NUnit

プロジェクト作成時のコマンドは、以下の公式ドキュメントを参考にしています。

- [チュートリアル: ASP.NET Core を使用してコントローラー ベースの Web API を作成する](https://learn.microsoft.com/ja-jp/aspnet/core/tutorials/first-web-api?view=aspnetcore-9.0&tabs=visual-studio-code)
- [dotnet テストと xUnit を使用した .NET での C# の単体テスト](https://learn.microsoft.com/ja-jp/dotnet/core/testing/unit-testing-csharp-with-xunit)

``` bash
# ソリューションファイルを作成。TodoApiは任意の名前に変更してください。
dotnet new sln -n TodoApi
# Web APIのプロジェクトを作成。TodoApi.Controllerは任意の名前に変更してください。
dotnet new webapi --use-controllers -o src/TodoApi.Controller
# xUnitのプロジェクトを作成。TodoApi.Testsは任意の名前に変更してください。
dotnet new xunit -o test/TodoApi.Tests
# xUnitプロジェクトからWeb APIプロジェクトを参照
dotnet add ./test/TodoApi.Tests/TodoApi.Tests.csproj reference ./src/TodoApi.Controller/TodoApi.Controller.csproj
# ソリューションファイルにプロジェクトを追加
dotnet sln add ./src/TodoApi.Controller/TodoApi.Controller.csproj
dotnet sln add ./test/TodoApi.Tests/TodoApi.Tests.csproj
```

続いて、プロジェクトのルートディレクトリ直下に`Directory.Build.props`を作成します。
csprojの共通の設定を集約します。

``` xml
<Project>
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>
</Project>
```

最終的なcsprojは以下の通りです。

``` xml
<!-- TodoApi.Controller.csproj -->
<Project Sdk="Microsoft.NET.Sdk.Web">
  <ItemGroup>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
  </ItemGroup>
</Project>
```

``` xml
<!-- TodoApi.Tests.csproj -->
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="coverlet.collector" Version="6.0.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
    <PackageReference Include="xunit" Version="2.5.3" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" />
  </ItemGroup>
  <ItemGroup>
    <Using Include="Xunit" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\src\TodoApi.Controller\TodoApi.Controller.csproj" />
  </ItemGroup>
</Project>
```

ビルドや単体テストが問題なく実行できることを最終確認します。

``` bash
# ビルド確認
dotnet clean
dotnet build
# テスト確認
dotnet test
```

#### パッケージ・ツールの導入

.NETでは[NuGet(ヌゲット)](https://www.nuget.org/)という公式のパッケージマネージャーを使って、サードパーティ製ライブラリやツールなどのエコシステムをプロジェクトに簡単に導入・管理することができます。

##### .NETツールの導入

.NETツールは、コンソールアプリケーションを含む特殊なNuGetパッケージです。
dotnetコマンドで様々なことができるようになります。
以下のコマンドで導入できます。

``` bash
# マニフェストファイル作成
dotnet new tool-manifest
# ツールの導入（例としてdotnet-outdated-toolを導入）
dotnet tool install dotnet-outdated-tool
# dotnet-outdated-toolを使用
dotnet outdated
```

`.config/dotnet-tools.json`が作成されます。
詳しくは、[dotnet ツールのインストール](https://learn.microsoft.com/ja-jp/dotnet/core/tools/dotnet-tool-install)をご覧ください。

##### NuGetパッケージのインストール

例としてNLogをWeb APIのプロジェクトにインストールします。

``` bash
dotnet add src/TodoApi.Controller package NLog
```

TodoApi.Controller.csprojが以下のように更新されます。

``` xml
<Project Sdk="Microsoft.NET.Sdk.Web">
  <ItemGroup>
    <PackageReference Include="NLog" Version="5.5.0" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
  </ItemGroup>
</Project>
```

#### VSCode拡張機能の整備

##### C#開発で使う拡張機能

- [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp)
  - C#開発に必須の拡張機能です。
- [.NET Install Tool](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.vscode-dotnet-runtime)
  - C# Dev KitやC#拡張機能に依存する.NET SDK/Runtimeを自動で取得するための補助的拡張機能です。
- [C# Dev Kit](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit)
  - ファイルエクスプローラーに「SOLUTION EXPLORER」が追加され、Visual Studioライクな体験を提供してくれます。
    - GUIでビルドやクラスの追加ができるようになります。
  - 商用利用時はVisual Studioのライセンスが必要です。個人利用またはOSS開発では無料で利用できます。ライセンスの詳細は[こちらのページ](https://visualstudio.microsoft.com/ja/vs/compare/)を参照してください。
- [IntelliCode for C# Dev Kit](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.vscodeintellicode-csharp)
  - AIによるコード補完を提供してくれます。
  - 他のAIツールを使用する場合、必要ないかもしれません。
- [C# Extensions](https://marketplace.visualstudio.com/items?itemName=kreativ-software.csharpextensions)
  - ファイルエクスプローラー上でC#のファイルを簡単に追加できるようになります。
  - C# Dev Kitを使用する場合、役割が競合するので必要なさそうです。
- [.NET Core Test Explorer](https://marketplace.visualstudio.com/items?itemName=formulahendry.dotnet-test-explorer)
  - テストエクスプローラーを提供します。
  - C# Dev Kitでもテストエクスプローラーが提供されるため、必要ないかもしれません。
- [C# XML Documentation Comments](https://marketplace.visualstudio.com/items?itemName=k--kato.docomment)
  - 「///」とタイプするとドキュメントコメントを生成してくれます。
  - 上述のC#でドキュメントコメントが付与される機能があるため必要ないです。

##### その他おすすめ

- [Cline](https://marketplace.visualstudio.com/items?itemName=saoudrizwan.claude-dev)
  - VSCode上で利用できるOSSのAIエージェントです。設定や使用方法は後述します。
- Japanese Language Pack for Visual Studio Code
  - VSCodeのUIを日本語化します。
- EditorConfig
  - チーム全体でコードスタイルを統一するために使用します。設定は後述します。
- Code Spell Checker
  - スペルミスを検出してくれます。設定は後述します。
- Error Lens
  - エラーや警告をハイライトします。
- Git Graph
  - VSCodeでGitクライアントとして使用します。
- Git History
  - カーソル位置のコントリビューターや変更内容を確認しやすいです。
- Postman
  - APIの動作確認やテストに使用します。
- REST Client
  - APIの動作確認やテストに使用します。
- vscode-icons
  - フォルダやファイルのアイコンにより、視認性が向上します。

##### 拡張機能のセットアップ

上述の拡張機能を`devcontainer.json`に指定します。

``` json
{
    "name": "C# (.NET)",
    "image": "mcr.microsoft.com/devcontainers/dotnet:1-8.0",
    // コンテナ初回起動後に実行するコマンド
    "postCreateCommand": "dotnet restore && dotnet tool restore && dotnet dev-certs https --trust",
    "customizations": {
        "vscode": {
            "extensions": [
                // VSCodeの拡張機能
                "ms-dotnettools.csharp",
                "ms-dotnettools.vscode-dotnet-runtime",
                "ms-dotnettools.csdevkit",
                "saoudrizwan.claude-dev",
                "editorconfig.editorconfig",
                "streetsidesoftware.code-spell-checker",
                "mhutchie.git-graph",
                "donjayamanne.githistory",
                "postman.postman-for-vscode",
                "humao.rest-client",
                "vscode-icons-team.vscode-icons"
            ]
        }
    }
}
```

プロジェクト内で推奨する拡張機能を定義できます。
Dev Container接続前に使用する拡張機能を`.vscode/extensions.json`に指定しておきます。

``` json
{
    "recommendations": [
        "ms-ceintl.vscode-language-pack-ja",
        "ms-vscode-remote.remote-containers"
    ]
}
```

#### コード分析やフォーマッタの整備

AI駆動開発では、AIアシスタントや自動生成ツールがコードの一部または大部分を生成する場面が増えています。
こうした環境下では、開発のスピードは向上する一方で、品質や保守性の面で課題が浮上しがちです。

- コードスタイルの一貫性の欠如による品質の低下
  - 開発者や複数のAIツールにより出力されたコードは、スタイルや記述パターンにバラつきが生じやすく、プロジェクト全体の品質を下げる原因になります。
- 保守性の低下
  - 読みにくいコードや、チームの規約に沿わない記述が増えることで、レビューや将来的な改修のコストが高くなります。
- バグや脆弱性の混入
  - AIが提案したコードに、非推奨APIの使用や潜在的なバグ、セキュリティリスクが含まれていることもあり得ます。

これらのリスクを防ぎ、コード品質と保守性を高い水準で維持するためには、静的解析やフォーマッタの整備が不可欠です。

##### EditorConfig

EditorConfigは、複数の開発者が様々なエディタやIDEを使用して同じプロジェクトに取り組む際に、コーディングスタイルの一貫性を維持するのに役立ちます。
プロジェクトのルートディレクトリに`.editorconfig`を作成し、以下のように記述します。

``` yaml
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = true
[*.{cs}]
max_line_length = 120
trim_trailing_whitespace = true
# 非推奨APIの使用に警告を出す
dotnet_diagnostic.CS0618.severity = warning
```

詳しくは[EditorConfigの公式ドキュメント](https://editorconfig.org/)をご覧ください。

##### C#専用のコード分析やフォーマッタ

C#では、以下のようなコード分析やフォーマッタのツールがあります。

- dotnet-format
  - .NET公式のコードフォーマッタです。`.editorconfig`ファイルからスタイル設定を読み取り、`dotnet format`コマンドでフォーマットします。
- CSharpier
  - Prettier風のC#専用フォーマッタです。
- StyleCop.Analyzers
  - C#のコードのスタイルと書式の一貫性を維持する静的コード分析ツールです。`stylecop.json`やルールセットファイル（`.ruleset`）からカスタマイズできます。
- .NET Analyzer
  - .NET SDKに標準搭載のコードアナライザーです。
- Roslyn Analyzer
  - `.editorconfig`ファイルやルールセットファイル（`.ruleset`）を使用して、コードの品質やスタイルに関する問題をカスタマイズできます。
- xunit.analyzers
  - xUnit用のコードアナライザーです。xUnit.net v2.3.0以降はデフォルトで参照されます。

本記事では以下を使用します。

- dotnet-format
- .NET Analyzer
- Roslyn Analyzer

.NET Analyzerを有効化、Roslyn Analyzerをセットアップします。
`Directory.Build.props`を以下のように変更します。

``` xml
<Project>
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>
  <PropertyGroup>
    <EnableNETAnalyzers>true</EnableNETAnalyzers>
    <AnalysisLevel>8.0-Recommended</AnalysisLevel>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Roslynator.Analyzers" Version="4.13.1">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Roslynator.CodeAnalysis.Analyzers" Version="4.13.1">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Roslynator.Formatting.Analyzers" Version="4.13.1">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
  </ItemGroup>
</Project>
```

ルールは`.editorconfig`で一元管理するのがおすすめです。
ルールの内容はOSSやチームの方針を参考にして調整しましょう。

最後に以下のコマンドを実行して確認します。

``` bash
# NuGetパッケージの解決・ダウンロード・キャッシュを実行
dotnet restore
# コード分析実行（問題があればエディタ上で表示されます。Error Lensによりハイライトで警告やエラーが表示されます。）
dotnet build
# フォーマッタ実行
dotnet format
```

C#のコードアナライザーの設定はこちらの記事が参考になりました。
[【C#】初心者におすすめ！コードアナライザーを使おう！【.NET】](https://zenn.dev/inuinu/articles/c60abf13d5f47a)

##### Code Spell Checker

Code Spell Checkerを導入することでファイル内のスペルミスを自動で検出できます。
プロジェクトのルートディレクトリに`cspell.yml`を作成し、以下のように記述します。

``` yaml
version: "0.2"
language: en
ignorePaths:
  - cspell.yml
  - .git/**
  - .vscode/**
ignoreRegExpList: []
words: []
flagWords: []
ignoreWords: []
dictionaries:
  - csharp
languageSettings:
  - languageId: csharp
    dictionaries:
      - csharp
dictionaryDefinitions:
  - name: []
```

詳しくは[CSpellの公式ドキュメント](https://cspell.org/)をご覧ください。

#### その他

##### .gitignore

`.gitignore` は、Gitによるバージョン管理から除外したいファイル（ビルド成果物、一時ファイル、ユーザー設定ファイルなど）を指定するための設定ファイルです。通常、プロジェクトのルートディレクトリに配置します。
以下のツールを使うと、目的に合った `.gitignore` を簡単に生成できます。

- [gitignore.io](https://www.toptal.com/developers/gitignore)
  - `VisualStudio`、`CSharp`などと検索してテンプレートを生成できます。
- [gitignore](https://github.com/github/gitignore)
  - C#では`VisualStudio.gitignore` を利用します。

##### VSCodeの詳細設定

プロジェクトディレクトリ内に `.vscode/settings.json` を作成し、以下のようにテーマやアイコンを設定します。  

``` json
{
  // フォルダ・ファイルのアイコンテーマ
  "workbench.iconTheme": "vscode-icons",
  // エディタの配色テーマ
  "workbench.colorTheme": "Visual Studio 2019 Dark",
  "[csharp]": {
    // C#のフォーマッタ指定
    "editor.defaultFormatter": "ms-dotnettools.csharp",
    // 自動フォーマット
    "editor.formatOnType": true,
    "editor.formatOnSave": true
  }
}
```

プロジェクトディレクトリ内に`.vscode/launch.json` と`.vscode/tasks.json` を作成し、アクティビティバーの「実行とデバッグ」から実行できるように設定します。

``` json
// launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "ASP.NET Core Web API",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/TodoApi.Controller/bin/Debug/net8.0/TodoApi.Controller.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/TodoApi.Controller",
            "stopAtEntry": false,
            "serverReadyAction": {
                "action": "openExternally",
                "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
            },
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            },
            "sourceFileMap": {
                "/Views": "${workspaceFolder}/Views"
            }
        }
    ]
}
```

``` json
// tasks.json
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build",
      "command": "dotnet",
      "type": "process",
      "args": [
        "build",
        "${workspaceFolder}/TodoApi.sln"
      ],
      "problemMatcher": "$msCompile",
    }
  ]
}
```

「実行とデバッグ」からデバッグの開始ボタンを押下し、ASP.NET Core Web APIを起動します。
ブラウザのアドレスバーに「<https://localhost:{ポート番号}/swagger/index.html」>と打ち込み、Swagger UIが表示されれば成功です。
「{ポート番号}」はデバッグコンソールに表示されたポート番号に置き換えてください。

.NET CLIからASP.NET Core Web APIを起動する方法もあります。

``` bash
dotnet build
dotnet run --project ./src/TodoApi.Controller
```

### Part 3. AI駆動開発のためのAIツール導入＆紹介

#### AIツールの導入

本記事ではClineでGemini APIを使用し、AI駆動開発をする方法を紹介します。
Gemini APIは執筆時点で無料枠が提供されています。
詳しくは[こちら](https://ai.google.dev/gemini-api/docs/pricing?hl=ja)をご覧ください。

##### Gemini API Keyの発行手順

以下の手順でAPI Keyを発行します。

1. [Google AI Studio](https://aistudio.google.com/prompts/new_chat)にアクセスします。
2. Googleアカウントでログインします。
3. [Get API key](https://aistudio.google.com/apikey)で「APIキーを作成」→「Gemini API」→「既存のプロジェクトでAPIキーを作成」の手順で進めます。
4. APIキーをコピーします。（※以降の手順で使用します。）

##### Clineの初期設定

1. VSCodeのアクティビティバーの「Cline」アイコン→設定ボタンを押下します。
2. 「API Provider」を「Google Gemini」に変更します。
3. 「Gemini API Key」にコピーしたAPIキーをペーストします。
4. 「Model」を指定します。
   - 無料枠のモデルは[Gemini Developer API の料金](https://ai.google.dev/gemini-api/docs/pricing?hl=ja)からご確認ください。
5. 「Save」ボタンを押下します。
6. チャット欄に適当なプロンプトを送信し、回答が返ってきましたら接続成功です。

#### その他AIツールの紹介

上述したAIツール以外にもおすすめがたくさんありますが、ボリュームが大きくなってしまうため、詳細は割愛し、以下のGitHub Wikiにて随時まとめていく予定です。
[AI駆動開発のWiki](https://github.com/Hitamuki/bookmark-manager-app/wiki/AI%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA)

また、各ツールを一覧化した内容については、別記事で詳しく紹介する予定です。以下はその一部です。

- Roo Code
- GitHub Copilot
- Claude Code
- Gemini Code Assist
- Amazon Q
- Continue
- BLACKBOXAI
- Bolt.new
- v0 by Vercel
- Cursor
- Windsurf
- Google Jules
- Devin

### Part 4. Web APIの動作確認

最後にテンプレートのWeb APIが正しく動作しているか疎通確認をします。
以下のような方法で簡単に疎通できます。

- Swagger UI
- Postman
- REST Client

今回はVSCode拡張機能のREST Clientを使います。
`WeatherForecastController.rest`を作成し、以下のように記述します。

``` json
// {ポート番号}は置き換えてください
GET https://localhost:{ポート番号}/WeatherForecast
```

「Send Request」をクリックし、「200 OK」がレスポンスされたらWeb APIの疎通は成功です。

## 終わりに

初めての投稿となりますが、どなたかの参考になれば幸いです。
投稿後も、内容の粒度や表現を見直しながら、随時校正・加筆を行っていく予定です。

これまで約3年間、フロントエンドではAngular、バックエンドではC#を用いて、Webアプリケーション中心に開発に携わってきました。
現在はAIを活用しつつ、フルスタックTypeScript（Next.js、NestJS、React Native）や、クラウド技術（AWS、Terraform等のIaC）を用いたWeb／モバイルアプリの開発に携わりたいと考えており、2025年9月以降を目処に転職活動を開始する予定です。
技術的なアウトプットも、今後引き続き GitHub、Qiita、Zenn などで発信していくつもりですので、ご興味を持っていただけましたら、ぜひフォローしていただけると嬉しいです！