Skip to content

Commit c59cb15

Browse files
committed
docs: スタンドアロンWebアプリ化の実装方針を追加
1 parent 87b1a4d commit c59cb15

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed

foragent/実装方針_20250120.md

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
# Roo Cline スタンドアロンWebアプリ化実装方針
2+
3+
## 1. プロジェクト概要
4+
5+
VS Code拡張として実装されているRoo ClineのwebviewをスタンドアロンのWebアプリとして切り出し、独自に運用できるようにする。同時にオリジナルのRoo Clineからの更新も取り込める形で維持する。
6+
7+
### 目的
8+
- VS Code拡張に依存しない形でWebアプリとして動作させる
9+
- 独自の機能拡張や改修を可能にする
10+
- オリジナルの更新を継続的に取り込める体制を整える
11+
12+
## 2. 具体的な実装ステップ
13+
14+
### Phase 1: 環境セットアップ
15+
1. 依存パッケージのインストール
16+
```bash
17+
pnpm install
18+
cd webview-ui && pnpm install
19+
cd ..
20+
```
21+
22+
### Phase 2: VS Code依存の切り離し
23+
24+
1. **VS Code API のモック化**
25+
- `webview-ui/src/utils/vscode.ts` の修正
26+
- `postMessage` 関数の抽象化
27+
- `acquireVsCodeApi` の参照箇所の修正
28+
29+
2. **通信層の抽象化**
30+
```typescript
31+
// 新規作成: src/services/api/index.ts
32+
interface MessageHandler {
33+
send: (type: string, payload: any) => void;
34+
receive: (callback: (type: string, payload: any) => void) => void;
35+
}
36+
37+
class WebSocketHandler implements MessageHandler {
38+
// WebSocket実装
39+
}
40+
41+
class RestHandler implements MessageHandler {
42+
// REST API実装
43+
}
44+
45+
export const messageHandler = process.env.USE_WEBSOCKET
46+
? new WebSocketHandler()
47+
: new RestHandler();
48+
```
49+
50+
### Phase 3: スタンドアロン機能の実装
51+
52+
1. **環境判定機能の追加**
53+
```typescript
54+
// webview-ui/src/utils/environment.ts
55+
export const isVsCodeEnv = typeof acquireVsCodeApi === 'function';
56+
export const useVsCodeEnvironment = isVsCodeEnv && process.env.FORCE_STANDALONE !== 'true';
57+
```
58+
59+
2. **設定の外部化**
60+
- 環境変数での制御
61+
- 設定ファイルの作成
62+
63+
### Phase 4: テスト実装
64+
65+
1. **単体テスト**
66+
- 通信層のモック
67+
- 環境判定のテスト
68+
- UI コンポーネントのテスト
69+
70+
2. **統合テスト**
71+
- エンドツーエンドのフロー確認
72+
- WebSocket/REST API 通信テスト
73+
74+
3. **テストカバレッジ目標**
75+
- コアロジック: 90%以上
76+
- UI コンポーネント: 80%以上
77+
78+
### Phase 5: ビルドとデプロイ
79+
80+
1. **ビルド設定の調整**
81+
- webpack/vite の設定調整
82+
- 環境別ビルドの設定
83+
84+
2. **CI/CD パイプラインの構築**
85+
- GitHub Actions の設定
86+
- デプロイ自動化
87+
88+
## 3. 技術的考慮事項
89+
90+
### セキュリティ
91+
- クロスオリジン制限の対応
92+
- API キーの安全な管理
93+
- CORS 設定
94+
95+
### パフォーマンス
96+
- バンドルサイズの最適化
97+
- レンダリングパフォーマンスの確保
98+
- キャッシュ戦略
99+
100+
### 保守性
101+
- コードの分割と整理
102+
- インターフェースの明確な定義
103+
- ドキュメントの整備
104+
105+
## 4. リファクタリング方針
106+
107+
1. **段階的なリファクタリング**
108+
- VS Code 依存部分の特定と分離
109+
- インターフェースの抽象化
110+
- テストカバレッジの維持
111+
112+
2. **コード品質の維持**
113+
- Lint ルールの遵守
114+
- 型安全性の確保
115+
- コードレビューの実施
116+
117+
## 5. アップストリーム更新対応
118+
119+
1. **更新取り込みフロー**
120+
```bash
121+
git fetch upstream
122+
git merge upstream/main
123+
# または
124+
git rebase upstream/main
125+
```
126+
127+
2. **コンフリクト対応方針**
128+
- 変更の影響範囲の確認
129+
- テストの実行による動作確認
130+
- 必要に応じたリファクタリング
131+
132+
## 6. 完了条件
133+
134+
1. スタンドアロンでの起動確認
135+
2. 全テストのパス
136+
3. テストカバレッジ目標の達成
137+
4. ドキュメントの整備完了
138+
5. アップストリーム更新の取り込み確認

0 commit comments

Comments
 (0)