ターミナルに欠かせない2つのツール
mise & Starship
Tadashi Aikawa
2024/08/18 Minerva Lightning Talks

Tadashi Aikawa

Productivity Creator since 2010
OS
Windows (開発はUbuntu on WSL)
言語
TypeScript >> Python = Go = Rust >> Lua
エディタ
Neovim / Obsidian
デバイス
EIZO / HHKB Studio / SlimBlade
好き
創作活動・温泉・甘味・動物(ぬいぐるみ含む)
苦手
お酒・車・勉強
楽しい仕事
個人やチームの生産性を上げて成果に繋げる

Agenda

  1. miseのキホン
  2. Starshipのキホン
  3. Starshipで見た目をカスタマイズ
  4. miseでツールバージョンを管理する
  5. まとめ

Chapter

01

  1. miseのキホン
  2. Starshipのキホン
  3. Starshipで見た目をカスタマイズ
  4. miseでツールバージョンを管理する
  5. まとめ

miseとは直感的に利用できるツール管理環境

miseを勧めたい3つのポイント

直感的なツール管理
楽々バージョン切替
高パフォーマンス

mise installコマンドでツール(言語/CLI)をインストールできる。各ツールのバージョンを指定したり、複数のバージョンをインストールしたりもできる。各ツールのバージョンはtomlファイルなどで管理できるため、バージョン管理して共有も可能。

mise useコマンドでグローバル、またはカレントディレクトリ配下で利用するツールのバージョンを指定できる。PythonやNode、Goのバージョン差分に悩まされることもなくなり、ツールの新バージョンに問題があった場合も速やかにリバート可能。

この手のツールにありがちなコマンド実行時のオーバーヘッドがない。その理由はshimを使わずに環境変数PATHを直接書き換える設計になっているから。miseはRustで開発されているため、PATHを変更する処理自体も20ms以下と高速であり実用的。

miseのインストール

  1. curl https://mise.run | sh
  2. rcファイルにactivate処理を追加 (下部のcode blockが実行コマンド)
  3. ターミナルで新しいセッションを立ち上げる
  4. mise --version
# bashの場合
echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc
# zshの場合
echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc

miseでツールをインストールしてみる

# Goの最新版をインストールし、それをPATHで指定する
mise use -g go
# インストール場所とバージョンの確認
$ which go
~/.local/share/mise/installs/go/1.23.0/bin/go
$ go version
go version go1.23.0 linux/amd64

Chapter 01 のまとめ

  • miseとは直感的に利用できるツール管理環境
  • miseはプログラミング言語/環境、CLIなどのツールをインストールできる
  • mise useコマンドを使うとインストールとPATH指定を同時に行える

Chapter

02

  1. miseのキホン
  2. Starshipのキホン
  3. Starshipで見た目をカスタマイズ
  4. miseでツールバージョンを管理する
  5. まとめ

Starshipとはプロンプトのカスタマイズツール

Starshipを勧めたい3つのポイント

直感的な設定
高いカスタマイズ性
あらゆるシェルに対応

プロンプトの表示内容を制御するための設定は、TOMLファイルで簡潔に書ける。特に拘りがなければ、予め用意されたプリセットを指定するだけで、ターミナルの見た目がオシャレになる。

プリセットよりも細かくカスタマイズしたい場合は、100近くあるモジュールを組み合わせて自分だけのプロンプトをカスタマイズできる。任意のコマンド実行結果を表示することも可能。

プリセットやモジュールを使って構築したプロンプトの設定は、あらゆるシェルで使いまわせる。Bash, Zsh, fishはもちろんのこと、PowerShell、そしてなんとCmdにも対応している。

Starshipのインストール

  1. mise use -g starship
  2. rcファイルに起動処理を追加 (下部のcode blockが実行コマンド)
  3. starship preset plain-text-symbols -o ~/.config/starship.toml
  4. ターミナルで新しいセッションを立ち上げる
# bashの場合
echo 'eval "$(mise x -- starship init bash)"' >> ~/.bashrc
# zshの場合
echo 'eval "$(mise x -- starship init zsh)"' >> ~/.zshrc

こんな感じになっていればOK

center

Chapter

03

  1. miseのキホン
  2. Starshipのキホン
  3. Starshipで見た目をカスタマイズ
  4. miseでツールバージョンを管理する
  5. まとめ

ぶっちゃけあまりカッコよくないですよね?

こういうイメージではないでしょうか?

オシャレなプロンプトにはNerd Fontが必要

Nerd Fontのダウンロード

Nerd Fontのインストール

  1. ターミナルがインストールされているOSの フォント設定を開く
  2. ダウンロードしたzipファイルを解凍
  3. *.ttfファイルをフォント設定にドラッグ&ドロップ

center

Nerd Fontをターミナルに適応

  1. ターミナルのフォント設定を変更
  2. 󰏒 をターミナルに貼り付けてフクロウが表示されればOK
// Windows Terminalの場合はJSONでfont.faceに設定
{
  "profiles": {
    "defaults": {
      "font": {
        "face": "CaskaydiaCove Nerd Font",
        "size": 13.0
      }
    }
  }
}

Starshipのプリセット一覧

Starshipのプリセットを適応

# Gruvbox Rainbow Presetの場合
starship preset gruvbox-rainbow -o ~/.config/starship.toml
# ~/.config/starship.toml
"$schema" = 'https://starship.rs/config-schema.json'

format = """
[](color_orange)\
$os\
$username\
[](bg:color_yellow fg:color_orange)\
$directory\
[](fg:color_yellow bg:color_aqua)\
$git_branch\
$git_status\
# ...以下略

うまくできていればこうなるはず

TOMLをいじると自分好みにカスタマイズできる

TOMLの書き方とモジュール一覧

center

Chapter 02 03 のまとめ

  • Starshipとはプロンプトのカスタマイズツール
  • ~/.config/starship.toml で見た目をカスタマイズできる
  • starship preset コマンドでプリセットのTOMLファイルを生成可能
  • オシャレなターミナルにするならNerd Fontが必要

Chapter

04

  1. miseのキホン
  2. Starshipのキホン
  3. Starshipで見た目をカスタマイズ
  4. miseでツールバージョンを管理する
  5. まとめ

goのバージョンを切り替えてみる

mise list go
mise use -g go@1.22
mise use -g go@1.23

インストールしていないjqのバージョンを切り替えてみる

mise list-all jq
mise use -g jq@1.7
mise use -g jq@1.6

ディレクトリによってGoのバージョンを切り替える

mise use go@1.21
mise use go@1.22

ツールをアップデートする

mise outdated
mise up delta
引数忘れて "mise up" にするとすべてアップデートされてしまうので注意

アップデートで最新バージョンが見つからない場合は...

  • バージョン取得処理にはリモートとローカルに2つのキャッシュが存在する
  • ゆえに、24時間以内にリリースされたバージョンが取得できないことがある
  • 今すぐにバージョンを取得したい場合は...
# アップデート用の専用場所を作成
mkdir mise-update-sandbox
cd mise-update-sandbox
# この場所でのみバージョンをツールのGitHubから直接取得させる
mise set MISE_USE_VERSIONS_HOST=false
# 上記設定を信頼できるものとして有効にする
mise trust
# CLI(Local)のキャッシュをクリア
mise cache clear
# ツールをアップデート
mise up <アップデートしたいツール>

Chapter

05

  1. miseのキホン
  2. Starshipのキホン
  3. Starshipで見た目をカスタマイズ
  4. miseでツールバージョンを管理する
  5. まとめ

まとめ

  • mise
    • ツール(言語/CLI)をインストール、更新、複数バージョン保持できる
    • グローバルまたはディレクトリごとにツールのバージョンを指定できる
    • PATHを切り替える設計 & Rust製により非常に高速
  • Starship
    • starship.toml をいじることでプロンプトを簡単にカスタマイズできる
    • ↑の設定ファイルはBash, Zshなど複数のシェルで利用できる
    • ただし、オシャレなターミナルにするにはNerd Fontが必要

Starshipでモチベを上げ

miseで便利なツールを使いこなそう

以上です

仕事だったら『所属』『代表プロダクト』『入社年』などを入れる