実践編:プラグイン管理とエコシステム
fish のデファクトスタンダードであるパッケージマネージャー「Fisher」の導入、開発効率を高める定番プラグイン、および設定ファイル config.fish の整理手法を解説します。
パッケージマネージャー Fisher の導入
fish には標準でプラグイン機能の土台がありますが、外部のテーマや拡張機能を簡単に管理するために「Fisher」を利用するのが一般的です。
Fisher はシェルスクリプトのみで実装されており、余計な依存関係がなく極めて軽量・高速に動作します。
» Fisher のインストール
ターミナルで以下のコマンドを実行するだけでインストールが完了します。
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
» 基本的なコマンド操作
# GitHub リポジトリ名を指定してプラグインをインストール
fisher install jethrokuan/z
# インストール済みプラグインの一覧表示
fisher list
# 全プラグインを最新バージョンに一括更新
fisher update
# プラグインの削除
fisher remove jethrokuan/z
インストールしたプラグインの一覧は ~/.config/fish/fish_plugins に自動記録されます。このファイルを Git(dotfiles リポジトリ等)で管理しておけば、新しいマシンでも fisher update を実行するだけで全く同じ環境を再現できます。
開発を加速する定番プラグイン
世界中の開発者に愛用されている代表的なプラグインです。
» 1. IlanCosman/tide(モダンプロンプト)
Rust や C++ に匹敵する表示速度を誇る高機能プロンプトです。対話型のウィザード(tide configure)を実行することで、好みのデザインやアイコンスタイルを簡単に設定できます。
fisher install IlanCosman/tide@v6
tide configure
» 2. jethrokuan/z(高速ディレクトリジャンプ)
頻繁に利用するディレクトリの履歴を自動学習し、短いキーワードだけで目的のフォルダへ移動(cd)できるようにするツールです。
fisher install jethrokuan/z
# 例: 以前アクセスした /var/www/my-project へ瞬時に移動
z my-proj
» 3. edc/bass(POSIX 互換ブリッジ)
Bash 用に書かれた環境構築スクリプト(例: source /opt/tool/env.sh)を一時的な Bash サブプロセスで実行し、変更された環境変数だけを現在の fish セッションへ反映する重要プラグインです。
fisher install edc/bass
» 4. patrickf1/fzf.fish(あいまい検索の統合)
コマンド履歴、ファイルパス、Git コミットなどを fzf のインタラクティブなあいまい検索と連携させます。
fisher install patrickf1/fzf.fish
config.fish の設計方針
fish のユーザー設定ファイルは ~/.config/fish/config.fish に配置します。
設定ファイルを肥大化させず、起動速度を保つためのベストプラクティスです。
# ~/.config/fish/config.fish
# 1. 対話的セッションでのみ実行したい処理を限定する
if status is-interactive
# 略語の登録
abbr -a g "git"
abbr -a k "kubectl"
# キーバインドの設定など
end
# 2. 環境変数の設定はユニバーサル変数(set -Ux)を優先し、
# 頻繁に再評価が必要なものだけを config.fish に記述する
status is-interactive で囲むことにより、SCP や非対話的スクリプト実行時に余計な処理が走るのを防ぐことができます。