VS Code ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก Flutter ์ฑ์ ์ ๊ทผ์ฑ์ ์ค์๊ฐ์ผ๋ก ๋ถ์ํ๊ณ ๊ฐ์ ์ ์์ ์ ๊ณตํ๋ AI ๊ธฐ๋ฐ ๋๊ตฌ
Flutter Accessibility Checker๋ ์๊ฐ์ฅ์ ์ธ ์ฌ์ฉ์์ ์ค์ ํผ๋๋ฐฑ์ ๋ฐ์ํ์ฌ ๊ฐ๋ฐ๋ Flutter ์ฑ ์ ๊ทผ์ฑ ๋ถ์ ๋๊ตฌ์ ๋๋ค.
์ด ๋๊ตฌ๋ ์๊ฐ์ฅ์ ์ธ๋ถ์ ์๊ฒฌ์ ์ง์ ๋ฐ์ํ ํ๋ฅด์๋ ๊ธฐ๋ฐ ๋ถ์์ ํตํด ์ค์ ์ฌ์ฉ์ ์ค์ฌ์ ์ค๊ณ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํนํ hintText(์ผ์์ ์๋ด)์ label(์๊ตฌ์ ์๋ณ์)์ ๊ตฌ๋ถํ์ฌ ์ ํํ ์ ๊ทผ์ฑ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ฉฐ, AI๊ฐ ์ปจํ
์คํธ๋ฅผ ์ดํดํ์ฌ ๊ฐ ์ํฉ์ ์ต์ ํ๋ ์ ๊ทผ์ฑ ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
์ด ๋๊ตฌ๋ ๋จ์ํ ์ ์ ๋ถ์์ ๋์ด์, ์ค์ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ณ ๋ คํ ๋์ ์ ๊ทผ์ฑ ๊ฐ์ ์ ์ ๊ณตํฉ๋๋ค.
์๊ฐ์ฅ์ ์ธ ์ฌ์ฉ์์ ์ค์ ํผ๋๋ฐฑ์ ๋ฐ์ํ ๋ค์ํ ํ๋ฅด์๋ ๊ด์ ์์ ์ ๊ทผ์ฑ์ ๋ถ์ํฉ๋๋ค. hintText์ ์ค์ ๋ผ๋ฒจ์ ๊ตฌ๋ถํ์ฌ ์ ์ ํ ์ ๊ทผ์ฑ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ฉฐ, Flutter ์ฑ์ ์ ๊ทผ์ฑ ์ด์๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ฐ์งํ๊ณ ์๊ฐ์ ์ผ๋ก ํ์ํฉ๋๋ค.
AI๊ฐ ์ปจํ ์คํธ๋ฅผ ๋ถ์ํ์ฌ ๊ฐ์ ๋ ์ ๊ทผ์ฑ ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค. ์ ์๋ ์ฝ๋๋ฅผ VS Code์์ ์ํด๋ฆญ์ผ๋ก ์ ์ฉํ ์ ์์ผ๋ฉฐ, OpenAI GPT ๋ชจ๋ธ์ ์ง์ํฉ๋๋ค (CLIP ๋ชจ๋ธ์ ๋ณ๋ ๋ฌธ์).
์คํฌ๋ฆฐ์ท๊ณผ ๋ฐ์ด๋ฉ ๋ฐ์ค๋ก ๋ฌธ์ ์์๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ํ๋ฉฐ, React ๋์๋ณด๋๋ฅผ ํตํด ์ค์๊ฐ ์ ๊ทผ์ฑ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๋ค์ํ ํ๋ฅด์๋๋ณ ์ฌ์ฉ์ ๊ฒฝํ ์๋๋ฆฌ์ค๋ฅผ ๋ถ์ํ์ฌ ์ ๊ณตํฉ๋๋ค.
- VS Code 1.80.0 ์ด์
- Flutter SDK 3.0.0 ์ด์
- Node.js 16.0.0 ์ด์
- Chrome ๋ธ๋ผ์ฐ์
# 1. ์ ์ฅ์ ํด๋ก ๋ฐ ์์กด์ฑ ์ค์น
git clone https://github.com/your-username/flutter-accessbility-checker.git
cd flutter-accessbility-checker
npm install
# 2. ํ๊ฒฝ ๋ณ์ ์ค์
cp env.example .env
# 3. TypeScript ์ปดํ์ผ
npm run compile
# 4. React ์ฑ ์ค์
cd react-app && npm install && cd ..
# 5. VS Code์์ ์คํ
code ..env ํ์ผ์ ์์ฑํ๊ณ ๋ค์ ์ค์ ์ ์ถ๊ฐํ์ธ์:
# OpenAI API Keys
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_API_KEY2=your_openai_api_key2_here
# AI ๋ชจ๋ธ ์ค์
AI_MODEL_TYPE=openai
AI_MODEL_NAME=gpt-3.5-turbo
AI_MAX_TOKENS=2000
AI_TEMPERATURE=0.7
# ํฌํธ ์ค์
FLUTTER_PORT=64022
REACT_APP_PORT=3000
WEBSOCKET_PORT=3001
# ๋ถ์ ์ค์
MAX_PERSONA_COUNT=10
SCREENSHOT_INTERVAL=5000
MAX_RETRY_ATTEMPTS=3AI_MODEL_TYPE=openai
AI_MODEL_NAME=gpt-3.5-turbo # ๋๋ gpt-4CLIP ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ณ๋๋ก ๋ฌธ์ํด์ฃผ์ธ์.
- Flutter ํ๋ก์ ํธ๋ฅผ VS Code์์ ์ด๊ธฐ
- Command Palette (
Ctrl+Shift+P๋๋Cmd+Shift+P) ์ด๊ธฐ Flutter Accessibility: Start Analysis๋ช ๋ น ์คํ- ํ๋ฅด์๋ ์ ์ ๋ ฅ (1-10๊ฐ ๊ถ์ฅ) - ์๊ฐ์ฅ์ ์ธ ์ฌ์ฉ์ ๊ด์ ์์์ ๋ค์ํ ์๋๋ฆฌ์ค ๋ถ์
์๊ฐ์ฅ์ ์ธ๋ถ์ ํผ๋๋ฐฑ์ ๋ฐ์ํ ํ์ค์ ์ธ ์ ๊ทผ์ฑ ํ ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ฐ ํ๋ฅด์๋๋ณ๋ก ๋ค๋ฅธ ์ฌ์ฉ์ ์ฌ์ ๊ณผ ์ ๊ทผ์ฑ ์๊ตฌ์ฌํญ์ ๋ถ์ํ๋ฉฐ, ๊ฐ ํ๋ฅด์๋์ ํน์ฑ์ ๋ง๋ ๊ตฌ์ฒด์ ์ธ ์ ๊ทผ์ฑ ๊ฐ์ ๋ฐฉ์์ ์ ์ํฉ๋๋ค.
- Flutter ์ฑ: ํฌํธ 64022์์ ์๋ ์คํ
- React ๋์๋ณด๋: ํฌํธ 3000์์ ์๋ ์คํ
- WebSocket ์๋ฒ: ํฌํธ 3001์์ ์๋ ์คํ
- ๋ธ๋ผ์ฐ์ : React ๋์๋ณด๋ ์๋ ์ด๊ธฐ
graph TB
A[VS Code Extension] --> B[Flutter Analyzer]
A --> C[AI Service]
A --> D[Screenshot Service]
B --> E[Flutter App]
C --> F[OpenAI API]
D --> H[Chrome Browser]
A --> I[WebSocket Server]
I --> J[React Dashboard]
K[User] --> A
K --> J
- ๋ถ์ ์์: ์ฌ์ฉ์๊ฐ VS Code์์ ๋ถ์ ๋ช ๋ น ์คํ
- Flutter ์ฑ ์คํ: ์ง์ ๋ ํฌํธ์์ Flutter ์ฑ ์๋ ์คํ
- ์คํฌ๋ฆฐ์ท ์บก์ฒ: Chrome์ ํตํด ์ฑ ํ๋ฉด ์บก์ฒ
- AI ๋ถ์: ์บก์ฒ๋ ์ด๋ฏธ์ง์ ์ฝ๋๋ฅผ AI ๋ชจ๋ธ๋ก ๋ถ์
- ๊ฒฐ๊ณผ ํ์: React ๋์๋ณด๋์์ ์ค์๊ฐ ๊ฒฐ๊ณผ ํ์
- ์ฝ๋ ์ ์: ๊ฐ์ ๋ ์ฝ๋๋ฅผ VS Code์์ ์ ์
# ๋น ๋ฅธ ์๋ต ์ค์
AI_TEMPERATURE=0.3 # ๋ฎ์ ์ฐฝ์์ฑ์ผ๋ก ์ผ๊ด๋ ๊ฒฐ๊ณผ
AI_MAX_TOKENS=1000 # ์ ์ ํ ํฐ์ผ๋ก ๋น ๋ฅธ ์ฒ๋ฆฌ
SCREENSHOT_INTERVAL=3000 # ๋ ์์ฃผ ์คํฌ๋ฆฐ์ท ์บก์ฒ# ๋์ฉ๋ ํ๋ก์ ํธ ์ค์
AI_MAX_TOKENS=8000 # ๋ ๋ง์ ํ ํฐ ์ฌ์ฉ
AI_MODEL_NAME=gpt-4-32k # ๊ธด ์ปจํ
์คํธ ์ง์ ๋ชจ๋ธ
MAX_PERSONA_COUNT=5 # ํ๋ฅด์๋ ์ ์ ํ์ผ๋ก ์ฑ๋ฅ ํฅ์# 1. Flutter SDK ํ์ธ
flutter doctor
# 2. ํฌํธ ์ถฉ๋ ํ์ธ
lsof -i :64022
# 3. Flutter ์ฑ ์๋ ์คํ
flutter run --web-port=64022# ๋น ๋ฅธ ์๋ต์ ์ํ ์ค์
AI_TEMPERATURE=0.1
SCREENSHOT_INTERVAL=10000# ํ๊ฒฝ ๋ณ์ ์กฐ์
AI_MAX_TOKENS=1000
MAX_PERSONA_COUNT=3- ํ๊ฒฝ ๋ณ์ ์ค์ ํ์ธ (
.envํ์ผ) - ํ์ํ ํฌํธ๋ค์ด ์ฌ์ฉ ๊ฐ๋ฅํ์ง ํ์ธ
- Chrome ๋ธ๋ผ์ฐ์ ๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธ
- Flutter SDK๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์น๋์ด ์๋์ง ํ์ธ
- OpenAI API ํค๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์ด ์๋์ง ํ์ธ
| ํน์ง | ์ผ๋ฐ์ ์ธ ์ ๊ทผ์ฑ ๋๊ตฌ | Flutter Accessibility Checker |
|---|---|---|
| ์ฌ์ฉ์ ํผ๋๋ฐฑ | ๊ฐ๋ฐ์ ๊ด์ ์ ์ ์ ๋ถ์ | โ ์๊ฐ์ฅ์ ์ธ๋ถ์ ์ค์ ํผ๋๋ฐฑ ๋ฐ์ |
| ํ ์คํธ ๋ถ์ | ๋จ์ ๋ผ๋ฒจ ๊ฒ์ฌ | โ hintText์ label์ ๊ตฌ๋ถํ ์ค๋งํธ ๋ถ์ |
| ํ๋ฅด์๋ ๊ธฐ๋ฐ | ์ผ๋ฅ ์ ์ธ ์ ๊ทผ์ฑ ์ฒดํฌ | โ ๋ค์ํ ํ๋ฅด์๋๋ณ ๋ง์ถคํ ๋ถ์ |
| AI ์ ์ | ๊ธฐ๋ณธ์ ์ธ ์ฝ๋ ์ ์ | โ ์ปจํ ์คํธ ๊ธฐ๋ฐ ์ง๋ฅํ ์ฝ๋ ์์ฑ |
| ์ค์๊ฐ ๋ถ์ | ์ ์ ์ฝ๋ ๋ถ์ | โ ์ค์๊ฐ ์ฑ ์คํ ์ํ ๋ถ์ |
์๊ฐ์ฅ์ ์ธ๋ถ์ ์๊ฒฌ์ ์ง์ ๋ฐ์ํ ์ ์ผํ Flutter ์ ๊ทผ์ฑ ๋๊ตฌ์
๋๋ค. hintText(์ผ์์ ์๋ด)์ label(์๊ตฌ์ ์๋ณ์) ๊ตฌ๋ถ์ผ๋ก ์ ํํ ์ ๊ทผ์ฑ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋ค์ํ ์ฌ์ฉ์ ๊ด์ ์์์ ์ ๊ทผ์ฑ ์๋๋ฆฌ์ค๋ฅผ ํ
์คํธํฉ๋๋ค.
# 1. ์ ์ฅ์ ํฌํฌ ๋ฐ ํด๋ก
git clone https://github.com/your-username/flutter-accessbility-checker.git
cd flutter-accessbility-checker
# 2. ๊ฐ๋ฐ ์์กด์ฑ ์ค์น
npm install
# 3. ๊ฐ๋ฐ ๋ชจ๋ ์คํ
npm run watch
# 4. ํ
์คํธ ์คํ
npm test- ์ด์ ์์ฑ: ๋ฒ๊ทธ ๋ฆฌํฌํธ๋ ๊ธฐ๋ฅ ์์ฒญ
- ๋ธ๋์น ์์ฑ:
feature/์๋ก์ด๊ธฐ๋ฅ๋๋fix/๋ฒ๊ทธ์์ - ์ฝ๋ ์์ฑ: ๋ช ํํ ์ฃผ์๊ณผ ํจ๊ป ์ฝ๋ ์์ฑ
- ํ ์คํธ: ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ํ ์คํธ ์ถ๊ฐ
- ํ ๋ฆฌํ์คํธ: ์์ธํ ์ค๋ช ๊ณผ ํจ๊ป PR ์์ฑ
| ์ด๋ฆ | GitHub |
|---|---|
| ์ค์ข ํ | @Sjaize |
| ์ค์ฐฌ์ธ | @chansses |
| ์ ์ ์ง | @YuujInJeong |
| ํ์งํ | @jhhan0208 |






