概要
本シリーズでは、Apple Silicon搭載のmacOS上で .NET 9 Webアプリ を開発し、
最終的に AWS Fargate (Copilot) で公開するまでを実践します。
第1回では、ローカル開発環境の構築 にフォーカスし、
実際に遭遇したトラブルやMシリーズ特有の注意点を丁寧に説明します。
目次
- 1. 開発環境のゴール
- 2. Homebrew の入手とインストール
- 3. Xcode(本体)の入手とインストール
- 4. .NET 9 SDK の入手とインストール
- 5. Docker Desktop の入手とインストール
- 6. Git の準備とリポジトリ取得
- 7. VS Code の入手・インストールと推奨拡張機能
- 8. PostgreSQL コンテナの起動確認(リポジトリ取得後に実施)
- 9. AWS CLI と Copilot CLI の入手とインストール
- 10. Dockerfile / docker-compose.yml 詳解
- 11. 次回予告
1. 開発環境のゴール
最終的な構成イメージは次の通りです。
開発フェーズ(ローカル)
├─ macOS Mシリーズ + Docker + VS Code (.NET 9 WebApp)
├─ PostgreSQL (ローカルコンテナ)
└─ GitHub (ソース管理)
デプロイフェーズ(クラウド)
├─ AWS Copilot → ECS Fargate
└─ ALB経由でHTTP通信(第3回でHTTPS化)
2. Homebrew の入手とインストール
macOS の標準パッケージマネージャ。
以降のツール導入でも使用します。
- 入手先: https://brew.sh/
インストール手順
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Apple Silicon 用パス設定:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
確認:
brew -v
# Homebrew 4.x.x と表示されればOK
3. Xcode(本体)の入手とインストール
.NET 9 や Docker ビルド時のネイティブ依存ライブラリに必須です。
Command Line Tools ではなく Xcode 本体をインストールします。
入手方法
-
App Store から:
- App Store を開く
- 検索バーで「Xcode」
- 「入手」をクリック
-
Apple Developer公式 から:
- https://developer.apple.com/xcode/
- Apple ID でログイン → 「Download Xcode」から dmg 版を入手
インストール方法
- App Store 版は「入手」で自動インストールされます。
- dmg 版は
/Applicationsにドラッグ&ドロップして配置。
初期セットアップ
初回起動時にライセンス同意と初期化が必要です。
sudo xcodebuild -license accept
sudo xcodebuild -runFirstLaunch
sudo xcode-select --switch /Applications/Xcode.app
確認:
xcode-select -p
# /Applications/Xcode.app/Contents/Developer が表示されればOK
4. .NET 9 SDK の入手とインストール
Microsoft 公式からダウンロードします。
- 入手先: https://dotnet.microsoft.com/
→ 「Download .NET 9」 → 「macOS Arm64」
インストール方法(Homebrew経由でも可)
brew install --cask dotnet-sdk
確認:
dotnet --info
# .NET SDK 9.x / OS: macOS ARM64 が表示されればOK
5. Docker Desktop の入手とインストール
Docker 環境を構築します。
- 入手先: https://www.docker.com/products/docker-desktop/
- 「Mac with Apple chip」を選択
インストール手順
-
.dmgファイルを開く - 指示に従って
/Applicationsにインストール - 初回起動時に権限付与(パスワード入力あり)
確認:
docker version
docker compose version
出力例:
Client: Docker Desktop 4.33.x
Server: Docker Engine - Community
6. Git の準備とリポジトリ取得
Xcode インストール済みなら git は利用可能です(なければ brew install git)。
リポジトリ取得(重要: PostgreSQL関連ファイルを含む)
cd ~
git clone https://github.com/eyes9919/dotnet9-webapp.git
cd dotnet9-webapp
動作確認:
cd src/WebApp
dotnet build
dotnet run
# → http://localhost:8080 にアクセス
7. VS Code の入手インストールと推奨拡張機能
入手先
インストール方法
- ダウンロードした
.zipまたは.dmgを展開 -
/Applicationsに配置
推奨拡張機能
| カテゴリ | 拡張機能名 | 概要 |
|---|---|---|
| C# | C# | Microsoft公式 .NET 9対応 |
| C# | C# Dev Kit | プロジェクトナビゲーション強化 |
| C# | IntelliCode | コーディング補完・推論 |
| Docker | Docker | コンテナ管理 |
| YAML | YAML | Copilot manifest編集 |
| AWS | AWS Toolkit | Copilot操作補助 |
| Git | GitLens | 履歴・差分解析 |
| JSON | JSON Tools | 設定ファイル編集 |
| Markdown | Markdown All in One | Qiita記事作成に便利 |
C# 拡張機能の入手方法
- VS Code を起動
- 左の「拡張機能」アイコンをクリック
- 検索バーに「C#」と入力
- 発行元が「Microsoft」となっているものをインストール
- 拡張ID:
ms-dotnettools.csharp
- 拡張ID:
設定例 (settings.json)
{
"dotnet.defaultSolution": "dotnet9-webapp.sln",
"editor.formatOnSave": true,
"files.autoSave": "onFocusChange",
"yaml.format.enable": true
}
8. PostgreSQL コンテナの起動確認(リポジトリ取得後に実施)
必ずリポジトリを取得してから行ってください。
docker-compose.yml と Dockerfile はリポジトリ内に存在します。
docker compose up -d db
docker ps
接続確認:
docker exec -it dotnet9-db psql -U appuser -d appdb
9. AWS CLI と Copilot CLI の入手とインストール
AWS CLI
- 入手先: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
- インストール:
brew install awscli aws --version - 設定:
aws configure # AccessKey / Secret / リージョン / 出力形式を入力
Copilot CLI
- 入手先: https://aws.github.io/copilot-cli/
- インストール:
brew install aws/tap/copilot-cli copilot --version
10. Dockerfile / docker-compose.yml 詳解
docker-compose.yml
services:
db:
image: postgres:18
container_name: postgres-db
platform: linux/arm64 # Apple Silicon
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
ports:
- "5432:5432"
# 永続化(ボリュームでもホストフォルダでもOK)
volumes:
# - ./postgres-data:/var/lib/postgresql/data
- postgres-data18:/var/lib/postgresql/data
- ./pgconf/postgresql.conf:/etc/postgresql/postgresql.conf:ro
command: ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf"]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB} -h 127.0.0.1 -p 5432"]
interval: 5s
timeout: 3s
retries: 5
web:
build:
context: ./src/WebApp
dockerfile: Dockerfile
container_name: dotnet9-webapp
platform: linux/arm64
depends_on:
db:
condition: service_healthy
environment:
# WebApp が Program.cs で読む接続文字列(←ここ超重要)
# Host は "db"(サービス名)、プール/Keepalive は任意
ConnectionStrings__Default: "Host=db;Port=5432;Database=${POSTGRES_DB};Username=${POSTGRES_USER};Password=${POSTGRES_PASSWORD};Pooling=true;Keepalive=30;"
ASPNETCORE_ENVIRONMENT: "Container_Development"
ports:
- "9999:8080" # ホスト5230 -> コンテナ8080(Kestrel)
restart: unless-stopped
# 必要に応じてアプリから DB へ初回マイグレーション実行(アプリ内の db.Database.Migrate() でOK)
# ボリュームを使ってログやアップロードを出したい場合はここに volumes を追加
volumes:
postgres-data18: {}
- db: Postgres16、永続化・ヘルスチェック付。
-
web: .NET9 WebApp。
Host=dbに注意。
Dockerfile
# ===== build stage =====
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /src
COPY WebApp.csproj ./
RUN dotnet nuget locals all --clear
RUN dotnet restore WebApp.csproj
COPY . ./
RUN dotnet publish WebApp.csproj -c Release -o /app/publish --no-restore
# ===== runtime stage =====
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
WORKDIR /app
ENV ASPNETCORE_URLS=http://0.0.0.0:8080
EXPOSE 8080
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "WebApp.dll"]
- マルチステージ構成で軽量化
-
ASPNETCORE_URLS=http://0.0.0.0:8080が必須 - Apple Silicon 対応 (
linux/arm64)
11. 次回予告
第2回では、
VS Code デバッガを使って WebApp × PostgreSQL の連携検証 を行い、
ブレークポイントを活用したローカル開発フローを構築します。