Claude Codeでシェルスクリプトを自動生成する方法

Claude Codeでシェルスクリプトを自動生成する方法

Claude Codeを使うと、LinuxやUbuntuの定型作業をシェルスクリプト化しやすくなります。バックアップ、ログ整理、監視、デプロイ補助、権限確認などを自然言語で依頼し、実行前に安全性を確認しながら作業効率を高められます。

Claude Codeでシェルスクリプトを作るメリット

シェルスクリプトは便利ですが、毎回ゼロから書くと時間がかかります。Claude Codeを使えば、目的、対象ディレクトリ、実行条件、エラー時の動作を伝えるだけで、実用的なスクリプトを作成しやすくなります。

特に、Linuxサーバー運用や開発環境の整備では、同じ作業を何度も繰り返す場面があります。Claude Codeでスクリプト化しておくことで、作業ミスを減らし、手順を標準化できます。

シェルスクリプト化しやすい作業

Claude Codeに任せやすい作業は、手順が決まっていて、コマンドで再現できる作業です。たとえば、バックアップ作成、ログファイルの圧縮、古いファイルの整理、プロセス確認、ディスク容量確認、Git操作補助、デプロイ前チェックなどが向いています。

バックアップ作成
ログファイル整理
古い一時ファイルの削除
ディスク容量チェック
プロセス監視
ポート使用状況確認
Git差分チェック
デプロイ前の確認
設定ファイルの存在確認

作成前に決めておく条件

Claude Codeに依頼する前に、スクリプトの目的と条件を整理しておくと精度が上がります。曖昧な依頼ではなく、対象、保存先、実行タイミング、エラー処理、ログ出力、安全条件を明確にします。

目的:
何を自動化したいのか

対象:
どのファイル、どのディレクトリ、どのサービスを扱うのか

条件:
上書きするのか、追記するのか、削除するのか

安全対策:
実行前確認を入れるのか、dry-runを用意するのか

ログ:
実行結果を画面に出すのか、ログファイルへ残すのか

エラー処理:
失敗したら止めるのか、次の処理へ進むのか

最初に使いやすい依頼文

Claude Codeには、いきなり「作って」と依頼するより、条件付きで依頼する方が安全です。特に、削除や上書きを含むスクリプトでは、確認処理やdry-runを入れるように指定します。

以下の条件でシェルスクリプトを作成してください。

目的:
/var/www/example のバックアップを作成する

条件:
– backup ディレクトリに日付付きで保存
– 既存ファイルは上書きしない
– エラー時は処理を止める
– 実行ログを画面に表示する
– 削除処理は入れない
– 本番環境でも安全に使えるようにする

まず設計方針を出してから、スクリプトを作成してください。

バックアップ用スクリプトの自動生成例

Webサイトやアプリケーションのディレクトリをバックアップするスクリプトは、Claude Codeで作りやすい代表例です。日付付きフォルダや圧縮ファイルを作る形にしておくと、あとから復元しやすくなります。

以下の条件でバックアップ用のbashスクリプトを作成してください。

対象:
/var/www/example

保存先:
/var/backups/example

条件:
– tar.gzで圧縮する
– ファイル名に年月日時分を入れる
– 保存先がなければ作成する
– 対象ディレクトリが存在しない場合はエラー終了する
– 成功時と失敗時のメッセージを表示する
– set -euo pipefail を使う

Claude Codeから生成されるスクリプトは、次のような構成になります。

#!/bin/bash
set -euo pipefail

SOURCE_DIR=”/var/www/example”
BACKUP_DIR=”/var/backups/example”
DATE=”$(date ‘+%Y%m%d_%H%M’)”
BACKUP_FILE=”${BACKUP_DIR}/example_${DATE}.tar.gz”

if [ ! -d “$SOURCE_DIR” ]; then
echo “ERROR: Source directory does not exist: $SOURCE_DIR”
exit 1
fi

mkdir -p “$BACKUP_DIR”

tar -czf “$BACKUP_FILE” -C “$(dirname “$SOURCE_DIR”)” “$(basename “$SOURCE_DIR”)”

echo “Backup completed: $BACKUP_FILE”

ログ整理スクリプトの自動生成例

サーバー運用では、ログファイルが増え続けてディスク容量を圧迫することがあります。Claude Codeに条件を伝えることで、古いログを圧縮したり、一定期間を過ぎたファイルを整理するスクリプトを作成できます。

以下の条件でログ整理用のbashスクリプトを作成してください。

対象:
/var/log/myapp

条件:
– 7日以上前の .log ファイルを gzip 圧縮する
– 30日以上前の .gz ファイルを削除対象として表示する
– 最初は削除せず、dry-runとして表示だけにする
– 実際に削除する場合は –delete オプションを付けたときだけにする
– 処理件数を最後に表示する

削除系の処理は、最初から実行させずにdry-runを基本にすることで事故を防ぎやすくなります。

./cleanup_logs.sh

./cleanup_logs.sh –delete

実行前チェックを入れる

シェルスクリプトでは、対象ファイルやディレクトリが存在するか、必要なコマンドが使えるか、実行ユーザーに権限があるかを確認する処理が重要です。Claude Codeには、実行前チェックを必ず入れるように依頼します。

このスクリプトに実行前チェックを追加してください。

チェック内容:
– 対象ディレクトリが存在するか
– 保存先ディレクトリを作成できるか
– tar コマンドが使えるか
– 実行ユーザーに読み取り権限があるか
– エラー時はわかりやすいメッセージを表示する

よく使うコマンド存在チェックは、次のように書けます。

if ! command -v tar >/dev/null 2>&1; then
echo “ERROR: tar command is not installed.”
exit 1
fi

危険なコマンドを避ける指示

Claude Codeでシェルスクリプトを作るときは、危険なコマンドを避ける条件を入れると安全です。特に、rm -rf、chmod -R、chown -R、上書きリダイレクト、データベース削除系コマンドには注意が必要です。

安全性を優先してください。

禁止事項:
– rm -rf は使わない
– chmod -R は使わない
– chown -R は使わない
– 既存ファイルを確認なしで上書きしない
– データベース削除系のコマンドは使わない
– 本番環境に影響する処理は確認メッセージを入れる

削除が必要な場合でも、いきなり削除せず、対象一覧を表示してから確認する流れにします。

削除処理を入れる場合は、最初に削除対象を一覧表示してください。
その後、yes と入力された場合だけ削除するようにしてください。

dry-run機能を追加する

dry-runは、実際には変更せず、何が行われるかだけを表示する機能です。本番サーバーや重要なファイルを扱うスクリプトでは、dry-runを入れておくと安全性が上がります。

このスクリプトにdry-run機能を追加してください。

条件:
– デフォルトはdry-run
– –execute を付けたときだけ実際に処理する
– dry-run時は実行予定のコマンドや対象ファイルを表示する
– 実行時は処理結果を表示する

実行イメージは次のようになります。

./backup.sh

./backup.sh –execute

エラーに強いスクリプトにする

シェルスクリプトは、途中でエラーが起きたときの動作が重要です。Claude Codeには、set -euo pipefail を使い、未定義変数やパイプ処理の失敗も検知するように依頼します。

エラーに強いbashスクリプトにしてください。

条件:
– set -euo pipefail を使う
– 失敗した処理がわかるメッセージを出す
– 未定義変数を許可しない
– パイプ途中の失敗も検知する
– trapで異常終了時のメッセージを出す

trapを使うと、異常終了時にメッセージを表示できます。

trap ‘echo “ERROR: Script failed at line $LINENO”; exit 1’ ERR

生成後にClaude Codeへレビューさせる

スクリプトを生成したら、そのまま実行せず、Claude Codeにレビューさせます。安全性、可読性、エラー処理、権限、想定外の削除や上書きがないかを確認します。

作成したシェルスクリプトをレビューしてください。

確認観点:
– 危険な削除処理がないか
– 既存ファイルを上書きしないか
– パスにスペースがあっても動くか
– エラー時に止まるか
– 権限不足時にわかりやすい表示が出るか
– 本番環境で実行しても安全か

レビュー後は、修正点だけを反映させます。

レビューで必要と判断した箇所だけ修正してください。
仕様は変えず、安全性と可読性だけ改善してください。

実行権限を付けて動作確認する

生成したシェルスクリプトは、保存後に実行権限を付けます。最初はテスト用ディレクトリやdry-runで確認してから、本番対象に使う流れが安全です。

chmod +x backup.sh
./backup.sh

bashの構文チェックも行えます。

bash -n backup.sh

shellcheckが使える環境なら、より細かい問題を確認できます。

sudo apt install -y shellcheck
shellcheck backup.sh

cronで定期実行する

バックアップやログ整理は、cronで定期実行すると効果的です。ただし、cronは通常のターミナルと環境変数が異なるため、スクリプト内では絶対パスを使う方が安全です。

crontab -e

毎日深夜2時にバックアップを実行する例です。

0 2 * * * /path/to/backup.sh >> /var/log/backup_script.log 2>&1

Claude Codeにcron用の設定例まで作らせる場合は、次のように依頼します。

このシェルスクリプトを毎日深夜2時にcronで実行したいです。
cronの設定例と、ログ出力の設定も作成してください。
cron環境で失敗しやすい点もまとめてください。

実務で使いやすい依頼テンプレート

毎回同じような依頼文を書くのが面倒な場合は、テンプレート化しておくと便利です。以下をベースに、目的と条件だけ変えれば使い回せます。

以下の条件でbashスクリプトを作成してください。

目的:
【ここに目的を書く】

対象:
【対象ファイル・ディレクトリを書く】

条件:
– set -euo pipefail を使う
– 実行前チェックを入れる
– 既存ファイルを勝手に上書きしない
– 削除処理が必要な場合はdry-runを基本にする
– エラー時はわかりやすいメッセージを表示する
– 成功時は処理結果を表示する
– パスにスペースがあっても動くようにする
– 本番環境でも安全に使えるようにする

出力:
– スクリプト本体
– 使い方
– 実行例
– 注意点

まとめ

Claude Codeを使うと、Linuxの定型作業をシェルスクリプトとして自動生成しやすくなります。バックアップ、ログ整理、チェック処理、運用補助などを自然言語で依頼できるため、作業の標準化と効率化に役立ちます。

大切なのは、目的だけでなく、安全条件を明確に伝えることです。dry-run、実行前チェック、エラー処理、上書き防止、削除確認を入れることで、本番環境でも扱いやすいスクリプトになります。

生成後は必ず構文チェック、レビュー、テスト実行を行い、問題がないことを確認してから本番環境で使う流れが安全です。Claude Codeは、シェルスクリプト作成の時短だけでなく、運用手順の品質を高める道具として活用できます。