ShellCheckは、シェルスクリプトのバグや非推奨な構文を自動検出する強力な静的解析ツールです。本記事では、バックエンドエンジニアが扱う環境構築スクリプトや設定ファイルの品質を向上させるため、macOSやUbuntuでのインストールから、エディタ連携までの手順を詳細に解説します。
具体的には、Homebrewやaptを用いた導入、コマンドラインでの基本操作に加え、ALEやcoc.nvimを活用したVimでのリアルタイムチェック設定を紹介。変数のクォーティング漏れなど「実行時のトラブル」を未然に防ぐ手法を学び、雰囲気で書くシェルスクリプトを卒業して、安全で堅牢なコード管理を実現しましょう。
1. ShellCheck とは?
ShellCheck は、シェルスクリプト(bash/sh/zsh)のバグ、非推奨の構文、典型的なミスを自動で検出してくれるリンターです。
- メリット: 文法エラーだけでなく、実行時に予期せぬ動作を招く「落とし穴」を事前に教えてくれます。
- 用途: 環境構築スクリプトやエイリアスの検証に最適です。
2. インストール方法(OS別)
使用環境(M2/M3 Mac および Ubuntu 24.04)に合わせて解説します。
macOS の場合
Homebrew を使用するのが最も簡単です。
brew install shellcheck
Ubuntu / Debian の場合
標準リポジトリに含まれています。
sudo apt update
sudo apt install shellcheck
3. 基本的な使い方
ターミナルからスクリプトファイルを指定するだけです。
shellcheck my_script.sh
実行結果の読み方
解析結果には、以下のような形式でアドバイスが表示されます。
Line 10:
if [ $name == "admin" ]^– SC2086: Double quote to prevent globbing and word splitting.
- SCxxxx: エラーコードです。公式サイト(shellcheck.net)でこの番号を検索すると、詳細な理由と修正案を確認できます。
- 色分け: 重大度(Error / Warning / Info / Style)に応じて色が変わります。
4. Vim / Neovim での活用法(開発効率向上)
ALE や coc.nvim を活用している場合、エディタ上でリアルタイムにチェックを行うのが「プロの嗜み」です。
ALE を使用している場合
提供された設定で ALE を導入していれば、ShellCheck がインストールされているだけで自動的に動作します。
- メリット: 保存するたびに、行番号の横に警告アイコンが表示されます。
coc.nvim を使用している場合
coc-sh をインストールすることで、LSP(Language Server Protocol)経由でより高度な支援を受けられます。
:CocInstall coc-sh
5. 特定の警告を無視する方法
どうしても特定の警告を消したい場合は、スクリプト内にコメントを記述します。
# shellcheck disable=SC2086
echo $USER_NAME
6. まとめ:なぜ ShellCheck を使うべきか
- 安全性の確保:
rm -rf $DIR/のような変数が空だった場合の事故を未然に防げます。 - 学習ツール: 読み進めるうちに、シェルの正しいクォーティングやベストプラクティスが自然と身に付きます。


コメント