macOS 개발 환경 설정 가이드 | 필수 도구와 최적화

macOS 개발 환경 설정 가이드 | 필수 도구와 최적화

새 맥을 샀거나 개발 환경을 처음 세팅한다면 어디서부터 시작해야 할까? 이 글에서는 macOS에서 개발 환경을 구축하는 전체 과정을 다룬다.

사전 지식

macOS는 Unix 기반 운영체제로, 터미널에서 Linux와 유사한 명령어를 사용할 수 있다. 개발자에게 macOS가 인기 있는 이유는 다음과 같다.

Unix 기반 시스템

macOS는 BSD Unix를 기반으로 하기 때문에 Linux 서버 환경과 명령어가 거의 동일하다. 로컬에서 개발한 스크립트를 서버에서 그대로 실행할 수 있다.

패키지 관리자

Linux의 apt, yum처럼 macOS에는 Homebrew라는 패키지 관리자가 있다. 명령어 하나로 개발 도구를 설치하고 업데이트할 수 있다.

터미널

macOS의 터미널은 기본적으로 Bash나 Zsh 셸을 제공한다. iTerm2 같은 대체 터미널 앱을 사용하면 더 강력한 기능을 쓸 수 있다.

1단계: 시스템 기본 설정

시스템 환경설정 조정

개발자 친화적으로 macOS 설정을 변경한다.

Finder 설정

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# 숨김 파일 표시
defaults write com.apple.finder AppleShowAllFiles -bool true

# 모든 파일 확장자 표시
defaults write NSGlobalDomain AppleShowAllExtensions -bool true

# 경로 막대 표시
defaults write com.apple.finder ShowPathbar -bool true

# 상태 막대 표시
defaults write com.apple.finder ShowStatusBar -bool true

# Finder 재시작
killall Finder

스크린샷 저장 위치 변경

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# 스크린샷을 Downloads 폴더에 저장
mkdir -p ~/Downloads/Screenshots
defaults write com.apple.screencapture location ~/Downloads/Screenshots

# 변경사항 적용
killall SystemUIServer

키 반복 속도 최적화

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# 키 반복 지연 시간 최소화
defaults write NSGlobalDomain KeyRepeat -int 1

# 키 반복 시작 지연 최소화
defaults write NSGlobalDomain InitialKeyRepeat -int 10

Dock 설정

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# Dock 자동 숨김
defaults write com.apple.dock autohide -bool true

# Dock 애니메이션 속도 빠르게
defaults write com.apple.dock autohide-time-modifier -float 0.5

# Dock 재시작
killall Dock

개발자 도구 활성화

macOS에는 기본적으로 개발 도구가 숨겨져 있다.

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# 우클릭 메뉴에 "경로 복사" 추가
defaults write com.apple.finder ShowPathbar -bool true

# 텍스트 선택 시 QuickTime Player에서 복사 가능
defaults write com.apple.QuickTimePlayerX MGPlayMovieOnOpen -bool false

2단계: Xcode Command Line Tools 설치

모든 개발 도구의 기반이 되는 필수 패키지다.

설치

xcode-select --install

팝업 창이 뜨면 “설치” 버튼을 클릭한다. 약 5-10분 소요된다.

설치 확인

xcode-select -p
# 출력: /Library/Developer/CommandLineTools

gcc --version
# 출력: Apple clang version ...

포함된 도구:

  • GCC, Clang 컴파일러
  • Git
  • Make
  • Python (시스템 기본)
  • 각종 Unix 유틸리티

3단계: Homebrew 설치

Homebrew는 macOS의 사실상 표준 패키지 관리자다.

설치

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Apple Silicon (M1/M2/M3) 추가 설정

Apple Silicon 맥에서는 Homebrew가 /opt/homebrew에 설치된다.

# ~/.zshrc 또는 ~/.bash_profile에 추가
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
source ~/.zshrc

설치 확인

brew --version
# 출력: Homebrew 4.x.x

기본 사용법

다음은 bash를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# 패키지 검색
brew search 패키지명

# 패키지 설치
brew install 패키지명

# 패키지 업데이트
brew update          # Homebrew 자체 업데이트
brew upgrade         # 모든 패키지 업데이트
brew upgrade 패키지명 # 특정 패키지 업데이트

# 패키지 삭제
brew uninstall 패키지명

# 설치된 패키지 목록
brew list

# 패키지 정보 확인
brew info 패키지명

# 오래된 버전 정리
brew cleanup

Cask (GUI 앱 설치):

다음은 간단한 bash 코드 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# GUI 애플리케이션 설치
brew install --cask visual-studio-code
brew install --cask google-chrome
brew install --cask docker

4단계: iTerm2 설치

기본 터미널보다 훨씬 강력한 기능을 제공한다.

설치

brew install --cask iterm2

추천 설정

1. 색상 테마 설정

Preferences → Profiles → Colors → Color Presets에서 테마 선택.

추천 테마:

  • Solarized Dark
  • Dracula
  • One Dark
  • Nord

2. 폰트 설정

개발자용 폰트 설치:

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# 실행 예제
brew tap homebrew/cask-fonts
brew install --cask font-fira-code
brew install --cask font-jetbrains-mono
brew install --cask font-hack-nerd-font

Preferences → Profiles → Text → Font에서 설치한 폰트 선택.

3. 단축키 설정

Preferences → Keys → Hotkey에서 전역 단축키 설정 (예: ⌥Space).

4. Split Panes (화면 분할)

  • 수평 분할: ⌘D
  • 수직 분할: ⌘⇧D
  • 패널 이동: ⌘⌥ 방향키

5. Natural Text Editing

Preferences → Profiles → Keys → Key Mappings → Presets → Natural Text Editing 선택.

이제 ⌥←, ⌥→로 단어 단위 이동이 가능하다.

5단계: Zsh 및 Oh My Zsh 설정

macOS Catalina(10.15)부터 Zsh가 기본 셸이다.

Oh My Zsh 설치

Zsh를 더 편리하게 사용할 수 있는 프레임워크다.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

추천 플러그인

~/.zshrc 파일을 열어 플러그인을 추가한다.

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

plugins=(
  git
  zsh-autosuggestions
  zsh-syntax-highlighting
  docker
  kubectl
  npm
  node
  python
  vscode
)

플러그인 설치:

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# zsh-autosuggestions (명령어 자동 완성)
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

# zsh-syntax-highlighting (명령어 구문 강조)
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

Powerlevel10k 테마 (선택)

더 예쁘고 정보가 많은 프롬프트를 원한다면:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

~/.zshrc에서 테마 변경:

ZSH_THEME="powerlevel10k/powerlevel10k"

터미널 재시작 후 설정 마법사가 실행된다.

유용한 Alias 추가

~/.zshrc 파일에 추가:

다음은 bash를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# 자주 쓰는 명령어 단축
alias ll='ls -lah'
alias la='ls -A'
alias l='ls -CF'

# Git 단축
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline --graph --all'

# 디렉토리 이동
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

# 개발 서버
alias dev='npm run dev'
alias build='npm run build'

# Docker
alias dps='docker ps'
alias dimg='docker images'
alias dstop='docker stop $(docker ps -q)'

# 네트워크
alias myip='curl ifconfig.me'
alias ports='lsof -i -P -n | grep LISTEN'

# 파일 검색
alias f='find . -name'

# 프로세스
alias psg='ps aux | grep'

변경사항 적용:

source ~/.zshrc

6단계: 개발 언어 및 런타임 설치

Node.js (nvm 사용 권장)

여러 Node.js 버전을 관리할 수 있다.

다음은 bash를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# nvm 설치
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

# ~/.zshrc에 자동으로 추가됨
source ~/.zshrc

# 최신 LTS 버전 설치
nvm install --lts

# 설치 확인
node --version
npm --version

# 특정 버전 설치
nvm install 18
nvm install 20

# 버전 전환
nvm use 20

# 기본 버전 설정
nvm alias default 20

전역 패키지 설치:

npm install -g yarn pnpm typescript ts-node
npm install -g eslint prettier
npm install -g nodemon pm2

Python (pyenv 사용 권장)

다음은 bash를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# pyenv 설치
brew install pyenv

# ~/.zshrc에 추가
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init --path)"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

source ~/.zshrc

# Python 설치
pyenv install 3.12.0
pyenv global 3.12.0

# 설치 확인
python --version
pip --version

필수 패키지:

다음은 간단한 bash 코드 예제입니다. 에러 처리를 통해 안정성을 확보합니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

pip install --upgrade pip
pip install virtualenv pipenv poetry
pip install black flake8 mypy
pip install requests numpy pandas

Ruby (rbenv 사용 권장)

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

brew install rbenv

# ~/.zshrc에 추가
echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc
source ~/.zshrc

# Ruby 설치
rbenv install 3.3.0
rbenv global 3.3.0

ruby --version

Go

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

brew install go

# ~/.zshrc에 추가
echo 'export GOPATH=$HOME/go' >> ~/.zshrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.zshrc
source ~/.zshrc

go version

Rust

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# ~/.zshrc에 자동으로 추가됨
source ~/.zshrc

rustc --version
cargo --version

Java (SDKMAN 사용 권장)

다음은 bash를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# SDKMAN 설치
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

# Java 설치
sdk install java

# 특정 버전 설치
sdk install java 17.0.9-tem
sdk install java 21.0.1-tem

# 버전 전환
sdk use java 21.0.1-tem

java --version

7단계: Git 설정

Git 사용자 정보 설정

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

기본 브랜치명 변경

git config --global init.defaultBranch main

에디터 설정

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# VS Code를 기본 에디터로
git config --global core.editor "code --wait"

# Vim을 기본 에디터로
git config --global core.editor "vim"

유용한 Git 설정

다음은 bash를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# 색상 활성화
git config --global color.ui auto

# 자동 줄바꿈 처리
git config --global core.autocrlf input

# 대소문자 구분
git config --global core.ignorecase false

# Pull 전략 (rebase)
git config --global pull.rebase true

# 기본 push 동작
git config --global push.default current

# Diff 도구
git config --global diff.tool vscode
git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'

# Merge 도구
git config --global merge.tool vscode
git config --global mergetool.vscode.cmd 'code --wait $MERGED'

SSH 키 생성 (GitHub/GitLab용)

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# SSH 키 생성
ssh-keygen -t ed25519 -C "[email protected]"

# SSH 에이전트 시작
eval "$(ssh-agent -s)"

# SSH 키 추가
ssh-add ~/.ssh/id_ed25519

# 공개 키 복사 (GitHub에 등록)
pbcopy < ~/.ssh/id_ed25519.pub

GitHub → Settings → SSH and GPG keys → New SSH key에 붙여넣는다.

연결 테스트:

ssh -T [email protected]
# 출력: Hi username! You've successfully authenticated...

GPG 서명 설정 (선택)

커밋에 서명을 추가하면 “Verified” 배지가 표시된다.

다음은 bash를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# GPG 설치
brew install gnupg

# GPG 키 생성
gpg --full-generate-key

# 키 ID 확인
gpg --list-secret-keys --keyid-format=long

# Git에 GPG 키 등록
git config --global user.signingkey YOUR_KEY_ID

# 모든 커밋에 서명
git config --global commit.gpgsign true

# GPG 공개 키 내보내기
gpg --armor --export YOUR_KEY_ID | pbcopy

GitHub → Settings → SSH and GPG keys → New GPG key에 붙여넣는다.

8단계: 필수 개발 도구 설치

에디터 & IDE

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# Visual Studio Code
brew install --cask visual-studio-code

# JetBrains Toolbox (IntelliJ, PyCharm 등)
brew install --cask jetbrains-toolbox

# Sublime Text
brew install --cask sublime-text

# Vim (최신 버전)
brew install vim

# Neovim
brew install neovim

VS Code 필수 확장:

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# 터미널에서 VS Code 실행 가능하게
code --install-extension ms-vscode.vscode-typescript-next
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension eamodio.gitlens

데이터베이스 도구

다음은 bash를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# PostgreSQL
brew install postgresql@16
brew services start postgresql@16

# MySQL
brew install mysql
brew services start mysql

# Redis
brew install redis
brew services start redis

# MongoDB
brew tap mongodb/brew
brew install mongodb-community
brew services start mongodb-community

# GUI 도구
brew install --cask tableplus
brew install --cask dbeaver-community

Docker

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# 실행 예제
brew install --cask docker

# Docker 실행 후 터미널에서 확인
docker --version
docker-compose --version

Docker 자동 시작 설정:

Docker Desktop → Preferences → General → “Start Docker Desktop when you log in” 체크.

API 테스트 도구

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# Postman
brew install --cask postman

# Insomnia
brew install --cask insomnia

# HTTPie (CLI)
brew install httpie

버전 관리 GUI

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# GitKraken
brew install --cask gitkraken

# Sourcetree
brew install --cask sourcetree

# GitHub Desktop
brew install --cask github

9단계: 터미널 유틸리티

필수 CLI 도구

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# 현대적인 Unix 도구
brew install bat        # cat 대체 (구문 강조)
brew install exa        # ls 대체 (색상, 아이콘)
brew install ripgrep    # grep 대체 (빠른 검색)
brew install fd         # find 대체
brew install fzf        # 퍼지 파인더
brew install tldr       # man 대체 (간단한 예제)
brew install tree       # 디렉토리 구조 표시
brew install htop       # top 대체 (시스템 모니터)
brew install ncdu       # du 대체 (디스크 사용량)
brew install jq         # JSON 파싱
brew install yq         # YAML 파싱

Alias 추가 (~/.zshrc):

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

alias cat='bat'
alias ls='exa --icons'
alias ll='exa -lah --icons'
alias grep='rg'
alias find='fd'

Git 관련 도구

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# Git 확장 도구
brew install git-delta  # 더 예쁜 diff
brew install gh         # GitHub CLI
brew install glab       # GitLab CLI
brew install tig        # Git TUI

# Git 설정에 delta 추가
git config --global core.pager delta
git config --global interactive.diffFilter 'delta --color-only'
git config --global delta.navigate true
git config --global delta.side-by-side true

GitHub CLI 사용:

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# GitHub 로그인
gh auth login

# PR 생성
gh pr create

# Issue 생성
gh issue create

# Repo 클론
gh repo clone username/repo

클라우드 CLI

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# AWS CLI
brew install awscli

# Google Cloud SDK
brew install --cask google-cloud-sdk

# Azure CLI
brew install azure-cli

# Terraform
brew install terraform

# kubectl (Kubernetes)
brew install kubectl

10단계: 생산성 도구

윈도우 관리

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# Rectangle (무료, 오픈소스)
brew install --cask rectangle

# Magnet (유료, App Store)
# 단축키로 창 크기/위치 조정

Rectangle 추천 단축키:

  • 왼쪽 절반: ⌃⌥←
  • 오른쪽 절반: ⌃⌥→
  • 최대화: ⌃⌥↵
  • 중앙 정렬: ⌃⌥C

클립보드 관리

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# Maccy (무료, 오픈소스)
brew install --cask maccy

# Alfred (유료, 강력한 기능)
brew install --cask alfred

스크린샷 & 화면 녹화

# CleanShot X (유료, 추천)
# Kap (무료, GIF 녹화)
brew install --cask kap

메뉴바 정리

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# Hidden Bar (무료)
brew install --cask hiddenbar

# Bartender (유료)
brew install --cask bartender

시스템 모니터링

# iStat Menus (유료, 추천)
# Stats (무료, 오픈소스)
brew install --cask stats

11단계: 개발 환경별 추가 설정

웹 개발

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# 브라우저
brew install --cask google-chrome
brew install --cask firefox
brew install --cask brave-browser

# 로컬 개발 서버
brew install nginx

# 데이터베이스 GUI
brew install --cask sequel-ace  # MySQL

모바일 개발

iOS:

# Xcode (App Store에서 설치)
# CocoaPods
sudo gem install cocoapods

Android:

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# Android Studio
brew install --cask android-studio

# Android SDK 도구
brew install --cask android-platform-tools

React Native:

npm install -g react-native-cli
brew install watchman

데이터 과학

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# Jupyter
pip install jupyter notebook jupyterlab

# Anaconda
brew install --cask anaconda

DevOps

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# Kubernetes 도구
brew install kubectl kubectx k9s helm

# Terraform
brew install terraform

# Ansible
pip install ansible

# Monitoring
brew install --cask datadog-agent

12단계: 성능 최적화

Spotlight 인덱싱 제외

개발 폴더를 Spotlight 검색에서 제외하면 CPU 사용량이 줄어든다.

System Preferences → Siri & Spotlight → Spotlight Privacy에서 추가:

  • ~/node_modules
  • ~/venv
  • ~/.pyenv
  • ~/.nvm

불필요한 애니메이션 비활성화

아래 코드는 bash를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# Dock 애니메이션 끄기
defaults write com.apple.dock launchanim -bool false

# 창 열기/닫기 애니메이션 끄기
defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false

# Mission Control 애니메이션 빠르게
defaults write com.apple.dock expose-animation-duration -float 0.1

killall Dock

메모리 관리

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# 메모리 정리 (주기적으로 실행)
sudo purge

# 스왑 사용량 확인
sysctl vm.swapusage

Rosetta 2 (Apple Silicon 전용)

일부 x86 앱을 실행하려면 Rosetta 2가 필요하다.

softwareupdate --install-rosetta --agree-to-license

13단계: 보안 설정

방화벽 활성화

System Preferences → Security & Privacy → Firewall → Turn On Firewall

FileVault 암호화

System Preferences → Security & Privacy → FileVault → Turn On FileVault

디스크 전체를 암호화하여 분실 시 데이터 보호.

SSH 보안

~/.ssh/config 파일 생성:

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# 실행 예제
Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519
  ServerAliveInterval 60
  ServerAliveCountMax 3

권한 설정:

다음은 간단한 bash 코드 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

chmod 600 ~/.ssh/config
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

환경 변수 관리

민감한 정보는 환경 변수로 관리한다.

~/.zshrc에 추가:

아래 코드는 bash를 사용한 구현 예제입니다. 비동기 처리를 통해 효율적으로 작업을 수행합니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# API 키 (예시)
export OPENAI_API_KEY="your-key-here"
export AWS_ACCESS_KEY_ID="your-key-here"
export AWS_SECRET_ACCESS_KEY="your-secret-here"

# 또는 별도 파일로 분리
if [ -f ~/.env ]; then
  source ~/.env
fi

.env 파일은 .gitignore에 추가한다.

14단계: 백업 설정

Time Machine

외장 하드나 NAS를 연결하여 자동 백업 설정.

System Preferences → Time Machine → Select Backup Disk

클라우드 백업

다음은 bash를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# Mackup (설정 파일 백업)
brew install mackup

# ~/.mackup.cfg 생성
cat > ~/.mackup.cfg << 'EOF'
[storage]
engine = icloud

[applications_to_sync]
vscode
iterm2
git
ssh
EOF

# 백업
mackup backup

# 복원 (새 맥에서)
mackup restore

Dotfiles 관리

설정 파일을 Git으로 관리한다.

다음은 bash를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

mkdir ~/dotfiles
cd ~/dotfiles

# 설정 파일 이동
mv ~/.zshrc ~/dotfiles/zshrc
mv ~/.gitconfig ~/dotfiles/gitconfig
mv ~/.vimrc ~/dotfiles/vimrc

# 심볼릭 링크 생성
ln -s ~/dotfiles/zshrc ~/.zshrc
ln -s ~/dotfiles/gitconfig ~/.gitconfig
ln -s ~/dotfiles/vimrc ~/.vimrc

# Git 저장소 초기화
git init
git add .
git commit -m "Initial dotfiles"
git remote add origin [email protected]:username/dotfiles.git
git push -u origin main

새 맥에서 복원:

git clone [email protected]:username/dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.sh  # 심볼릭 링크 생성 스크립트

15단계: 추천 앱

개발 도구

용도가격
VS Code코드 에디터무료
iTerm2터미널무료
Docker Desktop컨테이너무료
PostmanAPI 테스트무료
TablePlus데이터베이스 GUI유료
ForkGit GUI유료

생산성

용도가격
Rectangle윈도우 관리무료
Maccy클립보드 관리무료
Alfred런처유료
Notion노트무료
Obsidian마크다운 노트무료

유틸리티

용도가격
Stats시스템 모니터무료
Kap화면 녹화무료
The Unarchiver압축 해제무료
Transmission토렌트무료

16단계: 자동화 스크립트

전체 설치 스크립트

setup.sh 파일 생성:

다음은 bash를 활용한 상세한 구현 코드입니다. 비동기 처리를 통해 효율적으로 작업을 수행합니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

#!/bin/bash

echo "🚀 macOS 개발 환경 설정 시작..."

# Xcode Command Line Tools
if ! xcode-select -p &> /dev/null; then
  echo "📦 Xcode Command Line Tools 설치 중..."
  xcode-select --install
  read -p "설치 완료 후 Enter를 누르세요..."
fi

# Homebrew
if ! command -v brew &> /dev/null; then
  echo "🍺 Homebrew 설치 중..."
  /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi

# 기본 도구
echo "🔧 기본 도구 설치 중..."
brew install git curl wget
brew install bat exa ripgrep fd fzf tree htop
brew install jq yq

# 개발 언어
echo "💻 개발 언어 설치 중..."
brew install nvm pyenv rbenv go rust

# 앱
echo "📱 애플리케이션 설치 중..."
brew install --cask visual-studio-code
brew install --cask iterm2
brew install --cask docker
brew install --cask rectangle
brew install --cask maccy

# Oh My Zsh
if [ ! -d "$HOME/.oh-my-zsh" ]; then
  echo "🎨 Oh My Zsh 설치 중..."
  sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
fi

# 플러그인
echo "🔌 Zsh 플러그인 설치 중..."
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions 2>/dev/null
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting 2>/dev/null

echo "✅ 설치 완료!"
echo "📝 ~/.zshrc를 편집하여 플러그인을 활성화하세요."
echo "🔄 터미널을 재시작하세요."

실행:

chmod +x setup.sh
./setup.sh

Brewfile로 관리

설치된 패키지를 파일로 저장하여 다른 맥에서 재현할 수 있다.

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# 현재 설치된 패키지 목록 저장
brew bundle dump --file=~/Brewfile

# 다른 맥에서 복원
brew bundle --file=~/Brewfile

Brewfile 예시:

다음은 ruby를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# Brewfile
tap "homebrew/cask-fonts"

# CLI 도구
brew "git"
brew "node"
brew "python"
brew "go"
brew "rust"
brew "bat"
brew "exa"
brew "ripgrep"
brew "fzf"

# GUI 앱
cask "visual-studio-code"
cask "iterm2"
cask "docker"
cask "rectangle"
cask "google-chrome"

# 폰트
cask "font-fira-code"
cask "font-jetbrains-mono"

17단계: 문제 해결

Homebrew 권한 오류

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# Homebrew 디렉토리 소유권 변경
sudo chown -R $(whoami) /usr/local/Cellar /usr/local/Homebrew

# Apple Silicon
sudo chown -R $(whoami) /opt/homebrew

Python 버전 충돌

# 시스템 Python 사용 안 함
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)"; fi' >> ~/.zshrc

Node.js 권한 오류

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# npm 전역 패키지 권한 문제 해결
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

포트 충돌

아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# 특정 포트를 사용하는 프로세스 찾기
lsof -i :3000

# 프로세스 종료
kill -9 PID

Xcode Command Line Tools 재설치

sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install

체크리스트

기본 설정:

  • Xcode Command Line Tools 설치
  • Homebrew 설치
  • iTerm2 설치 및 설정
  • Oh My Zsh 설치
  • Git 사용자 정보 설정
  • SSH 키 생성 및 GitHub 등록

개발 도구:

  • 주 언어 런타임 설치 (Node.js, Python 등)
  • 에디터/IDE 설치 (VS Code, IntelliJ 등)
  • Docker 설치
  • 데이터베이스 설치
  • API 테스트 도구 설치

생산성:

  • 윈도우 관리 도구 (Rectangle)
  • 클립보드 관리 도구 (Maccy)
  • 시스템 모니터 (Stats)
  • 유용한 CLI 도구 (bat, exa, ripgrep 등)

백업:

  • Time Machine 설정
  • Dotfiles Git 저장소 생성
  • Brewfile 생성

자주 묻는 질문

Q. Homebrew 설치 위치가 다른 이유는?

Intel 맥은 /usr/local, Apple Silicon 맥은 /opt/homebrew에 설치된다. 아키텍처 차이 때문이다.

Q. Oh My Zsh 없이 Zsh만 써도 되나?

가능하다. 하지만 Oh My Zsh는 플러그인, 테마, 설정을 쉽게 관리할 수 있어서 초보자에게 추천한다.

Q. nvm, pyenv를 꼭 써야 하나?

프로젝트마다 다른 버전이 필요한 경우가 많다. 버전 관리자를 쓰면 쉽게 전환할 수 있다.

Q. Rosetta 2는 언제 필요한가?

Apple Silicon 맥에서 Intel 전용 앱을 실행할 때 필요하다. Docker, 일부 Node 네이티브 모듈 등.

Q. 맥북 성능이 느려졌다면?

Spotlight 인덱싱, Chrome 탭, Docker 컨테이너, Node 프로세스를 확인한다. Activity Monitor에서 CPU/메모리 사용량을 체크한다.

Q. 새 맥으로 환경을 옮기려면?

Brewfile, Dotfiles, Mackup을 사용하면 대부분 자동화할 수 있다. Time Machine으로 전체 복원도 가능하다.

다음 단계

참고 자료

macOS 개발 환경 설정은 한 번만 제대로 해두면 생산성이 크게 향상된다. 위 가이드를 따라하면 30분 안에 완성도 높은 개발 환경을 구축할 수 있다.

... 996 lines not shown ... Token usage: 63706/1000000; 936294 remaining Start-Sleep -Seconds 3