新しいプロジェクトの始め方(チートシート)

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

この記事は、記事5〜12の内容を要約したチートシートです。新しい案件が始まるたびに参照する手順書として使ってください。各手順の背景や詳しい説明は元の記事を参照してください。

この手順は、記事4までの環境(Ubuntu 24.04 LTS のベース構築、SSH、UFW)が完了している前提です。

専用ユーザーの作成(記事5)

プロジェクトごとに専用ユーザーを作成し、ホームディレクトリを保護します。ユーザー名は cc-企業名-案件名 の形で、32文字以内が目安です。

# ユーザー作成(パスワードなし=ロック状態)
sudo useradd -m -s /bin/bash <ユーザー名>

# 例:
# sudo useradd -m -s /bin/bash cc-sample-wp

# ホームディレクトリを 700 に変更(所有者のみアクセス可)
sudo chmod 700 /home/<ユーザー名>

# 作業ディレクトリの作成
sudo -u <ユーザー名> mkdir /home/<ユーザー名>/project

UFW ルールの追加(記事6)

DB サーバーへの接続が必要な場合は、UFW のアウトバウンドルールを追加します。SSH やDNS、HTTPS の基本ルールは記事6で設定済みです。

# DB サーバーへの接続許可(必要な分だけ追加)
sudo ufw allow out to <DBサーバーIP> port <ポート> proto tcp

# 例:
# sudo ufw allow out to 192.168.1.10 port 13306 proto tcp

# 確認
sudo ufw status numbered

ユーザー制限の設定(記事7)

ディスククォータ

sudo setquota -u <ユーザー名> 20G 22G 0 0 /

# 確認
sudo quota -u <ユーザー名>

プロセス数制限(ulimit)

sudo vi /etc/security/limits.d/<ユーザー名>.conf
<ユーザー名>  soft  nproc  100
<ユーザー名>  hard  nproc  150

メモリ制限(cgroups)

# UID の確認
id <ユーザー名>

# スライス設定の作成(UID を確認して置き換え)
sudo mkdir -p /etc/systemd/system/user-<UID>.slice.d
sudo vi /etc/systemd/system/user-<UID>.slice.d/memory.conf
[Slice]
MemoryMax=4G
MemoryHigh=3G
sudo systemctl daemon-reload

設定ファイルのロック

sudo chattr +i /home/<ユーザー名>/.bashrc
sudo chattr +i /home/<ユーザー名>/.profile
sudo chattr +i /home/<ユーザー名>/.bash_logout

Claude Code のインストール(記事8)

# .bashrc のロックを一時解除して PATH を追記
sudo chattr -i /home/<ユーザー名>/.bashrc
echo 'export PATH="$HOME/.local/bin:$PATH"' | sudo tee -a /home/<ユーザー名>/.bashrc
sudo chattr +i /home/<ユーザー名>/.bashrc

# 専用ユーザーに切り替え
sudo su - <ユーザー名>

# project ディレクトリに移動
cd ~/project

# インストール
curl -fsSL https://claude.ai/install.sh | bash

# バージョン確認
claude --version

初回起動時にテーマ選択・ログイン認証・ワークスペースの信頼確認があります。ブラウザ認証が必要なので、表示される URL をメインPC のブラウザで開いてください。

# 起動して認証
claude

# 認証完了後 /exit で一旦終了し、管理ユーザーに戻る
exit

ワークフローの設定(記事9)

管理ユーザーの雛形ディレクトリから設定ファイルを専用ユーザーに配置します。

雛形のコピー

# settings.json のコピー
sudo cp -r ~/cc-template/claude-project/.claude /home/<ユーザー名>/project/
sudo chown -R <ユーザー名>:<ユーザー名> /home/<ユーザー名>/project/.claude

# CLAUDE-global.md のコピーとシンボリックリンク
sudo cp ~/cc-template/claude-global/CLAUDE.md /home/<ユーザー名>/project/.claude/CLAUDE-global.md
sudo chown <ユーザー名>:<ユーザー名> /home/<ユーザー名>/project/.claude/CLAUDE-global.md
sudo mkdir -p /home/<ユーザー名>/.claude
sudo ln -s /home/<ユーザー名>/project/.claude/CLAUDE-global.md /home/<ユーザー名>/.claude/CLAUDE.md
sudo chown -h <ユーザー名>:<ユーザー名> /home/<ユーザー名>/.claude/CLAUDE.md

# プロジェクト CLAUDE.md のコピー
sudo cp ~/cc-template/claude-project/CLAUDE.md /home/<ユーザー名>/project/
sudo chown <ユーザー名>:<ユーザー名> /home/<ユーザー名>/project/CLAUDE.md

Git リポジトリの初期化

# 専用ユーザーに切り替え
sudo su - <ユーザー名>
cd ~/project

# Git の初期設定
git config --global user.name "claude-code"
git config --global user.email "claude-code@example.com"

# リポジトリの初期化と初期コミット
git init
git add -A
git commit -m "initial commit"

# 管理ユーザーに戻る
exit

ファイル同期の設定(記事10)

sudoers の設定

管理ユーザー用の NOPASSWD 設定は記事10で一度だけ行えば、以降のプロジェクトでは不要です。未設定の場合のみ実施してください。

sudo visudo -f /etc/sudoers.d/rsync-sync
<管理ユーザー名> ALL=(ALL) NOPASSWD: /usr/bin/rsync, /usr/bin/rm, /usr/bin/test

# 例:
# shinohara ALL=(ALL) NOPASSWD: /usr/bin/rsync, /usr/bin/rm, /usr/bin/test

メインPC 側のセットアップ

メインPC 側のプロジェクトフォルダに、以下のファイル・ディレクトリを用意します。スクリプトの内容は記事10を参照してください。

プロジェクトルート\
├── _scripts\
│   ├── _push_to_ubuntu\
│   │   └── push-to-ubuntu.cmd
│   └── _sync_claude_code\
│       ├── .gitignore
│       ├── sync-watch.cmd
│       ├── sync-watch.ps1
│       └── sync-pull.cmd
├── .claude\
│   └── settings.json        ← 雛形からコピー済み
├── .local\
│   ├── _sync_claude_code_config.env
│   └── _sync_claude_code_config.env.sample
├── .gitignore
├── CLAUDE.md
└── commit-msg.txt(空ファイル)

接続設定ファイル(.local\_sync_claude_code_config.env)の値を新しいプロジェクトに合わせて更新します。

SSH_USER=<管理ユーザー名>
SSH_HOST=<UbuntuのIP>
SSH_KEY=<秘密鍵のパス>
SSH_REMOTE_SYNC_READY=/home/<ユーザー名>/project/.claude/sync-ready
RSYNC_USER=<管理ユーザー名>
RSYNC_HOST=<UbuntuのIP>
RSYNC_KEY=<秘密鍵のパス>
RSYNC_REMOTE_DIR=/home/<ユーザー名>/project/
RSYNC_LOCAL_DIR=<Cygwinパスのプロジェクトルート>
RSYNC_DRY_RUN=1
RSYNC_VERBOSE=1
CHECK_INTERVAL=5

commit.template を設定します。

# メインPC 側のプロジェクトルートで実行
type nul > .claude\commit-msg.txt
git config --local commit.template .claude/commit-msg.txt

CMS 環境の構築(記事11 — WordPress の場合)

この手順は WordPress 案件の場合です。他の CMS を使う場合は、ディレクトリ構成と同期ルールを読み替えてください。

.gitignore の追加

メインPC 側の .gitignore に WordPress 用のルールを追加します。独自テーマと mu-plugins だけを Git 管理対象にし、WordPress 本体は除外します。記事11に全文があります。

WordPress の配置

メインPC 側の public_html\ に WordPress を展開し、.local\wp-config.php を作成してシンボリックリンクを張ります。

settings.json の更新

WordPress 固有の deny ルールを .claude\settings.json に追加します。

"Bash(wp:*)",
"Write(public_html/wp-admin/**)",
"Write(public_html/wp-includes/**)",
"Write(public_html/wp-*.php)",
"Write(public_html/wp-content/plugins/**)",
"Write(public_html/wp-content/uploads/**)",
"Write(public_html/wp-content/themes/twenty*/**)"

push-to-ubuntu と sync-pull の更新

push-to-ubuntu.cmd に WordPress の同期ルールを追加します。sync-pull.cmd にも独自テーマ・mu-plugins のディレクトリを include に追加します。記事11に具体的なルールがあります。

初回同期

# push-to-ubuntu でメインPC → Ubuntu にファイルを送る
# _scripts\_push_to_ubuntu\push-to-ubuntu.cmd をダブルクリック

# 動作確認(RSYNC_DRY_RUN=1 で先に試す)
# sync-watch を起動し、Ubuntu 側で sync-ready を手動作成して検知されることを確認
# 確認できたら RSYNC_DRY_RUN=0 に変更して本番同期

開発ツールの追加(記事12)

.local-cc/ の設定

メインPC 側に .local-cc\database.json を作成し、push-to-ubuntu で Ubuntu に送ります。

{
  "host": "<DBサーバーIP>",
  "port": 13306,
  "database": "<データベース名>",
  "user": "<読み取り専用ユーザー>",
  "password": "<パスワード>"
}

MySQL クライアントのインストール(初回のみ)

MySQL クライアントは Ubuntu 全体に1回インストールすれば、以降のプロジェクトでは不要です。

# apt 用に HTTP を一時開放
sudo ufw allow out 80/tcp

sudo apt update
sudo apt install mysql-client -y

# HTTP を閉じる
sudo ufw delete allow out 80/tcp

# 確認
mysql --version

確認チェックリスト

すべての設定が完了したら、以下を確認してください。

# --- Ubuntu 側(管理ユーザーで実行)---

# ユーザーの存在と権限
id <ユーザー名>
ls -ld /home/<ユーザー名>

# ディスククォータ
sudo quota -u <ユーザー名>

# プロセス数制限
sudo su - <ユーザー名> -c "ulimit -u"

# メモリ制限(UID を確認して置き換え)
systemctl show user-<UID>.slice | grep -E "MemoryMax|MemoryHigh"

# 設定ファイルのロック
sudo lsattr /home/<ユーザー名>/.bashrc /home/<ユーザー名>/.profile /home/<ユーザー名>/.bash_logout

# Claude Code
sudo su - <ユーザー名> -c "claude --version"

# settings.json
sudo cat /home/<ユーザー名>/project/.claude/settings.json

# CLAUDE.md(シンボリックリンク)
sudo ls -la /home/<ユーザー名>/.claude/CLAUDE.md

# Git リポジトリ
sudo su - <ユーザー名> -c "cd ~/project && git log --oneline"

# UFW ルール
sudo ufw status numbered
# --- メインPC 側 ---

# commit.template
git config --local commit.template

# sync-watch の動作確認(RSYNC_DRY_RUN=1 で)
# Ubuntu 側で sync-ready を手動作成 → 検知 → 同期 → 削除 の一連を確認