2025-09-10
macOSターミナル環境構築ガイド(fish → Starship移行編)
fishシェルからより汎用的で次世代感のあるターミナル環境に移行する手順をまとめました。
なぜfishから移行するのか?
fishの課題
- POSIX非準拠によるパス設定の互換性問題
- bash/zsh向けの設定やスクリプトがそのまま使えない
- 開発ツールの公式ドキュメントがbash/zsh前提で書かれることが多い
移行先の選択肢
- Zsh + Oh My Zsh: 安定した定番、豊富なプラグインエコシステム
- Zsh + Starship: モダンで軽量、設定ファイル1つで管理
- Nushell: 次世代候補、構造化データファーストの設計
今回は Zsh + Starship を選択。理由は:
- POSIX準拠でパス問題解決
- fishライクなリッチな表示
- 設定の移行性が高い(1ファイルで完結)
- パフォーマンスが良い(Rust製)
セットアップ手順
1. Homebrewのインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
PATHの設定:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
2. Starshipのインストール
brew install starship
3. 基本ツールのインストール
brew install git # 最新版Git
brew install node # Node.js
brew install tree # ディレクトリ構造表示
4. zsh補完機能の強化
brew install zsh-autosuggestions zsh-syntax-highlighting
5. Starshipの有効化
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
source ~/.zshrc
6. Starship設定ファイルの作成
設定ディレクトリを作成:
mkdir -p ~/.config
設定ファイルを編集:
starship config
おすすめのStarship設定
フロントエンド開発者向けの設定例:
# Starship設定ファイル
# ~/.config/starship.toml
# プロンプトの形式
format = """
$username\
$hostname\
$directory\
$git_branch\
$git_status\
$nodejs\
$package\
$cmd_duration\
$line_break\
$character"""
# ディレクトリ表示
[directory]
truncation_length = 3
truncate_to_repo = true
# Git ブランチ
[git_branch]
symbol = "🌱 "
format = "[$symbol$branch]($style) "
# Git ステータス
[git_status]
conflicted = "🏳"
ahead = "🏎💨"
behind = "😰"
diverged = "😵"
up_to_date = "✓"
untracked = "🤷"
stashed = "📦"
modified = "📝"
staged = "➕"
renamed = "👅"
deleted = "🗑"
# Node.js バージョン表示
[nodejs]
symbol = "⬢ "
format = "[$symbol($version )]($style)"
detect_extensions = ["js", "mjs", "cjs", "ts", "tsx", "jsx"]
detect_files = ["package.json", ".nvmrc"]
# package.json の version 表示
[package]
symbol = "📦 "
format = "[$symbol$version]($style) "
display_private = false
# コマンド実行時間(2秒以上で表示)
[cmd_duration]
min_time = 2_000
format = "took [$duration](bold yellow) "
# プロンプト文字
[character]
success_symbol = "[❯](bold green)"
error_symbol = "[❯](bold red)"
# ユーザー名(必要に応じてコメントアウト)
[username]
show_always = false
format = "[$user]($style) "
# ホスト名(SSH接続時のみ表示)
[hostname]
ssh_only = true
format = "[@$hostname]($style) "
この設定の特徴
🌱 Git情報が見やすい
- ブランチ名と変更状況が絵文字で直感的に表示
- コンフリクトや未追跡ファイルも一目で分かる
⬢ Node.js/npm関連
- プロジェクトのNode.jsバージョンを自動表示
- package.jsonのバージョン情報も表示
📦 プロジェクト判別
- React、Next.js、Astroプロジェクトを自動認識
- 適切なファイル拡張子を検出
⏱️ 実行時間表示
- 重い処理(ビルドなど)の実行時間を表示
- 2秒以上かかった処理のみ表示
トラブルシューティング
Homebrewインストール時のエラー
Error: Failed to download https://formulae.brew.sh/api/formula.jws.json!
一時的なネットワーク問題です。以下で解決:
brew update
Starship設定ファイルが作れない
E212: Can't open file for writing
設定ディレクトリが存在しない場合:
mkdir -p ~/.config
starship config
viエディタの基本操作
-
i
: 編集モード開始 -
Esc
: ノーマルモードに戻る -
:wq
: 保存して終了 -
:q!
: 保存せず終了
設定の引き継ぎ方法
新しいMacに移行する際は、以下のファイルをバックアップ:
-
~/.zshrc
-
~/.config/starship.toml
さらに便利な方法として、dotfilesをGitで管理することを推奨:
# dotfilesリポジトリの作成例
mkdir ~/dotfiles
cp ~/.zshrc ~/dotfiles/
cp ~/.config/starship.toml ~/dotfiles/
cd ~/dotfiles
git init
git add .
git commit -m "Initial dotfiles"
git remote add origin https://github.com/username/dotfiles
git push -u origin main
まとめ
fishからZsh + Starshipへの移行により:
- ✅ パス設定の互換性問題を解決
- ✅ fishライクなリッチな表示を維持
- ✅ 軽量で高速な動作
- ✅ 設定の引き継ぎが簡単
フロントエンド開発において、より汎用的で将来性のあるターミナル環境を構築できました。