๐ฏ ๋ชฉํ์ ๋ฒ์
ํ๋ก์ ํธ ๋ชฉ์
- ์น ๊ฐ๋ฐ์๊ฐ Chrome DevTools ์์์ API ์๋ต(JSON/XML/Text)์ ๋ ๋น ๋ฅด๊ณ ๊ฐ๋
์ฑ ์๊ฒ ํ์ธํ ์ ์๋๋ก ํ๋ค.
- ๋จ์ ์กฐํ๋ฅผ ๋์ด, ๊ฒ์ยทํํฐยท์ ์ฅยท๋ณต์ฌยท๋ด๋ณด๋ด๊ธฐ ๋ฑ ๋ฐ๋ณต์ ์ธ ๋๋ฒ๊น
๊ณผ์ ์ ์๋ํํ๋ค.
- ์ค์นํ ๋๊ตฌ(Postman, Insomnia)์ ๋นํด ๊ฐ๋ณ๊ณ , DevTools ๋ค์ดํฐ๋ธ ํ๊ฒฝ์ ์์ ํ ํตํฉ๋ ํ์ฅ์ ์งํฅํ๋ค.
๋ฒ์
- Chrome Manifest V3 ๊ธฐ๋ฐ ํ์ฅ ํ๋ก๊ทธ๋จ.
- DevTools ์ ์ฉ ํจ๋์์ ๋์.
- ์๋ฒ๋ฆฌ์ค(IndexedDB + chrome.storage) ๊ตฌ์กฐ.
- ์ด๊ธฐ ๋ฒ์ ์์๋ ์ธ๋ถ ๊ณ์ /๋๊ธฐํ/ํด๋ผ์ฐ๋ ์ฐ๋ ์์ด ๋ก์ปฌ ์ ์ฅ๋ง ์ง์.
- UI๋ ๋คํฌ๋ชจ๋/๋ผ์ดํธ๋ชจ๋ ์ง์, ๋ฐ์ํ ๋ ์ด์์ ๊ตฌ์ฑ.
โก Quick Start
chrome://extensions์์ โ์์ถํด์ ๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ๋ก๋โ๋ก ์ด ๋ ํฌ์งํ ๋ฆฌ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฑ๋กํฉ๋๋ค.
- ํ์
์ด๋ DevTools ํจ๋์ ์ฒ์ ์ด ๋ Chrome์ด
debugger ๊ถํ์ ์์ฒญํ๋ฉด ํ์ฉํฉ๋๋ค.
- ์ฌ์ด๋๋ฐ์์ ์บก์ฒํ ํญ์ ์ฒดํฌํ๊ฑฐ๋ โํ์ฌโ ๋ฒํผ์ผ๋ก ํ์ฑ ํญ์ ์ฆ์ ์ถ๊ฐํ๊ณ , โ์ ์ฒดโ๋ฅผ ๋๋ฅด๋ฉด ์ดํ ์๋ก ์ด๋ฆฌ๋ ํญ๋ ์๋์ผ๋ก ์์ง๋ฉ๋๋ค.
- ์ํ์ฝ๋/๋๋ฉ์ธ ํํฐ์ ๊ฒ์์ ์กฐํฉํด ๊ธฐ๋ก์ ํ์ํ๊ณ , ํ์ํ ๊ฒฝ์ฐ JSONยทCSV๋ก ๋ด๋ณด๋ด๊ฑฐ๋
์ ์ฒด ์ญ์ ๋ฒํผ์ผ๋ก ์ ๋ฆฌํ์ธ์.
- Authorization/Cookie ๋ฑ ๋ฏผ๊ฐ ํค๋๋ ์๋์ผ๋ก ๋ง์คํน๋๋ฉฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ก์ปฌ IndexedDB์ ์ ์ฅ๋ฉ๋๋ค. ๋ด๋ณด๋ด๊ธฐ ์ ์ ๋ฏผ๊ฐ ๊ฐ์ด ํฌํจ๋์ง ์์๋์ง ๋ค์ ํ์ธํ์ธ์.
๐งญ ๋ฒ์ ๋ณ ๋ชฉํ ๊ธฐ๋ฅ ์ ์
v0.1.0 (MVP)
- DevTools ํจ๋ ์์ฑ ๋ฐ Network API ์ฐ๋.
- ์ค์๊ฐ ์์ฒญ/์๋ต ์์ง ๋ฐ ๋ก์ปฌ ์ ์ฅ.
- JSON/XML/Text ์๋ ํฌ๋งทํ
๋ฐ ๋ณด๊ธฐ.
- URLยท๋ฉ์๋ยท์ํยท๋ณธ๋ฌธ ํค์๋ ๊ฒ์.
- ๋ณต์ฌ, ๋ค์ด๋ก๋, ๋ถ๋งํฌ ๊ธฐ๋ฅ.
- ์ต๊ทผ N๊ฐ ์๋ต ์๋ ๊ด๋ฆฌ (FIFO ๋ฐฉ์).
- ๋คํฌ/๋ผ์ดํธ ๋ชจ๋ ์ง์.
v0.2.0
- ์๋ต ๋น๊ต(diff) ๊ธฐ๋ฅ.
- ํ์ด๋ผ์ดํธ ๊ท์น ์ค์ (์: ์ํ์ฝ๋๋ณ ์์).
- Export ํ
ํ๋ฆฟ ์ ์ฅ.
- ๊ฐ๋จํ ์ค์ ๋ฉ๋ด (์ต๋์ ์ฅ๊ฐ์, spacing ๋ฑ).
v0.3.0
- ์๋ต ๊ณต์ (ํ์ผ/๋งํฌ).
- ํ์ฉ ํ๋ก ๋ฒ์ ์ค๊ณ (๋ฐฑ์๋ ๋๊ธฐํ).
- ์ฆ๊ฒจ์ฐพ๊ธฐ/๊ฒ์ ์ด๋ ฅ ํด๋ผ์ฐ๋ ๋๊ธฐํ.
- ๊ณ ๊ธ ํํฐ (header ์กฐ๊ฑด, ์ฌ์ด์ฆ ์กฐ๊ฑด ๋ฑ).
๐ ํ์ฌ MVP ๋ฒ์ ๊ฐ๋ฐ ๋ฒ์ ์ ์ (v0.1.0)
๋ชฉํ
- โAPI ์๋ต ํฌ๋งทํ
+ ๊ฒ์ + ๋ณต์ฌ/์ ์ฅโ๊น์ง ์์ฑ๋ ์ํ๋ก Chrome Web Store ๋ฌด๋ฃ ๋ฐฐํฌ.
- DevTools ๋คํธ์ํฌ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ์๋ต ์์งํ๋ ์์ ์ ์ธ ์ฝ์ด ๊ตฌ์ถ.
๊ฐ๋ฐ ๋ฒ์
- ๊ธฐ๋ณธ ํ๊ฒฝ
- MV3 manifest ์ค์
- DevTools ํ์ด์ง ๋ฑ๋ก (devtools.html โ panel.html)
- ๊ธฐ๋ณธ ์์ด์ฝ, ๋ก๊ณ , ๋ธ๋๋ฉ ์์
์ถ๊ฐ
- ๋ฐ์ดํฐ ์์ง
chrome.devtools.network.onRequestFinished ๋ฆฌ์ค๋ ๋ฑ๋ก
- ์๋ต ๋ฉํ๋ฐ์ดํฐ (URL, ๋ฉ์๋, ์ํ, ํ์
) ์์ง
getContent()๋ก ์๋ต Body ํ๋ณด
- IndexedDB ์ ์ฅ + FIFO ์ญ์
- UI/UX
- ํจ๋ ๋ ์ด์์: ๋ฆฌ์คํธ(์ข), ์์ธ(์ฐ)
- ๊ฒ์๋ฐ / ํํฐ / ํ
๋ง ํ ๊ธ
- ์์ธ๋ทฐ์ Pretty JSON / XML / Text ๋ ๋๋ฌ
- Copy / Download / Bookmark ๋ฒํผ
- ์ํ๋ฐ์ ์ด ์๋ต ์ ํ์
- ์ ์ฅ ๋ฐ ์ค์
- IndexedDB์ ์์ฒญ ๊ธฐ๋ก ์ ์ฅ
chrome.storage.local๋ก ์ฌ์ฉ์ ์ค์ ์ ์ง
- ๋ถ๋งํฌ ์ํ ์ ์ง
- ํฌ๋งทํ
์์ง
- JSON ํ์ฑ ๋ฐ Pretty Print
- XML ๋ค์ฌ์ฐ๊ธฐ ๋ ๋
- ๊ธฐํ MIME(text/plain ๋ฑ)์ ์๋ฌธ ์ถ๋ ฅ
- ํ์ฑ ์คํจ ์ ์๋ณธ ํ
์คํธ ํ์
- ๋ฐฐํฌ
- ๋น๋ ๋ฐ ZIP ํจํค์ง
- Chrome Web Store ๊ฐ๋ฐ์ ๋ฑ๋ก
- ์คํฌ๋ฆฐ์ท, ์ค๋ช
, ์ ์ฑ
๋ฌธ์ ์
๋ก๋
โ๏ธ ๊ธฐ๋ฅ ์ ์
1. ๋คํธ์ํฌ ์บก์ฒ
chrome.debugger API๋ก ํ์ฑ ํญ์ Network ๋๋ฉ์ธ์ attachํ์ฌ DevTools๋ฅผ ์ด์ง ์์๋ XHR/Fetch ์๋ต์ ์์งํฉ๋๋ค.
- ํ
์คํธ/JSON/XML MIME ํ์
๋ง 4๋ง ์๊น์ง ์ ์ฅํ๊ณ , ์ด๊ณผ๋ถ์
โฆ(truncated) ์ฒ๋ฆฌํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณดํธํฉ๋๋ค.
- ํญ ๋จ์๋ก FIFO(์ต๋ 200๊ฐ)๋ก ๊ด๋ฆฌํ๋ฉฐ, ์ค๋ณต attach๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฐธ์กฐ ์นด์ดํธ๋ฅผ ์ ์งํฉ๋๋ค.
2. ํญ ๋ชจ๋ํฐ๋ง & ์ ์ด
- ์ฌ์ด๋๋ฐ์์ ์ฌ๋ฌ ํญ์ ๋์์ ์ ํํ๊ฑฐ๋ ์ ์ฒด ์ ํ/ํด์ ๋ฅผ ์ํํ ์ ์์ผ๋ฉฐ, โํ์ฌโ ๋ฒํผ์ผ๋ก ํ์ฑ ํญ์ ์ฆ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ํญ์ ๋ซ๊ฑฐ๋ ํจ๋์ ์ข
๋ฃํ๋ฉด ์๋์ผ๋ก ๋๋ฒ๊ฑฐ๊ฐ ๋ถ๋ฆฌ๋์ด ํ์ํ์ง ์์ ์บก์ฒ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
- ๊ฐ ์๋ต์๋ ์บก์ฒ๋ ํญ ID๊ฐ ํจ๊ป ์ ์ฅ๋๋ฉฐ, ํํฐ๋ง ์ ํญ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
3. ๊ฒ์ ๋ฐ ํํฐ
- ์์ ํ
์คํธ +
key:value ์กฐ๊ฑด(method:POST, status:200, bookmark:true) ์กฐํฉ์ ์ง์ํฉ๋๋ค.
- ์ํ ์ฝ๋ ๊ทธ๋ฃน(2xx/3xx/4xx/5xx)๊ณผ ๋๋ฉ์ธ๋ณ ๋๋กญ๋ค์ด ํํฐ๋ก ๋น ๋ฅด๊ฒ ๊ทธ๋ฃน์ ์ ํํ ์ ์์ต๋๋ค.
- ๊ฒ์ ์กฐ๊ฑด์ UI์ ์ ์ง๋๋ฉฐ, ํํฐ ๋ณ๊ฒฝ ์ ์ฆ์ ๋ฆฌ์คํธ์ ์์ธ๋ทฐ์ ๋ฐ์๋ฉ๋๋ค.
4. ์๋ต ๋ทฐ์ด & ๋ด๋ณด๋ด๊ธฐ
- JSON์ prettify, XML/Text๋ ์๋ฌธ ๋ ๋๋งํ๋ฉฐ ํญ ์ ๋ณด์ ์๋ต ์๊ฐ(ms)์ ํจ๊ป ์ ๊ณตํฉ๋๋ค.
- ์์ฒญ ๋ณธ๋ฌธ๊ณผ ์์ฒญ/์๋ต ํค๋๋ฅผ ํญ์ผ๋ก ์ ํํ๋ฉด์ ํ์ธํ ์ ์์ต๋๋ค.
- ํ์ฌ ํํฐ๊ฐ ์ ์ฉ๋ ๊ฒฐ๊ณผ๋ฅผ JSON ๋๋ CSV๋ก ์ฆ์ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
- ์ฌ์ด๋๋ฐ ์๋จ ์นด๋์์ ์ ์ฒด/2xx/4xx/5xx ํต๊ณ๋ฅผ ํ๋์ ํ์ธํ๊ณ , ๊ฐ ์์ฒญ์ ์นด๋ํ ๋ชฉ๋ก(๋ฉ์๋/์ํ/๋๋ฉ์ธ/์๊ฐ/๋ฏธ๋ฆฌ๋ณด๊ธฐ)์ผ๋ก ํ์๋ฉ๋๋ค.
- URL ํ๋ฆฌ๋ทฐ์ ํธ์คํธ ๋ฉํ ์ ๋ณด๊ฐ ๋ฆฌ์คํธ์ ํจ๊ป ๋
ธ์ถ๋์ด ํ์ ์ปจํ
์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
5. ์์ธ๋ทฐ ํด๋ฐ
- ๋ณต์ฌ/๋ค์ด๋ก๋/๋ถ๋งํฌ ์ธ์
์ ์ฒด ์ญ์ , JSON ๋ด๋ณด๋ด๊ธฐ, CSV ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค.
- ๋ถ๋งํฌ ์ํ๋ IndexedDB์ ์ ์ง๋์ด ํ์
ยทDevTools ๊ฐ์๋ ๊ณต์ ๋ฉ๋๋ค.
6. ํ
๋ง ๋ฐ ์ค์
- ๋คํฌ ํค ๊ธฐ๋ณธ๊ฐ๊ณผ ๋ฐ์ํ ๋ ์ด์์์ ์ ๊ณตํ๋ฉฐ ํ์
(900ร520)ยท์ ์ฐฝยทDevTools ํจ๋์์ ๋์ผํ UI๋ฅผ ์ฌ์ฌ์ฉํฉ๋๋ค.
- ์ถํ ์ฌ์ฉ์ ์ค์ (
chrome.storage.local)๋ก ์ต๋ ๋ณด๊ด ๊ฐ์, ๊ธฐ๋ณธ ํํฐ ๋ฑ์ ํ์ฅํ ์ ์๋๋ก ๊ตฌ์กฐํ๋์ด ์์ต๋๋ค.
7. ์ ์ฅ์ ๊ตฌ์กฐ
- IndexedDB(
api_lens.requests)์ ์์ฒญ/์๋ต ๋ณธ๋ฌธ, ํค๋, ๋ถ๋งํฌ, ํญ ID, duration ๋ฑ์ ๋ณด๊ดํฉ๋๋ค.
- FIFO ์ ์ฑ
์ผ๋ก ์ต์ 200๊ฐ๋ง ์ ์งํ๋ฉฐ, Chrome ํญ์ด ๋ซํ๋ฉด ๊ด๋ จ ์ธ์
์ด ์ ๋ฆฌ๋ฉ๋๋ค.
8. ๊ถํ ๋ฐ ๊ฐ์ธ์ ๋ณด
debugger, tabs, storage ๊ถํ์ ์ฌ์ฉํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ํญ์ ์ ํํ ๊ฒฝ์ฐ์๋ง ์ผ์์ ์ผ๋ก attach ํฉ๋๋ค.
- ์บก์ฒ ๋ฐ์ดํฐ๋ ๋ก์ปฌ IndexedDB์๋ง ์ ์ฅ๋๊ณ ์ธ๋ถ๋ก ์ ์ก๋์ง ์์ต๋๋ค.
- ๋ฏผ๊ฐ ํค๋(Authorization ๋ฑ)๋ ์์ง ๋์์์ ์ ์ธํ๊ณ , ํ์ ์ ๋ก๊ทธ๋ฅผ ๋ด๋ณด๋ด๊ธฐ ์ ์ ์ง์ ๊ฒํ ํ ์ ์์ต๋๋ค.
๐งฑ ๊ธฐ์ ์คํ
์ฝ์ด & ๋ฒ๋ค๋ง
- ํ๋ซํผ: Chrome Extension (Manifest V3)
- ์ธ์ด: TypeScript (
"strict": true)
- ๋น๋ ๋๊ตฌ: Vite +
@crxjs/vite-plugin (MV3 ์ ์ฉ)
- ๋ชจ๋ ์์คํ
: ES Modules
UI
- ํ๋ ์์ํฌ: React 18 (๋๋ Preact ๋์ฒด ๊ฐ๋ฅ)
- ๋ฆฌ์คํธ ๊ฐ์ํ: react-window
- ์ฝ๋ ํ์ด๋ผ์ดํธ: highlight.js
- ์ํ๊ด๋ฆฌ: Zustand
- ์คํ์ผ๋ง: Tailwind CSS
- ํ
๋ง: prefers-color-scheme + ์ฌ์ฉ์ ํ ๊ธ
- ์์ด์ฝ: Lucide-react (ํจ๋์ฉ SVG)
๋ฐ์ดํฐ/์ ์ฅ
- ๋ก์ปฌ ์ ์ฅ: IndexedDB via idb
- ์ค์ ์ ์ฅ: chrome.storage.local
- ์๊ฐ ์ฒ๋ฆฌ: dayjs
ํ์ฑ/ํฌ๋งทํ
- JSON: ๊ธฐ๋ณธ JSON.parse / stringify
- XML: fast-xml-parser
- MIME ํ๋ณ: Content-Type ๊ธฐ๋ฐ
๊ฒ์/ํํฐ
- ์ปค์คํ
์ฟผ๋ฆฌ ํ์ (key:value + free text)
- ํ์ ์ flexsearch ๋์
๊ณ ๋ ค
ํ์ง/๋น๋
- Lint/Format: ESLint + Prettier
- ํ
์คํธ: Vitest + React Testing Library
- ํจํค์ง: Vite build โ crxjs ZIP ์ฐ์ถ
- CI/CD: GitHub Actions (ํ๊ทธ ํธ์ ์ ๋น๋ & zip)
๊ถํ
debugger: ์ ํํ ํญ์ Network ์ด๋ฒคํธ๋ฅผ ์์งํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, UI๋ฅผ ๋ซ์ผ๋ฉด ์๋์ผ๋ก ๋ถ๋ฆฌ๋ฉ๋๋ค.
tabs: ํ์
/ํจ๋์์ ์ด๋ ค ์๋ ํญ ๋ชฉ๋ก์ ์กฐํํ๊ณ ์ ๋ชฉยทURL์ ํ์ํฉ๋๋ค.
storage: ์ฌ์ฉ์ ์ค์ (ํฅํ ํ์ฅ)๊ณผ ๋ก์ปฌ ์๋ต ๋ฐ์ดํฐ๋ฅผ ์ ์งํฉ๋๋ค.
๋ณด์
- ๋ฏผ๊ฐ ํค๋ ์ ์ฅ ๊ธ์ง
- ํ ํฐ ํจํด ๋ง์คํน
- ์ธ๋ถ ํต์ ์์
๐ฆ ์ฃผ์ ์์กด์ฑ
```json
{
โdependenciesโ: {
โreactโ: โ^18.3.1โ,
โreact-domโ: โ^18.3.1โ,
โzustandโ: โ^4.5.2โ,
โidbโ: โ^8.0.0โ,
โdayjsโ: โ^1.11.13โ,
โfast-xml-parserโ: โ^4.5.0โ,
โhighlight.jsโ: โ^11.10.0โ
},
โdevDependenciesโ: {
โtypescriptโ: โ^5.6.3โ,
โviteโ: โ^5.4.8โ,
โ@crxjs/vite-pluginโ: โ^1.0.14โ,
โtailwindcssโ: โ^3.4.13โ,
โpostcssโ: โ^8.4.47โ,
โautoprefixerโ: โ^10.4.20โ,
โeslintโ: โ^9.11.1โ,
โ@typescript-eslint/eslint-pluginโ: โ^8.8.1โ,
โ@typescript-eslint/parserโ: โ^8.8.1โ,
โprettierโ: โ^3.3.3โ,
โvitestโ: โ^2.1.4โ,
โ@testing-library/reactโ: โ^16.0.1โ
}
}