Skip to content

Commit 9a4e038

Browse files
takemi-ohamaclaude
andauthored
docs: ドキュメント整合性修正と競合比較ドキュメント追加 (#6)
* docs: ChatGPT指摘によるドキュメント整合性修正と競合比較ドキュメント追加 REPORT01の指摘に基づく修正: - plugin-registries.md: 'repo sync' を実装と一致する 'repo refresh' に修正 - plugin-dev/quickstart.md: 存在しない 'devbase shell' を 'devbase login' に修正 - plugin-dev/quickstart.md: CONTAINER_SCALE のデフォルト値を実装(2)と一致させる - README.md: snapshot対象を 'ホームボリューム' から '/work ボリューム' に修正 (snapshot-guide.md および実装と整合) - container-operations.md / quickstart.md: php85 イメージを一覧に追加 その他: - docs/comparison.md: 競合ツール比較ドキュメントを新規追加 - .gitignore: issues/ を追加(ローカル作業用ディレクトリ) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: スナップショット保存先パスとrotateデフォルト値の不整合を修正 全ドキュメントレビューで検出した実装との差分を修正: - snapshot-guide.md: スナップショット保存先を 'projects/<project>/backups/' から '\${DEVBASE_ROOT}/backups/'(全プロジェクト共通)に修正 (lib/devbase/snapshot/manager.py:30 と整合) - getting-started.md: プロジェクト構成図の backups/ を devbase ルート直下に移動 - troubleshooting.md: 'du -sh projects/<project>/backups/' を 'du -sh \${DEVBASE_ROOT}/backups/' に修正 - cli-reference.md: 'snapshot rotate --keep' のデフォルト記述を 定数名 'DEFAULT_MAX_GENERATIONS' から実際の値 '3' に変更 (lib/devbase/cli.py:182 の argparse default=3 と整合) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent a22d991 commit 9a4e038

10 files changed

Lines changed: 273 additions & 11 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ plugins/*/
99
projects/*
1010
!projects/.gitkeep
1111
.env.sources.yml
12+
issues/

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ devbaseは、Docker Composeを使った再現性の高い開発環境を提供
1313
- **豊富なツールセット**: Docker CLI、AWS CLI、gcloud SDK、Terraform、Node.js、AI CLIツールがプリインストール
1414
- **複数コンテナの並行開発**: `devbase container scale`で既存コンテナを再起動せずにスケール可能
1515
- **データ永続化**: 名前付きボリュームでコンテナ再起動後もデータを保持
16-
- **スナップショット管理**: ホームボリュームのバックアップ・復元・世代管理
16+
- **スナップショット管理**: `/work` ボリュームの増分バックアップ・復元・世代管理
1717
- **環境変数の自動収集**: `devbase env init`でAWS/Git/GCP認証情報を対話的に設定
1818

1919
## クイックスタート

docs/comparison.md

Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
# 競合ツール比較
2+
3+
devbase と類似カテゴリのツールを「複数リポジトリ管理」「ローカルDocker完結」「AI開発適性」「永続化・世代管理」などの観点で比較し、**どんな課題のときに devbase を選ぶ価値があるか** を整理します。
4+
5+
---
6+
7+
## 1. 比較対象カテゴリ
8+
9+
devbase の隣接ツールはレイヤーが異なります。まずカテゴリ分けします。
10+
11+
```mermaid
12+
flowchart TB
13+
subgraph A[クラウド型 開発環境]
14+
A1[GitHub Codespaces]
15+
A2[Gitpod]
16+
A3[Coder]
17+
A4[Bunnyshell]
18+
end
19+
subgraph B[ローカル型 / セルフホスト型 dev env manager]
20+
B1[Dev Containers 単体]
21+
B2[devbase]
22+
B3[DevPod]
23+
B4[Daytona]
24+
B5[DDEV / Lando]
25+
end
26+
subgraph C[マルチサービス開発オーケストレータ Kubernetes 系]
27+
C1[Tilt]
28+
C2[Skaffold]
29+
C3[DevSpace]
30+
end
31+
subgraph D[VM / 宣言的パッケージマネージャ]
32+
D1[Vagrant]
33+
D2[Nix / devbox / flox]
34+
D3[asdf / mise]
35+
end
36+
B2 -.「複数リポジトリ統合」.-> B3
37+
B2 -.「ローカルで完結」.-> A1
38+
B2 -.「コンテナで隔離」.-> D2
39+
```
40+
41+
---
42+
43+
## 2. 直接的な競合(dev environment manager)
44+
45+
devbase と最も近い位置に立つツール群。devcontainer / Docker / VM ベースで「再現可能な開発環境」を提供します。
46+
47+
### 2.1 DevPod(loft-sh) — 最も近い競合
48+
49+
- **概要**: 「Codespaces のオープンソース版・クライアント専用」を標榜。`devcontainer.json` を入力にして、ローカルDocker / SSH / Kubernetes / AWS EC2 / GCP / Codespaces など**複数のバックエンドプロバイダ**で同じワークスペースを起動できる。
50+
- **強み**: プロバイダ抽象化、devcontainer 標準準拠、IDE非依存。
51+
- **devbase との違い**:
52+
- DevPod は **1ワークスペース = 1リポジトリ** が基本単位。**複数リポジトリの統合管理(plugin/extension配布)の概念は無い**
53+
- devbase は **複数リポジトリ × 並行コンテナ(scale)× 環境変数の3レベル統合** を提供。
54+
- devbase は **AI CLI 同梱 / snapshot 30世代 / `${DEVBASE_ROOT}/.env` 自動収集** が標準。DevPod は素のdevcontainer体験。
55+
- **使い分け**: 単一リポジトリでクラウド/ローカルを切り替えたい → DevPod。複数リポジトリ+AI開発 → devbase。
56+
57+
### 2.2 Daytona
58+
59+
- **概要**: 元はOSSの「self-hosted dev environment manager」だったが、2026年2月のSeries A($24M)で **「AI生成コードを安全に実行するサンドボックス基盤」** へ事業ピボット。現行は AI agent向けのコード実行サンドボックスが主。
60+
- **devbase との違い**:
61+
- 現行 Daytona は **AI agent 向けのサンドボックス実行基盤**。開発者本人の日常的開発環境という用途は二次的。
62+
- devbase は **開発者の日常開発体験**にフォーカス(dev コンテナへの接続・複数リポジトリ管理・snapshot)。
63+
- **使い分け**: AIに任意コードを実行させるサンドボックス基盤が必要 → Daytona。人間の開発者が複数リポジトリで日常開発 → devbase。
64+
65+
### 2.3 Coder / Bunnyshell
66+
67+
- **概要**: K8s や VM 上に自社で構築するセルフホスト型クラウド開発環境。
68+
- **devbase との違い**: 運用に Kubernetes / VM 管理が必要。devbase は個人ラップトップでも組織サーバでも同じ CLI で動く軽量さ。
69+
70+
### 2.4 GitHub Codespaces / Gitpod
71+
72+
- **概要**: クラウドVM上で `.devcontainer.json` を解釈する完全クラウド型。
73+
- **devbase との違い**: クラウド継続課金、オフライン不可。devbase は**ローカルDockerだけで完結**し、private extension に組織秘構成を閉じ込められる。
74+
- **併用**: Codespaces で素早く触る → 本格運用は devbase に移行、というハイブリッドが現実的。
75+
76+
### 2.5 Dev Containers 単体(Microsoft 公式)
77+
78+
- **概要**: VSCode 拡張 + `.devcontainer/` ディレクトリでリポジトリ単位のコンテナ環境を定義。
79+
- **devbase との関係**: devbase は内部で Dev Containers 互換の dev コンテナを使う。**競合というより上位ツール**
80+
- **devbase が追加するもの**:
81+
- 複数リポジトリの **横断管理**(plugin/extension)
82+
- `scale` による並行 dev コンテナ
83+
- 環境変数の **3レベル統合**`${DEVBASE_ROOT}/.env` / `env` / `.env`
84+
- snapshot(差分10世代+フル3世代)
85+
- **AI CLI 同梱**(claude / codex / gemini / kiro)
86+
87+
### 2.6 DDEV / Lando
88+
89+
- **概要**: PHP / Drupal / WordPress に特化したDocker開発環境管理。
90+
- **devbase との違い**: 言語特化なので他言語混在チームには不向き。devbase は言語不問。
91+
92+
---
93+
94+
## 3. マルチサービス開発オーケストレータ(K8s 系)
95+
96+
devbase は「**ホスト ↔ dev コンテナ**」型、こちらは「**dev ↔ K8sクラスタ上の複数サービス**」型で、レイヤーが違います。
97+
98+
### 3.1 Tilt
99+
100+
- **概要**: K8s上で動くマイクロサービスを**ファイル同期+ライブアップデート**で開発。`Tiltfile`(Starlark DSL)でビルド/デプロイ/同期を宣言。Web UI付き。
101+
- **devbase との関係**: マイクロサービスの**サービス間統合**を解決。devbase は**リポジトリ間統合**を解決。**併用可**
102+
103+
### 3.2 Skaffold
104+
105+
- **概要**: K8s前提の continuous development ツール。`skaffold.yaml`(YAML)でビルド/デプロイ/開発サイクルを定義。CLI中心。
106+
- **Tilt との違い**: Skaffold はビルド→デプロイ型、Tilt は同期型。Skaffold の方が言語サポートが広く、コミュニティも成熟。
107+
- **devbase との関係**: 同上、レイヤーが異なる(併用可)。
108+
109+
### 3.3 DevSpace
110+
111+
- **概要**: loft-sh による K8s 開発ツール。Tilt / Skaffold と同領域。
112+
- **devbase との関係**: 同上。
113+
114+
---
115+
116+
## 4. その他の隣接ツール
117+
118+
| ツール | 概要 | devbase との違い |
119+
|--------|------|-----------------|
120+
| **Vagrant** | VM ベースの古典 | VM起動が遅い、Apple Silicon相性悪い。devbase はDockerなのでオーバーヘッド最小。 |
121+
| **Nix / devbox / flox** | 宣言的パッケージマネージャ | ホストOS上で動く前提、AI CLIの危険モードを**閉じ込められない**。学習コスト高。 |
122+
| **asdf / mise / rtx** | 言語バージョンマネージャ | ホスト依存を残すため、ローカル汚染問題は解決しない。 |
123+
| **docker compose 自作** | 各リポジトリで独自運用 | 横断の概念が無い。10リポジトリあれば10通りの使い方を覚える必要がある。 |
124+
125+
---
126+
127+
## 5. 機能比較表
128+
129+
凡例: ◎ =主要機能、〇 =対応、△ =部分対応・拡張で実現、✕ =非対応
130+
131+
| 観点 | devbase | DevPod | Daytona | Codespaces | Coder | Dev Containers | Tilt/Skaffold | DDEV |
132+
|------|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
133+
| ローカルDockerで完結 |||||||||
134+
| クラウド/リモート利用 |||||||||
135+
| 複数リポジトリの統合管理 |||||||||
136+
| 並行コンテナ(scale) |||||||||
137+
| 環境変数の3レベル統合 |||||||||
138+
| 認証情報の自動収集ウィザード |||||||||
139+
| AI CLI 標準同梱 |||||||||
140+
| AIコード実行サンドボックス |||||||||
141+
| 巻き戻し可能なsnapshot |||||||||
142+
| private 配布レジストリ |||||||||
143+
| devcontainer.json 互換 |||||||||
144+
| 言語非依存 |||||||||
145+
| 月額課金 | なし | なし | あり/自前 | あり | 自前運用 | なし | なし | なし |
146+
147+
---
148+
149+
## 6. 選定ガイド
150+
151+
### → devbase
152+
153+
- 複数リポジトリを横断して開発(マイクロサービス、モノリス+API+バッチ+インフラ)
154+
- **AI CLI(claude/codex/gemini/kiro)を多用**しつつコンテナで安全に隔離
155+
- 同一リポジトリで**並行開発**(git worktree の代替)
156+
- **社外秘の compose 構成**を private extension で組織内に閉じて配布
157+
- ローカルDockerで**オフライン完結**
158+
- 巻き戻し可能な snapshot が必要
159+
160+
### → DevPod
161+
162+
- 単一リポジトリの devcontainer 体験で、**ローカル/リモート/クラウドを切り替え**たい
163+
- IDE非依存・プロバイダ非依存を最優先
164+
165+
### → Daytona
166+
167+
- **AI エージェントに任意コードを実行させる**サンドボックス基盤が必要
168+
- マルチテナント・マルチユーザの Code Interpreter 風サービスを構築
169+
170+
### → Codespaces / Gitpod
171+
172+
- 端末でDockerを入れられない、ゼロセットアップを最優先
173+
174+
### → Tilt / Skaffold / DevSpace
175+
176+
- 開発対象が **K8s 上のマイクロサービス群**で、サービス間のホットリロードが本丸
177+
178+
### → Dev Containers 単体
179+
180+
- リポジトリは1つだけ、VSCode専用、シンプルな構成
181+
182+
### → DDEV / Lando
183+
184+
- PHP / Drupal / WordPress 特化で、その範囲しか触らない
185+
186+
### → Nix / mise
187+
188+
- ツールバージョンを言語横断で**宣言的に固定**したい(ホスト常駐モデル)
189+
190+
---
191+
192+
## 7. devbase ならではの差別化要素
193+
194+
### 7.1 3層構造による配布
195+
196+
```mermaid
197+
flowchart LR
198+
E[extension<br/>GitHub repo] --> P1[plugin: carmo-system]
199+
E --> P2[plugin: carmo-ai]
200+
P1 --> Pr1[project: carmo-cdk]
201+
P1 --> Pr2[project: carmo-batch]
202+
P2 --> Pr3[project: carmo-screening]
203+
```
204+
205+
public な devbase 本体に、private な extension を**重ねるだけ**で組織秘の構成を共有できる。DevPod / Codespaces / Dev Containers にはこの**配布抽象化レイヤ**が無い。
206+
207+
### 7.2 環境変数の3レベル統合
208+
209+
`${DEVBASE_ROOT}/.env`(グローバル) → `projects/<p>/env`(プロジェクト, Git管理) → `projects/<p>/.env`(プロジェクト機密, gitignore) を**後勝ち**でマージ。「通常 ap-northeast-1 / このPJだけ us-east-1」が自然。
210+
211+
### 7.3 snapshot による世代管理
212+
213+
差分10世代+フル3世代=**合計30世代** を自動保管。`devbase snapshot list` で巻き戻し。AIエージェントに `~/` を破壊されても秒で復旧。
214+
215+
### 7.4 AI CLI 同梱と封じ込め
216+
217+
`claude` / `codex` / `gemini` / `kiro` をベースイメージに同梱。`--dangerously-skip-permissions` 等の危険モードもコンテナ境界で**ホストに波及しない**
218+
219+
---
220+
221+
## 8. 移行ガイド(簡易)
222+
223+
| 移行元 | 主な作業 |
224+
|--------|---------|
225+
| docker compose 自作 | `compose.yml``${DEVBASE_ROOT}` ベースに書換 → `env`/`.env` 分離 → `projects/` 配下へ |
226+
| Dev Containers | `.devcontainer/Dockerfile``containers/<name>/` か標準コンテナへ → `compose.yml` 作成 |
227+
| DevPod | devcontainer.json を参考に `compose.yml` 作成 → plugin/extension化で複数リポジトリを束ねる |
228+
| Codespaces | ローカルにDockerを導入 → `projects/<name>/` 配下に配置 → `devbase env init` で認証移送 |
229+
230+
---
231+
232+
## 9. まとめ
233+
234+
devbase は単体の Dev Containers / DevPod / クラウド型開発環境の代替ではなく、**「ローカルDocker × 複数リポジトリ × AI 開発」という現代的な3要件に最適化された統合管理レイヤ**です。
235+
236+
特に以下の3つが揃うチームでは選定価値が高い:
237+
238+
1. **複数リポジトリを日常的に行き来**している
239+
2. **AI CLI を本格活用**しており、安全な隔離が必要
240+
3. **社外秘の開発環境構成**を組織内で再利用したい
241+
242+
---
243+
244+
## 関連ドキュメント
245+
246+
- [はじめに](user/getting-started.md)
247+
- [プラグインレジストリ](user/plugin-registries.md)
248+
- [スナップショットガイド](user/snapshot-guide.md)
249+
- [アーキテクチャ](developer/architecture.md)
250+
251+
## 参考資料
252+
253+
- [DevPod 公式](https://devpod.sh/) / [GitHub](https://github.com/loft-sh/devpod)
254+
- [Daytona 公式](https://www.daytona.io/) / [GitHub](https://github.com/daytonaio/daytona)
255+
- [Tilt vs Skaffold(vcluster)](https://www.vcluster.com/blog/skaffold-vs-tilt-vs-devspace)
256+
- [Daytona Alternatives 2026(Bunnyshell)](https://www.bunnyshell.com/comparisons/daytona-alternatives/)
257+
- [DevPod Alternatives 2026(Bunnyshell)](https://www.bunnyshell.com/comparisons/devpod-alternatives/)
258+
- [Self-hostable Alternatives to Daytona(Northflank)](https://northflank.com/blog/self-hostable-alternatives-to-daytona)

docs/plugin-dev/quickstart.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ CONTAINER_SCALE=1
112112
| `GIT_REPO` | リポジトリ名 |
113113
| `GIT_HOST` | Gitホスト名(デフォルト: `github.com`)。GitLabの場合は `gitlab.com` を指定 |
114114
| `WORK_DIR` | コンテナ内の作業ディレクトリ |
115-
| `CONTAINER_SCALE` | 起動するコンテナ数(デフォルト: 1|
115+
| `CONTAINER_SCALE` | 起動するコンテナ数(デフォルト: 2|
116116

117117
### 2.4 .env ファイル(任意)
118118

@@ -148,7 +148,7 @@ devbase up
148148

149149
```bash
150150
# コンテナにログイン
151-
devbase shell
151+
devbase login
152152

153153
# コンテナの状態確認
154154
devbase ps
@@ -244,7 +244,8 @@ flowchart LR
244244
| `base` | Ubuntu Noble | Docker CLI、Python 3 | 軽量な開発環境 |
245245
| `general` | base | AWS CLI、gcloud、Terraform、Node.js 20、AI CLI | 汎用開発 |
246246
| `go` | base | Go開発環境 | Go言語プロジェクト |
247-
| `php` | general | PHP 8.3、Composer | PHP/Laravelプロジェクト |
247+
| `php` | general | PHP 8.3、Composer | PHP 8.3 系プロジェクト |
248+
| `php85` | general | PHP 8.5、Composer | PHP 8.5 系プロジェクト |
248249
| `latex` | general | LaTeX | 文書・論文作成 |
249250
| `lfm` | general | Rust、gfortran、MeCab | 数値計算・自然言語処理 |
250251
| `snapshot` | Ubuntu Noble | zstd | スナップショット専用 |

docs/user/cli-reference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,4 +488,4 @@ devbase snapshot rotate [--keep N]
488488

489489
| オプション | 説明 |
490490
|-----------|------|
491-
| `--keep N` | 保持する世代数(デフォルトは `DEFAULT_MAX_GENERATIONS`|
491+
| `--keep N` | 保持する世代数(デフォルト: `3`|

docs/user/container-operations.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ graph TD
156156
B --> C[general]
157157
B --> G[go]
158158
C --> D[php]
159+
C --> I[php85]
159160
C --> E[latex]
160161
C --> F[lfm]
161162
A --> H[snapshot]
@@ -173,7 +174,8 @@ graph TD
173174
|---------|-------|---------|------|
174175
| **base** | Ubuntu Noble | Docker CLI、Python 3 | 最小限の開発環境 |
175176
| **general** | base | AWS CLI、gcloud、Terraform、Node.js 20、AI CLI | 汎用開発環境 |
176-
| **php** | general | PHP 8.3、Composer、MySQL Shell | PHP 開発 |
177+
| **php** | general | PHP 8.3、Composer、MySQL Shell | PHP 8.3 系 開発 |
178+
| **php85** | general | PHP 8.5、Composer、MySQL Shell | PHP 8.5 系 開発 |
177179
| **latex** | general | LaTeX | 文書作成 |
178180
| **lfm** | general | Rust、gfortran、MeCab | 数値計算・自然言語処理 |
179181
| **go** | base | Go 開発環境 | Go 開発 |

docs/user/getting-started.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,8 @@ devbase/
205205
│ ├── plugin.yml # プラグイン定義
206206
│ ├── compose.yml # Docker Compose 設定
207207
│ ├── env # プロジェクト設定(Git 管理)
208-
── .env # プロジェクト機密情報(gitignore)
209-
└── backups/ # スナップショット保存先
208+
── .env # プロジェクト機密情報(gitignore)
209+
├── backups/ # スナップショット保存先(全プロジェクト共通)
210210
├── .env # グローバル環境変数(gitignore)
211211
└── plugins.yml # プラグイン設定
212212
```

docs/user/plugin-registries.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ devbase plugin repo list
4343
devbase plugin repo remove <name>
4444

4545
# 同期(最新化)
46-
devbase plugin repo sync
46+
devbase plugin repo refresh
4747
```
4848

4949
## 自前レジストリの作成

docs/user/snapshot-guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ flowchart TD
9898

9999
## バックアップデータ構造
100100

101-
スナップショットは `projects/<project>/backups/` ディレクトリに保存されます
101+
スナップショットは `${DEVBASE_ROOT}/backups/` ディレクトリ(devbase ルート直下)に保存され、全プロジェクトで共通の場所に集約されます
102102

103103
```
104104
backups/

docs/user/troubleshooting.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ devbase snapshot restore pre-restore-20260221-150000
356356
devbase snapshot list
357357

358358
# バックアップディレクトリのサイズ確認
359-
du -sh projects/<project>/backups/
359+
du -sh ${DEVBASE_ROOT}/backups/
360360

361361
# 不要な世代を削除(2世代のみ保持)
362362
devbase snapshot rotate --keep 2

0 commit comments

Comments
 (0)