# デスクトップアプリ：推奨構成

> 作成：2026年9月。前提：PHPは選択肢から除外。個人の既定であり、プロジェクト固有の要件・既存資産・チームの制約と食い違う場合はそちらを優先する。
> バージョン番号は書いていない。採用時は各ツールの最新安定版を確認して使う。料金も記載していないので、各サービスの最新の料金ページで確認する。

前提（既定の条件）：外部の制約＝なし
案件の条件が前提と違う場合は、下の「条件が違うとき」で該当する行を確認する。

## 推奨：Tauri
- UIはWeb技術、裏側はRustで軽量なバイナリになるTauri（§2-9）

## 構成

### 構成
| レイヤー | 採用 |
|---|---|
| 構成 | **Tauri**（UIはWeb技術、裏側はRust） |
| フロント | **React＋Vite＋TanStack Router** |

## 運用の内訳
- 自分で書く：Tauri、React、Vite、TanStack Router

## 条件が違うとき（既定との差分）
- 外部の制約＝Microsoft／Azure中心：推奨が「C#（.NET）」になる／構成＝C#（.NET）／SDK＝.NET（LTS）をmiseで管理／テスト＝xUnit ＋ NSubstitute

## §26-1 共通の準備

```bash
# 言語・ツールのバージョン固定（使う言語だけ）
mise use node@lts pnpm@latest
mise use go@latest
mise use ruby@latest
mise use python@latest uv@latest

# Gitフックと依存更新
pnpm add -D lefthook && pnpm exec lefthook install
# renovate.json を置き、GitHubでRenovateアプリを有効化する
```

## §26-11 その他の言語

```bash
# Rust（Web API）
cargo new app && cd app
cargo add axum serde --features serde/derive
cargo add tokio --features full
cargo add sqlx --features runtime-tokio,postgres
# Rust（デスクトップ）
pnpm create tauri-app@latest
# Kotlin（Spring Boot）
curl https://start.spring.io/starter.zip \
  -d language=kotlin -d type=gradle-project-kotlin \
  -d dependencies=web,jooq,flyway,postgresql,actuator \
  -o app.zip
# C#（ASP.NET Core）
dotnet new webapi -n App
```

## 次に読む
- §2-9: https://stackbook.kom3da.dev/s/2.md（「### 2-9.」の節）
- §2-5: https://stackbook.kom3da.dev/s/2.md（「### 2-5.」の節）
- §23: https://stackbook.kom3da.dev/s/23.md
- §24: https://stackbook.kom3da.dev/s/24.md
- §25: https://stackbook.kom3da.dev/s/25.md
