厳しい残暑が続くが、すでに立秋を過ぎ暦の上では秋。秋といえば恒例のmacOSメジャーアップデート、2019年でいえばmacOS 10.15となる「Catalina(カタリナ)」だ。パブリックベータも順調に更新され、AppleのWEBサイトにも「macOS Catalina に備える」というページ(リンク)が登場、いよいよその日は近い……というわけで、今回は来るべきCatalinaに備えた環境構築に着手してみたい。
zshの活用は「プラグイン」がキモ
環境構築といっても、Time Machineでサクッとバックアップをとれば完了してしまう昨今のmacOSのこと、GUI環境では作業負担がない。バックアップが済んだら不要なファイルを削除して空きを確保し、App StoreにCatalinaアップデートが現れたらそれを実行すればいい。併せてクリーンインストールなど"大掃除"を決行する場合でも、こちらの公式文書に具体的な手順が書かれているので、迷うことはない。
しかし、Catalinaではログインシェルがbashから「zsh」に変わるという一大変化がある。第241回でも触れたとおり、日々の作業で触れるTerminalのシェルはユーザが自由に選べるが、この機に強力なzshへ移行するという選択は大いにアリだろう。
そしてzshに乗り換えるのであれば、「プラグイン」の管理体制も用意したいところ。zshのプラグインとは、zshの機能を拡張するシェルスクリプト群のことで、プロンプトの表示スタイルを整えるもの、特定の語句を色分けして表示するもの……標準装備のフィーチャーでもじゅうぶん高機能なzshだが、(外部の)プラグインを使えばより利便性は高まる。
その定番としては、Gitリポジトリへの移動を容易にする「cd-gitroot」、プロンプトの見栄えを改善する「pure」、構文ハイライトを行う「zsh-syntax-highlighting」などが挙げられる。プラグインを使いたいがためにzshに乗り換えるユーザもいるほどだ。
プラグインマネージャー「zplug」を導入する
zshの外部プラグインは、「プラグインマネージャー」で管理することがセオリーだ。プラグインを個別にインストールするのは骨が折れるし、"素"の状態では起動が遅くなる。面倒なことはプラグインマネージャーに任せてしまい、zshの利点だけを享受しようという腹だ。
いくつかあるzsh用プラグインマネージャーのなかでおすすめは「zplug」。2019年9月現在GitHubのスター数は3,300超と、zgen(1,100スター)やantibody(1,057スター)といった比較的著名なプラグインマネージャーと比較しても群を抜いている。
導入方法はかんたん、以下のコマンドラインを実行すればOK。Terminalで開くシェルをzshに変更しておけば、macOS Mojaveの現在でも問題なく利用できるので、Catalinaへアップデートする前に導入して慣れておくといいだろう。
$ curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh| zsh
インストールが完了したあとは、zshの設定ファイル(~/.zshrc)を用意しよう。以下に示すリストは、zsh組み込みの機能はほとんど使わずにほぼプラグインだけでzshの機能を拡張している。「zplug "○○○○"」がプラグインをロードする部分で、まずはコピー&ペーストしてみよう。
プラグインの見つけ方だが、名前がわかりさえすればいい。最初に実行したインストーラ(「curl」から始まるコマンドライン)によって、ホーム以下に「.zplug」という不可視属性のフォルダが作成されており、そこに存在しない場合はGitHubのZshコミュニティサイトなどから自動的にダウンロードされる仕組みだからだ。
通常どおりTerminalを起動すればzplugによるzshカスタマイズは、あとはネット上の情報を参考にするもよし、試行錯誤するもよし。プラグインを使いこなせるようになれば、zshの世界が格段にラクになること請け合いだ。
リスト1:~/.zshrcのサンプル
# 初期化
source ~/.zplug/init.zsh
# 自身をプラグインとして管理する
zplug 'zplug/zplug', hook-build:'zplug --self-manage'
## おすすめプラグイン
# プロンプト
zplug "sindresorhus/pure"
# 非同期処理
zplug "mafredri/zsh-async"
# 構文ハイライト
zplug "zsh-users/zsh-syntax-highlighting"
# コマンド履歴
zplug "zsh-users/zsh-history-substring-search"
# 入力補完
zplug "zsh-users/zsh-autosuggestions"
zplug "zsh-users/zsh-completions"
zplug "chrissicool/zsh-256color"
# インストールされてないプラグインをインストール
if ! zplug check --verbose; then
printf "Install? [y/N]: "
if read -q; then
echo; zplug install
fi
fi
# プラグインを読み込みコマンドを$PATHへ追加
zplug load