夜七時

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ライクなリッチな表示を維持
  • ✅ 軽量で高速な動作
  • ✅ 設定の引き継ぎが簡単

フロントエンド開発において、より汎用的で将来性のあるターミナル環境を構築できました。

永井 大介

© 二〇二五