starshipの使い方完全ガイド【インストールから応用まで】
ターミナルを開くと、味気ない「$」や「>」があなたを迎え入れる。今いるディレクトリはどこか、どのGitブランチにいるのか、Node.jsのバージョンは何か。これらの情報は、いちいちコマンドを打って確認しなければならない。作業のたびに集中が途切れ、小さなストレスが積み重なる。これが、カスタマイズされていないシェルプロンプトの世界だ。
しかし、もしターミナルが、必要な情報を常に目の前に提示してくれたらどうだろうか。鮮やかで情報豊富なプロンプトが、あなたの作業効率を劇的に向上させる。現在のGitブランチ、変更されたファイル数、使用中のプログラミング言語バージョン。これら全てが一目で分かるようになる。まるで、ターミナルがあなた専用のインテリジェントなアシスタントになったかのようだ。
本記事では、この魔法のような体験を可能にするCLIツール「starship」について、インストールから応用まで徹底的に解説する。starshipを導入し、あなたの開発体験を向上させ、より創造的な作業に集中できるようになろう。
starshipとは
starshipは、Rust言語で書かれた超高速かつカスタマイズ可能なシェルプロンプトツールだ。Bash、Zsh、Fish、PowerShellなど、主要なシェルで動作する。デフォルトのプロンプトでは得られない豊富な情報を、シンプルかつ直感的に表示できる点が特徴だ。
開発者は、ターミナル上で多くの時間を過ごす。しかし、標準のプロンプトでは、現在作業している環境に関する情報が不足しがちだ。例えば、Gitリポジトリのブランチ名や、使用しているプログラミング言語のバージョンなどは、別途コマンドを打って確認する必要があった。この不便さを解消し、開発者のニーズに応える形でstarshipは誕生した。
starshipは、その速度と柔軟性で多くの開発者に支持されている。必要な情報を素早く表示し、ターミナル作業のストレスを軽減する。これにより、開発者はより本質的な作業に集中できるようになるだろう。
インストール方法
starshipのインストールは非常に簡単だ。お使いのOSとシェルに応じて、以下の手順で進めてほしい。
1. starship本体のインストール
macOSの場合
Homebrewを使ってインストールするのが最も一般的だ。
brew install starship
Linuxの場合
Homebrewを使用するか、公式のインストールスクリプトを実行する。 Homebrewを使う場合:
brew install starship
インストールスクリプトを使う場合:
curl -sS https://starship.rs/install.sh | sh
このスクリプトは、starshipのバイナリを自動的にダウンロードし、適切なパスに配置してくれる。
Windowsの場合
Windowsでは、Scoop、winget、Chocolateyなどのパッケージマネージャを利用できる。 Scoopを使う場合:
scoop install starship
wingetを使う場合:
winget install starship
Chocolateyを使う場合:
choco install starship
WSL (Windows Subsystem for Linux) を利用している場合は、WSL内のLinux環境でLinuxのインストール方法を適用できる。
2. シェルへの設定
starshipをインストールしたら、お使いのシェルにstarshipを組み込む必要がある。これにより、ターミナルを開くたびにstarshipのプロンプトが有効になる。
Bashの場合
~/.bashrcファイルに以下の行を追加する。
echo 'eval "$(starship init bash)"' >> ~/.bashrc
変更を反映するため、以下のコマンドを実行するか、ターミナルを再起動する。
source ~/.bashrc
Zshの場合
~/.zshrcファイルに以下の行を追加する。
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
変更を反映するため、以下のコマンドを実行するか、ターミナルを再起動する。
source ~/.zshrc
Fishの場合
~/.config/fish/config.fishファイルに以下の行を追加する。
echo 'starship init fish | source' >> ~/.config/fish/config.fish
変更を反映するため、以下のコマンドを実行するか、ターミナルを再起動する。
source ~/.config/fish/config.fish
PowerShellの場合
$PROFILEに指定されたプロファイルファイル(通常はDocuments\PowerShell\Microsoft.PowerShell_profile.ps1など)に以下の行を追加する。
Invoke-Expression (&starship init powershell)
変更を反映するため、PowerShellを再起動する。
3. Nerd Fontsのインストール(推奨)
starshipは、絵文字や特殊記号を多用して情報を視覚的に表現する。これらの記号を正しく表示するには、「Nerd Fonts」と呼ばれる特殊なフォントのインストールが推奨される。Nerd Fontsは、多くの人気のプログラミング用フォントに、追加のアイコンやグリフを統合したものだ。
Nerd Fontsは、公式ウェブサイトからダウンロードできる。好みのフォントをダウンロードし、OSのフォントインストール手順に従って導入しよう。その後、お使いのターミナルエミュレータ(iTerm2, Alacritty, Windows Terminalなど)の設定で、インストールしたNerd Fontsを選択する。
基本的な使い方
starshipは、一度設定すればほとんど自動で動作するツールだ。そのため、頻繁に使うコマンドは多くない。しかし、いくつかの基本的な操作を覚えておくと良いだろう。
1. starship init <shell>
このコマンドは、starshipを特定のシェルに組み込むための初期化スクリプトを出力する。インストール方法のセクションで説明したように、通常はシェルの設定ファイル(例: ~/.bashrc, ~/.zshrc)に追記して使用する。
# Zshの場合の例
eval "$(starship init zsh)"
この行が設定ファイルにあれば、シェル起動時にstarshipが有効になる。
2. starship preset <preset_name>
starshipには、あらかじめ定義されたテーマ(プリセット)がいくつか用意されている。これらを使うと、手軽にプロンプトの見た目を変更できる。presetコマンドは、指定されたプリセットの設定を標準出力に出力する。
例えば、pastel-powerlineというプリセットを試したい場合:
starship preset pastel-powerline
この出力を~/.config/starship.tomlにリダイレクトすることで、そのテーマを適用できる。
starship preset pastel-powerline > ~/.config/starship.toml
starshipの設定ファイルは、通常~/.config/starship.tomlというパスに配置される。
3. starship --version
現在インストールされているstarshipのバージョンを確認する。問題が発生した場合や、最新バージョンが適用されているか確認したいときに役立つ。
starship --version
実行すると、例えば「starship 1.18.0」のようにバージョン情報が表示される。
4. 設定ファイルの編集
starshipの真価は、~/.config/starship.tomlという設定ファイルを編集することで発揮される。このファイルは、starshipのプロンプトの見た目や表示内容を細かくカスタマイズするための中心的な存在だ。
このファイルを直接開いて編集する。
# 例えばVS Codeで開く場合
code ~/.config/starship.toml
設定ファイルを変更すると、通常は新しいターミナルセッションを開くか、sourceコマンドでシェルの設定を再読み込みすることで、変更が即座に反映される。
これらのコマンドと設定ファイルの概念を理解すれば、starshipを使いこなすための第一歩となるだろう。
便利な使い方・応用例 3選
starshipは、単に見た目を良くするだけでなく、開発作業を効率化するための強力な情報源となる。ここでは、実際の開発シーンで役立つ応用例を3つ紹介する。
1. Gitリポジトリの状態を即座に把握する
複数のGitリポジトリを行き来する開発者にとって、現在のブランチ名や変更状態は常に把握しておきたい情報だ。starshipは、これらの情報をプロンプトに自動で表示してくれる。
具体的な利用シーン
- プロジェクトAからプロジェクトBへ移動した際、すぐに現在のブランチ名を確認できる。
- コードをコミットする前に、未追跡ファイルや変更済みファイルがあるか一目でわかる。
- マージコンフリクトが発生している場合、プロンプトで警告表示されるため、見落としを防げる。
設定例 (~/.config/starship.toml)
starshipはデフォルトでGitモジュールを有効にしているが、表示をさらにカスタマイズできる。
# Gitブランチの表示設定
[git_branch]
symbol = "🌿 " # ブランチの前に表示される記号
style = "bold green" # ブランチ名のスタイル(太字、緑色)
# Gitステータスの表示設定
[git_status]
conflicted = "⚔️ " # コンフリクト中のファイルがある場合の記号
ahead = "🏎️💨 " # ローカルがリモートより進んでいる場合の記号
behind = "🐌 " # ローカルがリモートより遅れている場合の記号
diverged = "🔱 " # ローカルとリモートが分岐している場合の記号
untracked = "❓ " # 未追跡ファイルがある場合の記号
stashed = "📦 " # スタッシュがある場合の記号
modified = "📝 " # 変更済みファイルがある場合の記号
staged = "✅ " # ステージング済みファイルがある場合の記号
renamed = "🚚 " # 名前変更済みファイルがある場合の記号
deleted = "🗑️ " # 削除済みファイルがある場合の記号
この設定により、例えばGitリポジトリ内でブランチを切り替えたりファイルを変更したりすると、プロンプトがリアルタイムで更新され、現在の状態を視覚的に把握できるようになる。
2. プログラミング言語のバージョンを自動表示する
複数のプログラミング言語や、同じ言語でも異なるバージョンを扱う場合、現在のプロジェクトでどのバージョンが使われているかを知ることは重要だ。starshipは、現在のディレクトリに基づいて、関連する言語のバージョンを自動で表示する。
具体的な利用シーン
- Node.jsプロジェクトで作業している場合、使用中のNode.jsとnpm(またはyarn)のバージョンが表示される。
- Pythonの仮想環境に入ると、その環境のPythonバージョンが表示される。
- Rustプロジェクトで
rustupを使ってバージョンを切り替えた際、すぐに反映される。
設定例 (~/.config/starship.toml)
starshipは多くの言語モジュールをサポートしており、特別な設定なしで動作することが多い。しかし、表示をカスタマイズすることも可能だ。
# Node.jsモジュールの設定例
[nodejs]
symbol = "⬢ " # Node.jsのシンボル
format = "via [$symbol($version)($vpm_version)]($style) " # 表示フォーマット
detect_files = ["package.json", ".node-version"] # これらのファイルが存在する場合に表示
# Pythonモジュールの設定例
[python]
symbol = "🐍 " # Pythonのシンボル
format = "via [$symbol($version)( \\($virtualenv\\))]($style) " # 表示フォーマット
detect_files = ["requirements.txt", "pyproject.toml", "setup.py", ".python-version"]
これらの設定により、package.jsonやrequirements.txtなどが存在するディレクトリに移動すると、プロンプトに該当言語のバージョンが表示される。これにより、環境の不一致による問題を未然に防ぎやすくなる。
3. Kubernetesクラスタ情報を常に表示する
Kubernetes環境で作業する際、現在どのクラスタのどの名前空間に接続しているかは非常に重要だ。誤ったクラスタや名前空間でコマンドを実行すると、意図しない結果を招く可能性がある。starshipは、kubectlコマンドで設定された現在のコンテキストと名前空間をプロンプトに表示できる。
具体的な利用シーン
- 開発環境、ステージング環境、本番環境など、複数のKubernetesクラスタを行き来する際に、現在の接続先を常に確認できる。
kubectlコマンドを実行する前に、表示されているコンテキストと名前空間を見て、操作ミスを防ぐ。- 名前空間を切り替えた際、プロンプトが即座に更新され、視覚的に確認できる。
設定例 (~/.config/starship.toml)
Kubernetesモジュールはデフォルトで無効になっている場合があるため、明示的に有効にする。
# Kubernetesモジュールの設定例
[kubernetes]
format = "[$symbol($context)($namespace)]($style) " # 表示フォーマット
symbol = "⛵ " # Kubernetesのシンボル
style = "bold blue" # スタイル
disabled = false # モジュールを有効にする
この設定により、kubectl config use-contextやkubectl config set-context --current --namespaceなどのコマンドでコンテキストや名前空間を切り替えると、プロンプトにその情報が表示される。これにより、Kubernetes操作の安全性が向上する。
これらの応用例は、starshipが単なる見た目のツールではなく、日々の開発作業をサポートする強力なアシスタントであることを示している。設定ファイルを少し編集するだけで、あなたのターミナルはより賢く、より生産的なものに変わるだろう。
他ツールとの組み合わせ
starshipは、多くの開発ツールや環境とシームレスに連携するように設計されている。ここでは、starshipと相性の良い主要なツールと、その組み合わせ方について解説する。
1. ターミナルエミュレータ
starshipの美しいプロンプトを最大限に活かすためには、高機能なターミナルエミュレータとNerd Fontsの組み合わせが不可欠だ。
- iTerm2 (macOS): 高度なカスタマイズ性、分割ペイン、ホットキー機能などを備える。Nerd FontsをiTerm2の設定で適用することで、
starshipの絵文字や記号が美しく表示される。 - Alacritty (クロスプラットフォーム): GPUアクセラレーションを利用した超高速なターミナルエミュレータ。設定ファイル
alacritty.tomlでNerd Fontsを指定する。 - Windows Terminal (Windows): Windows 10/11の標準ターミナル。複数のシェルをタブで管理でき、プロファイル設定でNerd Fontsを適用できる。
- kitty (クロスプラットフォーム): GPUベースで高速。設定ファイル
kitty.confでフォントを設定する。
これらのターミナルエミュレータでNerd Fontsを設定すれば、starshipの多彩な記号や色が正しく、そして美しく表示されるようになる。
2. シェル
starshipは、主要なシェルであればどれでも動作する汎用性が魅力だ。
- Zsh: Oh My ZshやPowerlevel10kといった人気のフレームワークと組み合わせて使われることが多い。
- Powerlevel10kとの共存:
starshipとPowerlevel10kはどちらもプロンプトをカスタマイズするツールだ。同時に有効にすると競合するため、どちらか一方を無効にする必要がある。starshipを使いたい場合は、Powerlevel10kの設定を無効にするか削除しよう。
- Powerlevel10kとの共存:
starshipはBashでも快適に動作する。starshipはFishの機能と合わせて、よりリッチなターミナル体験を提供する。starshipはPowerShellプロファイルに設定することで、Windowsネイティブの環境でも活用できる。starshipは、eval "$(starship init <shell_name>)"という形でシェルに組み込まれるため、シェル固有の機能や他のプラグインとの干渉は最小限に抑えられるように設計されている。
3. バージョンマネージャ
starshipは、各種プログラミング言語のバージョンマネージャと連携し、アクティブなバージョンをプロンプトに表示する。特別な設定はほとんど不要だ。
- Node.js: nvm, volta
starshipは、nvm useやvoltaで切り替えたNode.jsのバージョンを自動的に検出し、プロンプトに表示する。
- Python: pyenv, conda
pyenv activateやconda activateで有効にした仮想環境やPythonのバージョンが、プロンプトに反映される。
- Ruby: rbenv, RVM
rbenv localなどで設定したRubyのバージョンをstarshipが認識し、表示する。
- Rust: rustup
rustupで切り替えたRustツールチェインのバージョンをプロンプトに表示する。
- Go: goenv
goenvで管理されているGoのバージョンが表示される。
これらのバージョンマネージャを使っている場合、starshipは現在のプロジェクトの環境を常に把握し、プロンプトを通じてあなたに知らせてくれる。
4. Git
Gitは開発ワークフローの中心であり、starshipはGitリポジトリの情報を非常に詳細に表示する。
- ブランチ名、コミット状態、変更されたファイル数、スタッシュの有無など、Gitのあらゆる状態をプロンプトで確認できる。
- Gitコマンド(
git status,git branchなど)を頻繁に実行する必要がなくなる。
starshipとこれらのツールを組み合わせることで、あなたのターミナル環境はより強力で、より情報豊富に、そしてより快適になるだろう。
よくある設定・カスタマイズ
starshipの最大の魅力は、その高いカスタマイズ性にある。~/.config/starship.tomlファイルを編集することで、プロンプトのあらゆる側面を自分好みに調整できる。
1. 設定ファイルの基本構造
starship.tomlは、TOML形式で記述される。全体的なフォーマットと、各モジュールごとの設定で構成される。
# プロンプト全体のフォーマット
format = """
$username@$hostname $directory $git_branch$git_status
$character
"""
# 各モジュールの設定
[module_name]
param = "value"
# ...
2. プロンプト全体のフォーマット変更
format設定で、どのモジュールをどの順序で表示するか、そして改行を入れるかなどを定義できる。
# 例: 1行目にユーザー、ホスト、ディレクトリ、Git情報を表示し、
# 2行目にプロンプト記号を表示する2行プロンプト
format = """$username@$hostname $directory$git_branch$git_status$line_break$character"""
$line_break: プロンプトを改行する。$character: プロンプトの最後の記号(例:$や>)。
3. モジュールの有効化/無効化と順序変更
starshipは多くのモジュールを内蔵している。特定のモジュールを表示したくない場合はdisabled = trueを設定するか、format文字列からそのモジュールを削除する。
# ホスト名モジュールを無効にする
[hostname]
disabled = true
# `format`文字列で表示順序を定義
format = """$directory$git_branch$nodejs$character""" # この例ではnodejsモジュールを表示
4. 色と記号のカスタマイズ
各モジュールには、symbol(記号)とstyle(色や太字)を設定できる。
# ユーザー名モジュールのカスタマイズ例
[username]
style_user = "bold yellow" # 通常ユーザーのスタイル
style_root = "bold red" # rootユーザーのスタイル
format = "[$user]($style) " # ユーザー名の表示フォーマット
# ディレクトリモジュールのカスタマイズ例
[directory]
truncation_length = 3 # 表示するディレクトリの階層数
truncate_to_repo = false # Gitリポジトリのルートで短縮しない
style = "bold cyan" # ディレクトリ名のスタイル
styleには、bold,italic,underlineなどの修飾子と、black,red,green,yellow,blue,magenta,cyan,whiteなどの色を指定できる。例えば"bold green"。
5. 特定のモジュールの詳細設定例
実行時間 (cmd_duration)
コマンドの実行時間が一定以上かかった場合に、その時間を表示する。
[cmd_duration]
min_time = 1_000 # 1000ms (1秒)以上かかった場合に表示
format = "[$duration]($style) "
style = "yellow"
バッテリー残量 (battery)
ノートPCの場合にバッテリー残量を表示する。
[battery]
full_symbol = "🔋 "
charging_symbol = "⚡️ "
discharging_symbol = "💀 "
format = "[$symbol($percentage)(\\( $time \\))]($style) "
disabled = false
6. 設定ファイルのテンプレートとdotfiles
starshipの公式ウェブサイトには、多くのプリセットやカスタマイズ例が掲載されている。これらを参考に、自分だけのstarship.tomlを作成しよう。
もしdotfiles(設定ファイルをGitで管理する仕組み)を使っているなら、starship.tomlもその管理下に入れることを推奨する。例えば、~/.config/starship.tomlをdotfilesのリポジトリ内のファイルへのシンボリックリンクにする。
# 例: dotfilesリポジトリが ~/dotfiles/ にある場合
ln -sfn ~/dotfiles/starship.toml ~/.config/starship.toml
これにより、複数の環境で同じstarship設定を簡単に同期できるようになる。
今日からできる実行プラン
starshipを導入し、あなたのターミナル体験を向上させるための3ステップの実行プランを紹介する。
ステップ1: starshipをインストールする
まず、お使いのOSに応じた方法でstarship本体をインストールしよう。
macOS/Linux (Homebrewユーザー):
brew install starship
Linux (Homebrew以外):
curl -sS https://starship.rs/install.sh | sh
Windows (Scoopユーザー):
scoop install starship
インストールが完了したら、starship --versionコマンドを実行し、バージョン情報が表示されることを確認しよう。
ステップ2: シェルにstarshipを設定する
次に、starshipがあなたのシェルのプロンプトとして機能するように設定ファイルに追記する。
Zshユーザーの場合:
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
Bashユーザーの場合:
echo 'eval "$(starship init bash)"' >> ~/.bashrc
ファイルを保存したら、以下のコマンドでお使いのシェルの設定を反映させるか、新しいターミナルセッションを開いてみよう。
# Zshの場合
source ~/.zshrc
# Bashの場合
source ~/.bashrc
これで、ターミナルのプロンプトがstarshipのデフォルト表示に変わるはずだ。
ステップ3: プロンプトをカスタマイズする
最後に、starshipの強力なカスタマイズ機能を体験しよう。まずは、手軽にテーマを適用してみるのがおすすめだ。
starshipにはいくつかのプリセットテーマが用意されている。例えば、pastel-powerlineというテーマを適用したい場合:
starship preset pastel-powerline -o ~/.config/starship.toml
このコマンドを実行すると、~/.config/starship.tomlファイルが作成され、パステル調のPowerline風テーマが適用される。ターミナルを再起動するか、sourceコマンドで設定を再読み込みすると、新しいテーマが反映されるだろう。
さらに、Nerd Fontsをインストールし、お使いのターミナルエミュレータで設定すると、より多くの記号が正しく表示され、starshipの魅力を最大限に引き出せる。
この3ステップを終えれば、あなたのターミナルはこれまでとは見違えるほど賢く、そして美しくなっているはずだ。公式ドキュメントや他の開発者の設定例を参考に、自分だけの理想のプロンプトを構築していこう。
参考文献
- Starship: The cross-shell prompt for astronauts
- starship-rs/starship: ☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!
- Nerd Fonts - Iconic font aggregator, patcher, & CDN