๐โโ๏ธ ์ Gemini Code Assist์ ์ฃผ๋ชฉํด์ผ ํ ๊น์?
์ ๋ ๋งค๋ฌ 10๋ฌ๋ฌ๋ฅผ ์ง๋ถํ๋ฉฐ GitHub Copilot์ ์ฌ์ฉํด ์ค๋ ๊ฐ์ธ ๊ฐ๋ฐ์์ ๋๋ค. ํ์ง๋ง ์ฝ๋ฉ ์์ ๋์ด ๋ง์ ๋ฌ์๋ ์ฃผ์ด์ง ํ ํฐ์ ๋๋ฌด ๋นจ๋ฆฌ ์์งํ์ฌ, ์๋ง์๋ ์ ๋๋ก ๋ ์ฝ๋ ์ถ์ฒ์ ๋ฐ์ง ๋ชปํ๊ณ ๋๋ฆฐ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ๋ถํธํจ์ ๊ฒช์ด์ผ ํ์ต๋๋ค.
๊ฒฐ๊ตญ, ๋น์ฉ๊ณผ ์ฑ๋ฅ ๋ชจ๋์์ ์ง์ ๊ฐ๋ฅํ ๋์์ ์ฐพ๋ ์ค Google์ Gemini Code Assist๋ฅผ ๋ฐ๊ฒฌํ๊ฒ ๋์์ต๋๋ค. ๋๋๊ฒ๋ Gemini๋ ๊ฐ์ธ ๊ฐ๋ฐ์์๊ฒ ์ 180,000ํ๋ผ๋ ํ๊ฒฉ์ ์ธ ์ฝ๋ ์์ฑ ํ์๋ฅผ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋ฉฐ, VS Code์ CLI ํ๊ฒฝ์์ ๋ชจ๋ ์ต์ AI ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
GitHub Copilot์ ์ ํ์ ์ง์น ๋น์ ์ ์ํด, Gemini Code Assist๋ก ๊ฐ์ํ์ผ ํ ์ด์ ์ ์ค์น/์ฌ์ฉ๋ฒ์ ์๋ฒฝํ๊ฒ ์ ๋ฆฌํ์ต๋๋ค.
๐ก Gemini Code Assist/CLI ํต์ฌ ์์ฝ
Gemini Code Assist๋ Google์ ๊ฐ๋ ฅํ Gemini Pro/Flash ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ํ๊ฒฉ์ ์ธ ๋ฌด๋ฃ ์ฌ์ฉ๋์ ์ ๊ณตํฉ๋๋ค.
- ๋ชจ๋ธ: Gemini Code Assist๋ Google์ ๊ฐ๋ ฅํ Gemini Pro/Flash ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
- ์ฌ์ฉ๋ (๊ฐ์ธ ๋ฌด๋ฃ):
- ์ฝ๋ ์์ฑ (Completion): ์ ์ต๋ 180,000ํ ์ ๊ณต.
- ์ฑํ /์์ด์ ํธ ์์ฒญ (Chat/Agent): Google ๊ณ์ ๋ก๊ทธ์ธ ์ ์ผ์ผ 1,000ํ ์์ฒญ ํ๋. (API ํค๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ)
1. VS Code: Gemini Code Assist (Agent Mode) ์ค์
VS Code์์ ์ฝ๋ฉ ์ง์ ๋ฐ Agent Mode (๋ณตํฉ ์์ ์ฒ๋ฆฌ)๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ค์ ๋ฐฉ๋ฒ์ ๋๋ค.
1๋จ๊ณ: ํ์ฅ ํ๋ก๊ทธ๋จ ์ค์น
VS Code๋ฅผ ์ด๊ณ ํ์ฅ ํ๋ก๊ทธ๋จ ๋ทฐ (Ctrl+Shift+X)์์ ๋ค์์ ์ค์นํฉ๋๋ค.
Gemini Code Assist๋๋Google Cloud Code๊ฒ์ ํ ์ค์น (๋ ํ์ฅ ๊ธฐ๋ฅ ๋ชจ๋ Gemini ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง,Gemini Code Assist๊ฐ ๋ ์ง๊ด์ ์ ๋๋ค.)- ์ค์น๊ฐ ์๋ฃ๋๋ฉด VS Code๋ฅผ ์ฌ์์ํฉ๋๋ค.
2๋จ๊ณ: Google ๊ณ์ ๋ก๊ทธ์ธ
- VS Code ์ผ์ชฝ ํ๋ ๋ง๋์์ Gemini ์์ด์ฝ ($\text{spark}$ ๋ชจ์)์ ํด๋ฆญํฉ๋๋ค.
- ์๋ด์ ๋ฐ๋ผ Google ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ์งํํฉ๋๋ค.
3๋จ๊ณ: Agent Mode ์ ํ ๋ฐ ์ฌ์ฉ
- Gemini ์ฑํ
์ฐฝ์ด ์ด๋ฆฌ๋ฉด, ์
๋ ฅ์ฐฝ ์๋จ ๋๋ ๋๋กญ๋ค์ด์์
์๋ด์ฌ ์ ํ๋ฒํผ์ ํด๋ฆญํ์ฌ Agent Mode (Preview)๋ก ์ ํํฉ๋๋ค. - Agent Mode์์๋
/goal๋ฑ์ ๋ช ๋ น๊ณผ ํจ๊ป “์ด ํ๋ก์ ํธ์ ์ฌ์ฉ์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํํด ์ค”์ ๊ฐ์ ๋ณต์กํ ๋ชฉํ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
2. ํฐ๋ฏธ๋: Gemini CLI ์ค์ ๋ฐ VS Code ํตํฉ
ํฐ๋ฏธ๋์์ ์ฝ๋ฉ, ํ์ผ ์์ , ๋ช ๋ น์ด ์คํ ๋ฑ์ AI์ ํจ๊ป ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค.
1๋จ๊ณ: Gemini CLI ์ค์น (Node.js ํ์)
Node.js v18 ์ด์์ด ์ค์น๋์ด ์๋์ง ํ์ธ ํ, ํฐ๋ฏธ๋์์ ๋ค์ ๋ช ๋ น์ ์คํํ์ฌ CLI๋ฅผ ์ค์นํฉ๋๋ค.
# Node.js ๋ฒ์ ํ์ธ (v18 ์ด์ ๊ถ์ฅ)
node -v
# Gemini CLI ๊ธ๋ก๋ฒ ์ค์น
npm install -g @google/gemini-cli
2๋จ๊ณ: Google ๊ณ์ ์ฐ๋
ํฐ๋ฏธ๋์ gemini๋ฅผ ์
๋ ฅํ๊ณ ์ํฐ๋ฅผ ๋๋ฆ
๋๋ค. ์๋ด์ ๋ฐ๋ผ ๋ธ๋ผ์ฐ์ ์์ Google ๊ณ์ ๋ก๊ทธ์ธ์ ์งํํ์ฌ ์ฐ๋์ ์๋ฃํฉ๋๋ค. (API ํค ์์ด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ)
3๋จ๊ณ: VS Code ํตํฉ (Context-Aware ๊ธฐ๋ฅ ํ์ฑํ)
VS Code์ ํตํฉ ํฐ๋ฏธ๋์ ์ด๊ณ ๋ค์ ๋ช ๋ น์ ์์๋๋ก ํ ๋ฒ๋ง ์คํํ๋ฉด, CLI๊ฐ VS Code์ ์ด๋ ค์๋ ํ์ผ ์ปจํ ์คํธ๋ฅผ ์ธ์ํ๊ฒ ๋ฉ๋๋ค.
# 1. IDE ์ปดํจ๋์ธ ํ์ฅ ํ๋ก๊ทธ๋จ ์ค์น
/ide install
# 2. VS Code ํตํฉ ๊ธฐ๋ฅ ํ์ฑํ
/ide enable
3. ๐ Gemini Code Assist / CLI ์ฌ์ฉ ๋ฐฉ๋ฒ ์์ธ
Gemini Code Assist์ ๋ ๊ฐ์ง ์ฃผ์ ํ๊ฒฝ(IDE Chat๊ณผ CLI)์์ ์ด๋ป๊ฒ AI๋ฅผ ํ์ฉํ ์ ์๋์ง ๊ตฌ์ฒด์ ์ธ ์ฌ์ฉ๋ฒ์ ์ ๋ฆฌํ์ต๋๋ค.
3-1. VS Code: Gemini Code Assist Agent Mode ์ฌ์ฉ๋ฒ
Agent Mode๋ ๋ณต์กํ ๋ชฉํ๋ฅผ ์ ์ํ๊ณ AI์๊ฒ ์คํ์ ์์ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
| ๋ชฉํ | VS Code ์ฑํ ์ฐฝ ์ ๋ ฅ ์์ | ์ค๋ช |
|---|---|---|
| ์ ๊ธฐ๋ฅ ์ถ๊ฐ | /goal Add a dark mode feature to the application, using CSS variables and update all relevant components. | ์ฑ ์ ์ฒด์ ๊ฑธ์ณ ์คํ์ผ์ํธ ๋ฐ ์ปดํฌ๋ํธ ํ์ผ์ ์์ ํฉ๋๋ค. |
| ๋ณต์กํ ๋ฆฌํฉํ ๋ง | /goal Refactor the data fetching logic in 'src/api/' to use React Query instead of local state management. | ๋ค์์ ํ์ผ์ ๋ถ์ํ์ฌ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐฉ์์ ์ผ๊ด๋๊ฒ ๋ณ๊ฒฝํฉ๋๋ค. |
| ๋ฒ๊ทธ ์์ | /fix Fix the memory leak identified in the 'UserList.js' component when the component unmounts. | ํน์ ํ์ผ์ ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ ์์ ์ ์ ์ํ ํ, Diff ๋ทฐ๋ฅผ ํตํด ๋ณ๊ฒฝ์ ์น์ธํ ์ ์์ต๋๋ค. |
| ํ๋ก์ ํธ ์์ฝ | /ask Explain the main architectural pattern used in the 'services' folder. | ์ ์ฒด ํด๋ ๊ตฌ์กฐ ๋ฐ ์ฝ๋๋ฅผ ๋ถ์ํ์ฌ ์ํคํ ์ฒ๋ฅผ ์ค๋ช ํด ์ค๋๋ค. |
| ์ปจํ ์คํธ ์ถ๊ฐ | @(ํ์ผ์ด๋ฆ) "์ด ํ์ผ์ ์ฐธ๊ณ ํด์ ์ด ํจ์์ ๋ํ JSDoc ์ฃผ์์ ์์ฑํด ์ค" | ํน์ ํ์ผ์ ๋ช ์์ ์ผ๋ก ์ปจํ ์คํธ์ ์ถ๊ฐํ์ฌ ์ ๊ตํ ๋ต๋ณ์ ์ ๋ํฉ๋๋ค. |
ํต์ฌ: Agent Mode๋ ๊ณํ์ ์ ์ํ๊ณ ์ฌ์ฉ์๊ฐ ์น์ธํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ ์์ ํ๊ฒ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์์ ํฉ๋๋ค.
3-2. ํฐ๋ฏธ๋: Gemini CLI ์ฌ์ฉ๋ฒ
Gemini CLI๋ ์ ๋ช ๋ น์ด์ AI ๊ธฐ๋ฅ์ ๊ฒฐํฉํ๊ฑฐ๋, ํฐ๋ฏธ๋์์ ๋น ๋ฅด๊ณ ๋ฐ๋ณต์ ์ธ ์์ ์ ์ํํ ๋ ์ ์ฉํฉ๋๋ค.
| ๋ชฉํ | ํฐ๋ฏธ๋ ๋ช ๋ น์ด ์์ | ์ค๋ช |
|---|---|---|
| ๋น ๋ฅธ ์ฝ๋ ์์ฑ | gemini ask "Write a Python script to recursively find all image files and convert them to PNG format." | ์ฝ๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฆ์ ์์ฑํ๊ณ ํฐ๋ฏธ๋์ ์ถ๋ ฅํฉ๋๋ค. |
| ํ์ผ ์ฐธ์กฐ ๋ฐ ์์ | gemini ask "Identify the bug in @index.js and propose a fix." | @ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ํ์ผ์ ์ฐธ์กฐํ๊ณ , ๋ถ์ ๋ฐ ์์ ์ ์์ ๋ฐ์ต๋๋ค. |
| ์์คํ ๋ช ๋ น์ด ๊ฒฐํฉ | gemini ask "Analyze the error logs from ! tail -n 50 server.log and suggest a solution." | ! ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ํฐ๋ฏธ๋ ๋ช
๋ น์ด๋ฅผ ์คํํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ AI์๊ฒ ๋ฐ๋ก ์
๋ ฅ์ผ๋ก ์ ๊ณตํฉ๋๋ค. |
| ๋ํํ ์ธ์ | gemini | ๋ํํ ์ธ์ ์ ์์ํ์ฌ ํ์ผ ์ฒจ๋ถ, ์ฝ๋ ํธ์ง ๋ฑ์ ์์ ์ ๋ํ ํ์์ผ๋ก ์ํํฉ๋๋ค. |
| ๋จ์ผ ๋ช ๋ น ์คํ | gemini ask "Generate a Dockerfile for this Node.js project." > Dockerfile | ์์ฑ๋ ์ฝ๋๋ฅผ ํ์ผ๋ก ๋ฐ๋ก ๋ฆฌ๋ค์ด๋ ์
(>)ํ์ฌ ์ ์ฅํ ์ ์์ต๋๋ค. |
ํต์ฌ: Gemini CLI๋ ํฐ๋ฏธ๋ ํ๊ฒฝ์ ์ ์ฐ์ฑ์ AI ๊ธฐ๋ฅ๊ณผ ๊ฒฐํฉํ์ฌ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ์๋ํํ๊ณ ๊ฐ์ํํฉ๋๋ค.