Starshipとは?Rust製シェルプロンプト 導入・設定・カスタマイズガイド
「Starship」と検索するとSpaceXの宇宙船やK-POPの事務所名も並びますが、開発者が探しているのはたいていRust製のクロスシェルプロンプト「Starship」です。zsh・bash・fish・PowerShellなど、どのシェルでも同じ設定ファイル1つで動き、Gitの状態や言語バージョンを高速に表示します。この記事では、Starshipの概要、OS・シェル別のインストール、starship.tomlによる設定とカスタマイズ、プリセット(テーマ)、他ツールとの比較までを、コピペできる実例つきで解説します。
目次
まとめ:この記事の結論
先に要点だけお伝えします。
- Starshipは「設定1ファイルで、あらゆるシェルに同じ高速プロンプトを与える」ツールです。Rust製で描画はミリ秒単位と高速、各モジュールを非同期処理するため待ち時間をほぼ感じさせません。
- 導入は2ステップ。インストール(例:
curl -sS https://starship.rs/install.sh | sh)と、シェル設定ファイルへの初期化行の追加(例:eval "$(starship init zsh)")だけです。 - 見た目を整える最短ルートはプリセット。
starship preset tokyo-night -o ~/.config/starship.tomlのように1コマンドでテーマを丸ごと適用でき、そこからstarship.tomlで細部を調整します。アイコン表示にはNerd Fontが必要です。
以下で、インストールから設定・カスタマイズ・比較までを順に見ていきます。
Starshipとは何か:Rust製クロスシェルプロンプトの基礎
Starshipは、ターミナルの入力行(プロンプト)を置き換えるオープンソースのツールです。現在のディレクトリ、Gitブランチや変更の有無、Node.js・Python・Rustなどの言語バージョン、Dockerコンテナやクラウドの文脈といった情報を自動で検出し、必要なものだけを簡潔に表示します。ライセンスはISCで、ソースはGitHubのstarship/starshipで公開されています。
名前が紛らわしいですが、本記事で扱うStarshipはロケットでも音楽グループでもなく、コマンドラインのプロンプトツールです。最大の特長は次の3点です。
- クロスシェル・クロスプラットフォーム:bash・zsh・fish・PowerShell・Nushellなど多数のシェルと、Linux・macOS・Windowsに対応します。同じ
starship.tomlを使い回せば、どの環境でも見た目が揃います。 - 高速・軽量:Rustで書かれており、公式が「blazing-fast(猛烈に速い)」と称するほど高速で、プロンプト描画は一般的な環境で数〜十数ミリ秒程度に収まります(速度は環境やモジュール数で変わります)。各モジュールを非同期で評価するため、重い言語検出があってもターミナルの体感速度を損ないにくい設計です。
- モジュール式でミニマル:表示要素は「モジュール」として独立しており、不要なものはオフにできます。デフォルトでも実用的で、設定ゼロでもすぐ使えます。
Starshipのインストール方法(OS・シェル別)
インストールは「①バイナリの導入」と「②シェルへの初期化行の追加」の2段階です。まずバイナリを入れます。OSやパッケージマネージャーに応じて方法を選べます。
# Linux / macOS 共通(公式インストールスクリプト)
curl -sS https://starship.rs/install.sh | sh
# macOS(Homebrew)
brew install starship
# Ubuntu / Debian(24.04以降はaptで導入可能)
sudo apt install starship
# Windows(Scoop もしくは winget)
scoop install starship
winget install --id Starship.Starship
# Rust の cargo から
cargo install starship --locked
注意点として、aptやHomebrewなどディストリビューション同梱のパッケージは、最新リリースに少し遅れて更新されることがあります。最新版や新しいプリセットをすぐ使いたい場合は、公式インストールスクリプト(curl -sS https://starship.rs/install.sh | sh)またはcargoでの導入が確実です。
次に、使っているシェルの設定ファイルへ初期化行を1行追加します。これでターミナル起動時にStarshipが有効になります。
# bash(~/.bashrc の末尾)
eval "$(starship init bash)"
# zsh(~/.zshrc の末尾)
eval "$(starship init zsh)"
# fish(~/.config/fish/config.fish)
starship init fish | source
# PowerShell($PROFILE)
Invoke-Expression (&starship init powershell)
追加後はターミナルを開き直すか、source ~/.zshrc のように再読み込みすると反映されます。WindowsでLinux環境を使う場合は、WSL2とは何か:基本概念と歴史的背景で解説しているWSL上でLinuxと同じ手順を実行できます。Linux自体の準備はUbuntuのインストール手順と必要なシステム要件についてもあわせて参考にしてください。アイコンが文字化けする場合は、後述のNerd Fontが未設定であることがほとんどです。
starship.tomlの基本設定とカスタマイズ
Starshipの設定は ~/.config/starship.toml に書きます。ファイルが無くてもデフォルトで動作し、カスタマイズしたいときだけ作成すればよい仕組みです。TOML形式なので、モジュール名をセクションとして並べ、その中にキーと値を書くだけです。まずは全体に効く基本設定の例です。
# ~/.config/starship.toml
add_newline = true
command_timeout = 1000
[character]
success_symbol = "[>](bold green)"
error_symbol = "[>](bold red)"
[directory]
truncation_length = 3
truncate_to_repo = true
[cmd_duration]
min_time = 500
format = "took [$duration](bold yellow) "
[directory] はパスの表示を短く保ち、[cmd_duration] は500ミリ秒を超えた処理だけ実行時間を表示します。次に、開発で最も使うGitモジュールの例です。ブランチ名や変更状況の見た目を細かく調整できます。
[git_branch]
symbol = "branch "
style = "bold purple"
format = "on [$symbol$branch]($style) "
[git_status]
style = "bold red"
conflicted = "="
ahead = "A${count}"
behind = "B${count}"
Gitコマンド自体の整理を見直したいときは、Gitでよく使うコマンド一覧とその使用方法について解説が参考になります。言語モジュールやユーザー名表示も同様にセクション単位で制御できます。
[nodejs]
format = "via [Node $version](bold green) "
format = "via [Py $version](bold yellow) "
[username]
show_always = false
show_always = false にすると、rootやSSH接続時など必要なときだけユーザー名を表示します。Dockerコンテナ内での作業が多い場合は、Starshipのdockerモジュールが文脈を示してくれます(コンテナ自体の基礎はDockerとは何か?仮想環境との違いや特徴をわかりやすく解説を参照)。設定を変更したら、starship print-config で現在の構成を確認すると安全です。
標準では表示されない任意モジュールも、必要に応じて足せます。たとえば時刻はデフォルトで無効なので、表示したい場合は明示的に有効化します。バッテリー残量やAWSプロファイルなど、作業内容に合わせて「出したい情報だけ」を加えていくのがStarship流のカスタマイズです。
[time]
disabled = false
format = "at [$time]($style) "
time_format = "%H:%M"
[battery]
disabled = false
[[battery.display]]
threshold = 20
style = "bold red"
[aws]
format = "on [AWS $profile]($style) "
[time] と [battery] はいずれもデフォルトで無効なので、disabled = false で有効化します。バッテリーは [[battery.display]] で残量のしきい値ごとに色を変えられ、ノートPCで作業するときに残量を一目で把握できます。[aws] のように、クラウドのプロファイルを表示するモジュールも用意されています。表示するモジュールを絞り込むほどプロンプトは軽く読みやすくなるため、まずは必要なものだけを足す方針がおすすめです。
プリセット(テーマ)で見た目を一発で整える
「とりあえず見栄えの良いプロンプトにしたい」なら、ゼロから starship.toml を書くよりプリセットの適用が最短です。Starshipは公式プリセットを内蔵しており、次のコマンドで一覧表示と適用ができます。
# 利用できるプリセットの一覧を表示
starship preset --list
# プリセットを starship.toml として書き出して適用
starship preset tokyo-night -o ~/.config/starship.toml
書き出したファイルは通常の starship.toml なので、適用後にそのまま色やモジュールを微調整できます。主な公式プリセットは次のとおりです。
- nerd-font-symbols:各モジュールの記号をNerd Fontのアイコンに変更。
- no-nerd-font:Nerd Fontを一切使わない構成(将来のデフォルト予定)。
- plain-text-symbols:記号をプレーンテキスト化。Unicodeが使えない環境向け。
- bracketed-segments:各セグメントを角括弧で囲む表示に変更。
- no-runtime-versions:言語ランタイムのバージョンを隠す。コンテナ作業向き。
- no-empty-icons:該当ツールが無いときアイコンを出さない。
- pure-preset:人気プロンプト「Pure」の見た目を再現。
- pastel-powerline / tokyo-night / gruvbox-rainbow / catppuccin-powerline / jetpack:いずれもPowerline調やカラーテーマ系の華やかなプリセット。
これらのアイコンを正しく表示するにはNerd Fontが必要です。Nerd Fontは、開発者向けにアイコン用の特殊文字を統合したフォント群で、公式サイト(nerdfonts.com)からHack・FiraCode・JetBrainsMonoなどのパッチ済みフォントを入手できます。インストール後、使用中のターミナル(iTerm2やWindows Terminalなど)側でそのフォントを明示的に選択してください。アイコンが□や文字化けになる場合は、フォント未適用かUTF-8未設定が主因です。
動作確認・アップデートとつまずきやすい点
導入後は、まず正しく入ったかを確認します。
# インストール先とバージョンの確認
which starship
starship --version
# 現在の設定内容を確認(カスタマイズ前の状態把握に便利)
starship print-config
プロンプトが変わらない・反映されないときは、原因のほとんどが次のいずれかです。①初期化行の入れ忘れ(eval "$(starship init zsh)" 等を設定ファイルに書いたか)、②シェルの取り違え(zshなのにbash用の init bash を書いている)、③再読み込み忘れ(source ~/.zshrc またはターミナル再起動)です。command not found: starship と出る場合はPATHが通っていません。手動で ~/.local/bin などに置いたときは、設定ファイルに次の行を追加します。
export PATH="$HOME/.local/bin:$PATH"
アップデートは、導入時の方法に合わせて実行します。brew upgrade starship、scoop update starship、aptなら sudo apt upgrade、手動導入ならインストールスクリプトの再実行です。いずれも starship.toml はそのまま残るため、設定をやり直す必要はありません。アイコンが□や?で表示される場合は、前述のNerd Fontが未設定・未選択であることがほとんどです。
Oh My Zsh・Powerline・Pureとの比較
プロンプト系ツールにはいくつか選択肢があります。Starshipの位置づけを、代表的な3つと比べて整理します。表は概要の早見表で、詳細は本文で補足します。
| ツール | 言語/依存 | 速度 | クロスシェル | 設定 |
|---|---|---|---|---|
| Starship | Rust | 速い | 対応(多数) | TOML 1ファイル |
| Oh My Zsh | zsh拡張 | やや重い | zsh中心 | プラグイン/テーマ |
| Powerline | Python | 重い | 限定的 | JSON等で複雑 |
| Pure | zsh | 速い | zsh中心 | 最小限 |
Oh My Zshはプラグインとテーマが豊富なzshフレームワークで、補完やGit補助が強力な一方、描画は重くなりがちです。Starshipは表示部分だけを担うため、Oh My Zshの補完機能を活かしつつプロンプト描画をStarshipに任せる「併用」も可能です。Powerlineは見た目がリッチですがPython依存で起動が重く、Pureはzsh向けで軽量・ミニマルですが多シェル対応や拡張性ではStarshipに分があります。OSやシェルを横断して同じ環境を保ちたいなら、設定を1ファイルに集約できるStarshipが扱いやすい選択肢です。
よくある質問(FAQ)
Q. Starshipとは何ですか?「starship」の意味は?
A. 開発文脈での「Starship」は、Rust製のクロスシェルプロンプトを指します。SpaceXの宇宙船や同名の音楽グループとは別物です。シェルの入力行に、ディレクトリやGit状態などを高速に表示します。
Q. PureとStarshipはどちらが良い?
A. zshだけを使い最小限の表示で十分ならPureも好相性です。複数シェル・複数OSで設定を統一したい、Gitや言語バージョンを多く表示したい場合はStarshipが向きます。Starshipには「pure-preset」もあり、Pure風の見た目を再現できます。
Q. WindowsやPowerShellでも使えますか?
A. 使えます。Scoopやwingetで導入し、PowerShellの $PROFILE に Invoke-Expression (&starship init powershell) を追記します。WSL上のLinuxでも同様に動作します。
Q. zshとbashのどちらでも使えますか?
A. どちらでも使えます。~/.zshrc または ~/.bashrc に各シェル用の starship init 行を追加するだけです。
Q. 既存のOh My Zshと併用できますか?
A. 併用できます。Oh My Zshの補完やプラグインは残したまま、プロンプト描画だけをStarshipに置き換える使い方が一般的です。
Q. アイコンが□や?で文字化けします。
A. ほぼNerd Fontが未設定です。Nerd Fontをインストールし、ターミナル側のフォント設定で選択してください。UTF-8が有効かも確認します。