web制作

Claudeの使い方・活用術を実例で解説|PSDコーディング・Webデザイン・WordPressプラグイン・アプリ開発まで

更新日:2026-10-07 著者:unigram 読了目安:32分

この記事の要点

Claudeの基本的な使い方から、PSDデザインのコーディング、Webデザイン作成、WordPressプラグイン開発、アプリ開発まで、プロンプトと実際のコード付きで解説。Claude Code・スキル(Skills)・CLAUDE.mdの使い方もまとめました。

「Claudeを使ってみたけど、普通に質問するだけで終わっている」「AIでコーディングできるって聞くけど、実際どう頼めばいいの?」――そんな方に向けて、この記事ではClaude(クロード)の使い方を、Web制作の実例とコード付きでまとめました。

PSDデザインのコーディング、Webデザインの作成、WordPressプラグインの開発、アプリ開発まで、そのまま真似できる依頼文(プロンプト)と、実際に動くコードを掲載しています。気になるところから試してみてください。

この記事でわかること

  • Claudeでできることと、使える場所(チャット・Claude Code・スキルなど)
  • 回答の質がぐっと上がる「賢い使い方」5つのコツ
  • 実例① PSDで作ったデザインをHTML/CSSにコーディングする
  • 実例② Webデザインのたたき台を作る
  • 実例③ WordPressプラグインを開発する
  • 実例④ ブラウザで動くアプリを開発する
  • Claude Code・CLAUDE.md・スキル(Skills)の使い方

Claudeとは?まず押さえたい「使える場所」

Claudeは、Anthropic(アンソロピック)社が開発している生成AIです。文章作成や要約はもちろん、コードを書く・読む・直す作業が得意なことで、Web制作やプログラミングの現場で広く使われています。

Claudeは「チャット画面」だけでなく、用途に合わせていくつかの使い方ができます。まずは全体像をつかみましょう。

CHAT

Claude(Web・アプリ)

ブラウザやデスクトップ/スマホアプリで使う基本の形。画像やPDFを添付して質問できます。

PROJECTS

プロジェクト

資料や「いつもの指示」を登録しておける作業部屋。毎回同じ説明をしなくて済みます。

ARTIFACTS

アーティファクト

作ったWebページやグラフを、チャットの横でそのままプレビュー・共有できる機能です。

CODE

Claude Code

パソコンのフォルダの中で、ファイルの作成・編集・コマンド実行まで任せられる開発ツールです。

SKILLS

スキル

「いつもの作業手順」をファイルにまとめてClaudeに覚えさせる仕組み。作業の品質がそろいます。

CONNECT

コネクタ・Cowork など

GoogleドライブやSlackなどと連携したり、パソコン上のファイル整理を任せたりできます。

初心者の方は、まずチャット+アーティファクトで試してみて、慣れてきたらClaude Codeに進むのがおすすめです。ほかのAIツールとの違いが気になる方は、主要AIツール10選の比較記事もあわせてどうぞ。

用語メモ

生成AI
文章・画像・コードなどを新しく作り出すAIのこと。
プロンプト
AIへの指示文・依頼文のこと。書き方次第で回答の質が大きく変わります。
Claude Code(クロード コード)
ターミナル(黒い画面)やエディタから使う、開発向けのClaudeです。指定したフォルダ内のファイルを直接読み書きできます。
料金について:チャットは無料プランから使えますが、Claude Codeは有料プラン(Pro以上)またはAPI契約が必要です。プランの内容は変わることがあるため、最新情報は公式サイトで確認してください(2026年10月時点の情報です)。

賢い使い方の基本:回答の質が上がる5つのコツ

Claudeは「察してくれる」タイプですが、伝える情報が少ないと、それっぽいけれど自分の目的とズレた回答になりがちです。次の5つを意識するだけで、結果が見違えます。

コツ1:目的・前提・制約・出力形式をセットで伝える

「料金表を作って」だけでなく、何のために・どんな環境で・どんな条件で・どんな形で欲しいかを書きます。見出し(##)で区切ると、Claudeが情報を整理しやすくなります。

Prompt

そのまま使える依頼文の型

「目的・前提・制約・出力形式」の4つを見出しで分けて書くだけで、Claudeの回答はぐっと安定します。## は見出しの印で、Claudeが情報を整理しやすくなります。

目的前提制約出力形式
PROMPT
prompt.txtcopy
## 目的
ブログ記事に載せる「料金表セクション」を作りたい
## 前提
・HTML / CSS のみ(JavaScriptなし)
・WordPressの投稿本文(カスタムHTMLブロック)に貼り付けて使う
## 制約
・クラス名はすべて「price-」から始める
・スマホ幅(375px)でも崩れないこと
## 出力形式
・HTMLとCSSを別々のコードブロックで出力
・各行に日本語のコメントを付けて

コツ2:素材はどんどん渡す

デザインの画像、エラー画面のスクリーンショット、既存のコード、仕様書のPDFなど、手元にある情報は説明するより渡したほうが早くて正確です。エラーが出たときは、メッセージを要約せず全文をそのまま貼るのがコツです。

コツ3:一度に全部作らせない

「サイトを丸ごと作って」より、「まずヘッダーだけ」「次にメインビジュアル」と小さく区切るほうが品質は上がります。確認しながら進められるので、崩れたときの原因も追いやすくなります。

コツ4:いつもの前提は「プロジェクト」に登録する

「初心者向けの言葉で」「クラス名は接頭辞を付けて」など毎回伝えるルールは、プロジェクトのカスタム指示に書いておけば自動で反映されます。Claude Codeの場合は、後で紹介する CLAUDE.md がその役割を担います。

コツ5:「確認して」「理由も教えて」を付け足す

「書いたコードに問題がないかセルフチェックして」「なぜこの書き方にしたのか説明して」と添えると、ミスが減り、自分の勉強にもなります。


実例① PSDで作ったデザインをコーディングする

Photoshop(PSD)で作ったデザインカンプを、HTML/CSSに起こす作業です。Claudeに任せる方法は大きく2つあります。

方法 向いている人 特徴
A. チャットに画像を渡す まず気軽に試したい人 PSDを画像で書き出して添付するだけ。数値は自分で確認して伝える
B. Claude CodeでPSDを解析 本格的に効率化したい人 PSDファイルから位置・テキストを自動で抜き出すので、より正確

作業の流れ

  1. PSDを書き出す・情報をメモする全体をPNGで書き出し、メインカラー・フォント・文字サイズ・コンテンツ幅などをメモします(方法Bなら自動で取得)。
  2. セクションごとに依頼する「ヘッダーとファーストビュー」→「サービス紹介」のように、上から順番に区切って依頼します。
  3. ブラウザで表示してズレを伝える表示した画面のスクリーンショットを渡し、「見出しの余白をカンプに合わせて」などと具体的に修正を依頼します。
  4. スマホ表示・アクセシビリティを確認最後に「375px幅での崩れ」「alt属性の抜け」などをチェックさせます。
A

チャットで画像から組む(手軽)

PSDを画像(PNG/JPG)で書き出して添付し、PSDで確認した正確な数値を添えて依頼します。いきなり全ページではなく「ヘッダーとファーストビューだけ」のように範囲を絞るのがコツです。

画像を添付正確な数値を渡す範囲を絞る
PROMPT
prompt.txtcopy
添付の画像は、Photoshopで作ったトップページのデザインカンプ(PC版・幅1440px)です。
次の条件でHTML/CSSにコーディングしてください。
## 条件
・セマンティックなHTML(header / main / section / footer)で組む
・レイアウトはFlexboxとGridで組む(position: absolute は最小限に)
・色・余白・文字サイズは :root のCSS変数にまとめる
・ブレイクポイントは768px。スマホ版は1カラムにする
・画像は仮で <img src="images/hero.jpg"> のように書いておく
## PSDから確認した値(推測ではなくこの値を使って)
・メインカラー:#3e8685 / 文字色:#1a1a1a
・見出し:Noto Sans JP Bold 40px / 本文:16px・行間1.9
・コンテンツ幅:1100px
まずはヘッダーとファーストビューだけ作ってください。
B

Claude CodeでPSDを解析して組む(本格派)

Claude Codeなら、PSDファイルそのものをPythonライブラリ「psd-tools」で解析させられます。レイヤー名・位置・テキストを数値で取り出すので、画像だけで推測するより正確です。

psd-toolslayers.jsonpreview.png
PROMPTPYTHONJSON
Claude Codeへの依頼copy
design/top.psd をHTML/CSSにコーディングしたいです。
1. psd-tools を使って、レイヤー名・種類・位置・テキストを書き出す
   scripts/psd_extract.py を作成して実行して
2. 書き出した layers.json と preview.png を見比べて、
   セクション構成(header / hero / service …)を提案して
3. 私がOKを出したら、index.html と css/style.css を作成して
4. 最後に、PSDと見た目が違いそうな箇所をリストアップして
scripts/psd_extract.pycopy
# psd_extract.py : PSDのレイヤー情報をJSONに書き出す
# 事前準備: pip install psd-tools
import json
import sys
from psd_tools import PSDImage
psd_path = sys.argv[1] if len(sys.argv) > 1 else "design/top.psd"
psd = PSDImage.open(psd_path)
# 全体のプレビュー画像を書き出す(Claudeが見た目を確認するため)
psd.composite().save("design/preview.png")
layers = []
for layer in psd.descendants():
    if not layer.is_visible():
        continue  # 非表示レイヤーは無視
    left, top, right, bottom = layer.bbox
    info = {
        "name": layer.name,
        "kind": layer.kind,  # type=テキスト / pixel=画像 / group=グループ など
        "x": left,
        "y": top,
        "width": right - left,
        "height": bottom - top,
    }
    if layer.kind == "type":
        info["text"] = layer.text  # テキストレイヤーの文字列
    layers.append(info)
with open("design/layers.json", "w", encoding="utf-8") as f:
    json.dump({"canvas": [psd.width, psd.height], "layers": layers}, f, ensure_ascii=False, indent=2)
print(f"{len(layers)} layers exported")
design/layers.json(出力例)copy
{
  "canvas": [1440, 4200],
  "layers": [
    { "name": "logo", "kind": "pixel", "x": 170, "y": 28, "width": 140, "height": 36 },
    { "name": "gnav_contact", "kind": "type", "x": 1150, "y": 36, "width": 120, "height": 20,
      "text": "お問い合わせ" },
    { "name": "hero_title", "kind": "type", "x": 170, "y": 260, "width": 420, "height": 120,
      "text": "Web制作を、\nやさしく。" },
    { "name": "hero_img", "kind": "pixel", "x": 730, "y": 180, "width": 560, "height": 420 }
  ]
}
Output

生成されるコードの例(ヘッダー+ファーストビュー)

Claudeが書き出すコードの一例です。色やサイズがCSS変数にまとまっているので、あとからの修正も簡単です。

CSS変数Grid 2カラムclamp()レスポンシブ
HTMLCSS
index.htmlcopy
<header class="site-header">
  <div class="inner">
    <a href="/" class="site-logo"><img src="images/logo.svg" alt="サイト名" width="140" height="36"></a>
    <nav class="gnav">
      <ul>
        <li><a href="#service">サービス</a></li>
        <li><a href="#works">制作実績</a></li>
        <li><a href="#contact" class="gnav-cta">お問い合わせ</a></li>
      </ul>
    </nav>
  </div>
</header>
<main>
  <section class="fv">
    <div class="inner fv-inner">
      <div class="fv-text">
        <h1 class="fv-title">Web制作を、<br>やさしく。</h1>
        <p class="fv-lead">はじめての方でも安心して相談できる制作パートナーです。</p>
        <a href="#contact" class="fv-btn">無料で相談する</a>
      </div>
      <img src="images/hero.jpg" alt="" class="fv-img" width="560" height="420">
    </div>
  </section>
</main>
css/style.csscopy
:root {
  --color-main: #3e8685;   /* PSDのメインカラー */
  --color-text: #1a1a1a;
  --content-width: 1100px;
  --fz-h1: clamp(28px, 4vw, 40px); /* スマホ28px〜PC40px */
}
.inner { max-width: var(--content-width); margin: 0 auto; padding: 0 20px; }
/* ヘッダー:ロゴとナビを左右に配置 */
.site-header .inner { display: flex; align-items: center; justify-content: space-between; height: 92px; }
.gnav ul { display: flex; gap: 32px; list-style: none; margin: 0; padding: 0; }
.gnav a { color: var(--color-text); text-decoration: none; font-weight: 500; }
.gnav-cta { padding: 10px 20px; border-radius: 999px; background: var(--color-main); color: #fff !important; }
/* ファーストビュー:テキストと画像を2カラムに */
.fv { padding: 80px 0 100px; }
.fv-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; }
.fv-title { font-size: var(--fz-h1); line-height: 1.4; margin: 0 0 20px; }
.fv-lead { color: #555; line-height: 1.9; margin: 0 0 32px; }
.fv-btn { display: inline-block; padding: 16px 40px; border-radius: 999px; background: var(--color-main); color: #fff; text-decoration: none; font-weight: 700; }
.fv-img { width: 100%; height: auto; border-radius: 12px; }
/* スマホ:1カラムに切り替え */
@media (max-width: 768px) {
  .gnav { display: none; } /* ハンバーガーメニューは次のステップで追加 */
  .fv-inner { grid-template-columns: 1fr; gap: 32px; }
}
注意:Claudeは画像から見た目を読み取るのが得意ですが、ピクセル単位で完全に一致させるのは苦手です。最後の微調整は人の目で行いましょう。また、カンプで使っている有料フォントや写真素材は、Web公開用のライセンスがあるか必ず確認してください。

用語メモ

デザインカンプ
完成形に近い見た目で作ったデザイン案のこと。コーディングの設計図になります。
psd-tools
PSDファイルの中身(レイヤー・テキスト・位置)をPythonで読み取るためのライブラリ(便利な部品集)です。
セマンティックなHTML
header・nav・mainなど、意味に合ったタグで組んだHTML。SEOやアクセシビリティに有利です。
clamp()
「最小値・推奨値・最大値」を指定して、画面幅に合わせてサイズを自動で変えるCSS関数です。

実例② Webデザインのたたき台を作る

デザインツールを開く前に、Claudeに動くデザイン案を作ってもらう使い方です。アーティファクト機能を使うと、チャットの横にWebページがそのまま表示されるので、見ながら「ここをもっとこうして」と直していけます。

ポイントは「誰に・どんな印象で」を伝えること

「おしゃれに」だけだと、どこかで見たようなデザインになりがちです。ターゲット・伝えたい雰囲気・必要なセクションを具体的に伝えましょう。

Design

デザイン案を作ってもらう依頼文

ターゲット・トーン・必要なセクションを伝え、「複数案の考え方」を先に出してもらうのがポイントです。Claudeはアーティファクトとして、その場でプレビューできるデザインを作ってくれます。

ターゲットトーンセクション複数案
PROMPTCSS
prompt.txtcopy
地域の小さなカフェのWebサイトのデザイン案を、HTML/CSSのアーティファクトで作ってください。
## ターゲット
30〜50代の近所の方。落ち着いて長居できる雰囲気を伝えたい
## トーン
ナチュラル・温かみ・余白多め。写真が主役
## 必要なセクション
ファーストビュー / こだわり3つ / メニュー / アクセス / Instagramへの導線
## お願い
・配色とフォントの組み合わせを3案考えて、それぞれの意図を説明して
・まずは1案だけ形にして、残り2案は色とフォントの指定だけ教えて
・写真は仮のグレーの枠で大丈夫です
design-tokens.css(まとめさせた例)copy
/* デザインガイド(Claudeにまとめさせた例) */
:root {
  /* カラー */
  --c-base: #faf7f2;    /* 背景:生成り */
  --c-text: #3b302a;    /* 文字:こげ茶 */
  --c-accent: #b8860b;  /* アクセント:からし色 */
  --c-line: #e6dfd3;    /* 罫線 */
  /* 文字サイズ(画面幅に合わせて最小〜最大で可変) */
  --fz-h1: clamp(28px, 5vw, 48px);
  --fz-h2: clamp(22px, 3vw, 32px);
  --fz-body: clamp(15px, 1.2vw, 17px);
  /* 余白(8の倍数で統一) */
  --sp-s: 8px;
  --sp-m: 24px;
  --sp-l: 64px;
  --sp-xl: 120px;
  /* 角丸・影 */
  --radius: 12px;
  --shadow: 0 8px 24px rgba(59, 48, 42, .08);
}

こんな追加の依頼でブラッシュアップ

  • 「ファーストビューの写真をもっと大きくして、キャッチコピーは縦書きにして」
  • 「2案目の配色に切り替えたバージョンを見せて」
  • 「スマホ幅(375px)で見たときの崩れをチェックして直して」
  • 「このデザインのルールを“デザインガイド”としてCSS変数にまとめて」

最後にデザインガイド(色・文字サイズ・余白のルール)をCSS変数にまとめさせておくのがおすすめです。次にページを追加するときにこのファイルを渡せば、デザインのトーンがぶれません。

用語メモ

アーティファクト
Claudeが作ったWebページ・図・文書などを、チャットとは別の画面で表示・保存・共有できる機能です。
デザインガイド(デザイントークン)
色・文字サイズ・余白などのルールを名前付きで管理したもの。サイト全体の統一感を保つのに役立ちます。

実例③ WordPressプラグインを開発する

「ちょっとした機能のためにプラグインを探す」代わりに、必要な機能だけのオリジナルプラグインをClaudeと作ってみましょう。ここでは、記事の冒頭に「この記事は約○分で読めます」と表示するプラグインを例にします。

開発の流れ(Claude Code)

  1. ローカル環境を用意する「Local」などのツールで、パソコン上にテスト用のWordPressを作ります。本番サイトでいきなり試すのはNGです。
  2. pluginsフォルダでClaude Codeを起動するWordPressのプラグインが入っている「plugins」フォルダでターミナルを開き、claude と入力します(くわしい手順はこのすぐ下で解説します)。
  3. 仕様とルールを伝え、まず方針を出させるいきなり書かせず「方針→OK→実装」の順にすると、手戻りが減ります。
  4. 有効化して動作確認・修正管理画面でプラグインを有効化し、表示を確認。エラーが出たら全文をClaudeに貼って直してもらいます。

「pluginsフォルダでClaude Codeを起動する」とは?

Claude Codeは、起動したフォルダの中だけで作業するしくみになっています。いわば「作業部屋(フォルダ)にClaudeを呼んでくる」イメージです。

プラグインを作るときは、WordPressのプラグインが入っている plugins フォルダで起動します。こうすると、Claudeが作ったファイルがそのままWordPressのプラグインとして認識され、管理画面の「プラグイン」一覧に表示されるようになります。

① まずpluginsフォルダの場所を確認する

Localで作ったサイトの場合、pluginsフォルダは次の場所にあります(「mysite」の部分はサイト名、「ユーザー名」はパソコンのユーザー名です)。

パソコン pluginsフォルダの場所
Mac /Users/ユーザー名/Local Sites/mysite/app/public/wp-content/plugins
Windows C:\Users\ユーザー名\Local Sites\mysite\app\public\wp-content\plugins
かんたんに開くには:Localのサイト画面にある「Site folder(サイトフォルダ)」をクリックすると、Finderやエクスプローラーでサイトのフォルダがひらきます。そこから app → public → wp-content → plugins の順に開いていきましょう。

② そのフォルダでターミナルを開いて「claude」と入力する

やり方は3つあります。いちばん簡単な方法から紹介します。

方法 手順
A. フォルダから直接開く
(いちばん簡単)
Mac:Finderで plugins フォルダを右クリック →「サービス」→「フォルダに新規ターミナル」
Windows 11:エクスプローラーで plugins フォルダを開き、何もないところを右クリック →「ターミナルで開く」
開いたターミナルに claude と入力してEnter
B. VS Codeから開く VS Codeの「ファイル」→「フォルダーを開く」で plugins フォルダを選択 → メニューの「ターミナル」→「新しいターミナル」→ claude と入力してEnter
C. cdコマンドで移動する ターミナルを開き、下のコマンドで plugins フォルダへ移動してから claude と入力
Terminal

cdコマンドで移動して起動する

ターミナルに1行ずつ入力して、Enterキーで実行します。# で始まる行は説明文なので入力不要です。

cd = フォルダ移動ls = 中身の確認claude = 起動
MacWindows
ターミナルcopy
# ① pluginsフォルダへ移動(「mysite」は自分のサイト名に変更)
#    「Local Sites」には空白があるので、全体を " " で囲みます
cd "$HOME/Local Sites/mysite/app/public/wp-content/plugins"
# ② 正しい場所にいるか確認(akismet などのフォルダ名が表示されればOK)
ls
# ③ Claude Codeを起動
claude
PowerShellcopy
# ① pluginsフォルダへ移動(「mysite」は自分のサイト名に変更)
cd "$HOME\Local Sites\mysite\app\public\wp-content\plugins"
# ② 正しい場所にいるか確認(akismet などのフォルダ名が表示されればOK)
ls
# ③ Claude Codeを起動
claude
Macの小ワザ:ターミナルで cd と半角スペースまで入力したら、Finderから plugins フォルダをターミナルの画面にドラッグ&ドロップしてみてください。フォルダの場所が自動で入力されるので、打ち間違いがなくなります。

起動すると、ターミナルの中にClaudeの入力欄が表示されます。あとはチャットと同じように、日本語で依頼文を入力するだけです。作業を終えるときは /exit と入力するか、Ctrl + C を2回押します。

用語メモ

cd(チェンジ・ディレクトリ)
ターミナルで「作業するフォルダ」を移動するコマンドです。ディレクトリはフォルダと同じ意味です。
ls(リスト)
今いるフォルダの中身を一覧表示するコマンド。正しい場所にいるかの確認に使います。
パス
/Users/…/plugins のような、フォルダやファイルの場所を表す住所のような文字列です。
Plugin

読了時間を表示するプラグイン

投稿の本文から文字数を数えて「約○分で読めます」と表示するプラグインです。下のコードをそのままフォルダに保存してZIPにすれば、WordPressにアップロードして使えます。

the_content フィルターショートコードesc_htmlABSPATH
PROMPT構成PHPCSS
Claude Codeへの依頼copy
WordPressプラグインを新規作成したいです。
## 作りたいもの
投稿ページの本文の先頭に「この記事は約○分で読めます」を表示するプラグイン
## 仕様
・日本語は1分=500文字で計算(フィルターフックで変更できるように)
・ショートコード [reading_time] でも表示できる
・CSSは別ファイルにして、投稿ページだけで読み込む
## ルール
・WordPressコーディング規約に従う
・関数名の接頭辞は urt_
・出力は必ずエスケープ(esc_html など)
・ABSPATH チェックを入れる
まず実装方針とファイル構成を提案して。私がOKを出したら実装に進んで。
フォルダ構成copy
uni-reading-time/
├─ uni-reading-time.php   … プラグイン本体
└─ css/
   └─ reading-time.css    … 見た目(デザイン)
uni-reading-time.phpcopy
<?php
/**
 * Plugin Name: Uni Reading Time
 * Description: 記事の冒頭に「この記事は約○分で読めます」を表示します。ショートコード [reading_time] でも使えます。
 * Version:     1.0.0
 * Author:      Your Name
 * License:     GPL-2.0-or-later
 * Text Domain: uni-reading-time
 */
// WordPress以外から直接アクセスされたら終了(セキュリティ対策)
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}
/**
 * 本文から読了時間(分)を計算する
 * 日本語は1分あたり約500文字で計算(フィルターで変更可能)
 */
function urt_get_minutes( $post_id = null ) {
	$content = get_post_field( 'post_content', $post_id ? $post_id : get_the_ID() );
	$text    = wp_strip_all_tags( strip_shortcodes( $content ) );
	$length  = mb_strlen( preg_replace( '/\s+/u', '', $text ) );
	$per_min = (int) apply_filters( 'urt_chars_per_minute', 500 );
	return max( 1, (int) ceil( $length / max( 1, $per_min ) ) );
}
/**
 * 表示用のHTMLを作る
 */
function urt_render( $post_id = null ) {
	$minutes = urt_get_minutes( $post_id );
	return sprintf(
		'<p class="urt-reading-time">この記事は約<strong>%s分</strong>で読めます</p>',
		esc_html( $minutes )
	);
}
/**
 * 投稿ページの本文の先頭に自動で追加する
 */
function urt_add_to_content( $content ) {
	if ( is_singular( 'post' ) && in_the_loop() && is_main_query() ) {
		return urt_render() . $content;
	}
	return $content;
}
add_filter( 'the_content', 'urt_add_to_content' );
/**
 * ショートコード [reading_time]
 */
function urt_shortcode() {
	return urt_render();
}
add_shortcode( 'reading_time', 'urt_shortcode' );
/**
 * 見た目用のCSSを読み込む(投稿ページのみ)
 */
function urt_enqueue_style() {
	if ( is_singular( 'post' ) ) {
		wp_enqueue_style( 'urt-style', plugin_dir_url( __FILE__ ) . 'css/reading-time.css', array(), '1.0.0' );
	}
}
add_action( 'wp_enqueue_scripts', 'urt_enqueue_style' );
css/reading-time.csscopy
/* 読了時間の表示(ピル型のラベル) */
.urt-reading-time {
  display: inline-block;
  margin: 0 0 24px;
  padding: 6px 14px;
  border-radius: 999px;
  background: #e6f4f4;
  color: #326f6e;
  font-size: 14px;
}
.urt-reading-time strong {
  font-weight: 700;
}

機能を育てる追加の依頼例

  • 「管理画面に設定ページを追加して、1分あたりの文字数を変えられるようにして。nonceと権限チェックも入れて」
  • 「固定ページでも表示するかどうかを設定で選べるようにして」
  • 「このプラグインにセキュリティ上の問題がないかレビューして」
注意:AIが書いたコードも、公開前に必ずローカル環境で動作確認を行い、バックアップを取ってから本番に導入しましょう。特に、フォームや設定を保存する処理はセキュリティ対策(エスケープ・nonce・権限チェック)が入っているか確認が必要です。

用語メモ

フィルターフック(add_filter)
WordPressが出力する内容を、途中で書き換えるための仕組み。ここでは本文(the_content)の先頭に表示を追加しています。
ショートコード
本文に [reading_time] のように書くと、決まった内容に置き換わる仕組みです。
エスケープ(esc_html など)
画面に出す文字を安全な形に変換する処理。悪意のあるコードが実行されるのを防ぎます。
nonce(ノンス)
フォーム送信が正しい画面から行われたかを確認する「使い捨ての合言葉」です。
ABSPATH チェック
プラグインのファイルにURLで直接アクセスされたとき、処理を止めるためのお決まりの一文です。

実例④ ブラウザで動くアプリを開発する

最後は、ちょっとしたWebアプリ作りです。いきなり大きなアプリを目指すより、「自分が毎日使う小さな道具」から作るのが上達の近道。ここではタスク管理アプリを例に、Claude Codeでの進め方を紹介します。

「プランモード」で計画から始める

Claude Codeでは Shift + Tab キーでモードを切り替えられます。「プランモード」にすると、Claudeはファイルを書き換えずにまず実装計画だけを提案してくれます。計画に納得してから実装に進めるので、初心者でも安心です。

App

タスク管理アプリ「Mini Todo」

ライブラリを使わない3ファイル構成のWebアプリです。3つのファイルを同じフォルダに保存して index.html をブラウザで開くだけで動きます。

localStorageaddEventListenertextContentライブラリ不要
PROMPTHTMLCSSJS
Claude Codeへの依頼copy
ブラウザで動くシンプルなタスク管理アプリを作りたいです。
## 機能
・タスクの追加 / 完了チェック / 削除
・残りの件数を表示
・ページを閉じてもデータが残る(localStorage に保存)
## 技術
・HTML / CSS / JavaScript(ライブラリは使わない)
・ファイルは index.html / style.css / app.js の3つ
## 進め方
・まず計画を立てて、私の確認を取ってから実装して
・完成したら、動作確認の手順を教えて
index.htmlcopy
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Mini Todo</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <main class="app">
    <h1 class="app-title">今日のタスク</h1>
    <form id="todo-form" class="todo-form">
      <input id="todo-input" type="text" placeholder="やることを入力" required>
      <button type="submit">追加</button>
    </form>
    <p class="todo-count"><span id="todo-left">0</span> 件残っています</p>
    <ul id="todo-list" class="todo-list"></ul>
  </main>
  <script src="app.js"></script>
</body>
</html>
style.csscopy
body { margin: 0; background: #f4f7f7; font-family: "Noto Sans JP", sans-serif; color: #1a1a1a; }
.app { max-width: 480px; margin: 48px auto; padding: 32px 24px; background: #fff; border-radius: 12px; box-shadow: 0 4px 24px rgba(0, 0, 0, .06); }
.app-title { margin: 0 0 20px; font-size: 22px; }
.todo-form { display: flex; gap: 8px; }
.todo-form input { flex: 1; padding: 12px; border: 1px solid #d0d7d7; border-radius: 8px; font-size: 16px; }
.todo-form button { padding: 0 20px; border: none; border-radius: 8px; background: #3e8685; color: #fff; font-weight: 700; cursor: pointer; }
.todo-count { margin: 16px 0 8px; font-size: 13px; color: #6b6b6b; }
.todo-list { list-style: none; margin: 0; padding: 0; }
.todo-item { display: flex; align-items: center; gap: 10px; padding: 12px 4px; border-bottom: 1px solid #eef2f2; }
.todo-item span { flex: 1; }
.todo-item.is-done span { color: #aaa; text-decoration: line-through; }
.todo-del { border: none; background: none; color: #c0392b; cursor: pointer; font-size: 13px; }
app.jscopy
// Mini Todo : localStorage に保存するシンプルなタスク管理
const STORAGE_KEY = 'mini-todo';
const form = document.getElementById('todo-form');
const input = document.getElementById('todo-input');
const list = document.getElementById('todo-list');
const left = document.getElementById('todo-left');
// 保存済みのタスクを読み込む(なければ空の配列)
let todos = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]');
function save() {
  localStorage.setItem(STORAGE_KEY, JSON.stringify(todos));
}
// タスク一覧を描き直す
function render() {
  list.innerHTML = '';
  todos.forEach((todo) => {
    const li = document.createElement('li');
    li.className = 'todo-item' + (todo.done ? ' is-done' : '');
    const check = document.createElement('input');
    check.type = 'checkbox';
    check.checked = todo.done;
    check.addEventListener('change', () => {
      todo.done = check.checked;
      save();
      render();
    });
    const text = document.createElement('span');
    text.textContent = todo.text; // textContent で安全に表示(XSS対策)
    const del = document.createElement('button');
    del.textContent = '削除';
    del.className = 'todo-del';
    del.addEventListener('click', () => {
      todos = todos.filter((t) => t.id !== todo.id);
      save();
      render();
    });
    li.append(check, text, del);
    list.appendChild(li);
  });
  left.textContent = todos.filter((t) => !t.done).length;
}
// 追加ボタン(フォーム送信)を押したとき
form.addEventListener('submit', (e) => {
  e.preventDefault(); // ページの再読み込みを止める
  const text = input.value.trim();
  if (!text) return;
  todos.push({ id: Date.now(), text, done: false });
  input.value = '';
  save();
  render();
});
render();

完成したら、こんな依頼で機能を追加

  • 「タスクに期限日を付けられるようにして。期限切れは赤く表示して」
  • 「“すべて / 未完了 / 完了” の切り替えフィルターを追加して」
  • 「ここまでの変更をgitにコミットして。メッセージは日本語で」
  • 「React(Vite)で作り直すと何が良くなる?メリットとデメリットを教えて」
ポイント:変更のたびにgitでコミット(保存)しておくと、AIの修正がうまくいかなかったときもすぐ元に戻せます。「コミットして」と頼めばClaude Codeが実行してくれます。

用語メモ

localStorage
ブラウザにデータを保存できる仕組み。ページを閉じてもデータが残ります(別のブラウザやパソコンとは共有されません)。
git(ギット)
ファイルの変更履歴を記録するツール。いつでも過去の状態に戻せます。
XSS対策
入力された文字に悪意のあるコードが含まれていても実行されないようにする対策。ここでは textContent を使って文字として表示しています。

Claude Codeの始め方と基本操作

実例③④で使ったClaude Codeの始め方です。難しそうに見えますが、インストールはコマンド1行で完了します。

Setup

Claude Codeのインストールと起動

ターミナル(WindowsはPowerShell)に1行ずつ貼り付けて実行します。起動後は、普段の言葉で依頼するだけです。

ターミナルclaude コマンド
TERMINAL
ターミナルcopy
# macOS / Linux(ターミナル)
curl -fsSL https://claude.ai/install.sh | bash
# Windows(PowerShell)
irm https://claude.ai/install.ps1 | iex
# インストールできたか確認
claude --version
# 作業フォルダに移動して起動(初回はログイン画面が開きます)
cd ~/projects/my-site
claude

覚えておきたい基本操作

操作 できること
/init フォルダの中身を調べて、プロジェクトの説明書「CLAUDE.md」を自動で作成
/clear 会話をリセット。別の作業に移るときに使うと、話が混ざりません
/compact 長くなった会話を要約して軽くする
/model 使うモデル(性能・速度)を切り替える
@ファイル名 特定のファイルを指定して「@css/style.css のボタンを直して」のように依頼
Shift + Tab モード切り替え(プランモードなど)
Esc 作業を途中で止める。方向がズレたらすぐ止めて指示し直しましょう

CLAUDE.md で「プロジェクトのルール」を覚えさせる

CLAUDE.md は、Claude Codeが起動するたびに読み込む「引き継ぎメモ」です。技術スタックやコーディングルール、やってはいけないことを書いておくと、毎回説明しなくても守ってくれます。

Memo

CLAUDE.md の書き方例

プロジェクトのフォルダ直下に置く「Claudeへの引き継ぎメモ」です。/init で自動作成したあと、自分のルールを書き足していきましょう。

/init で自動作成ルールを書き足す
MARKDOWN
CLAUDE.mdcopy
# プロジェクト概要
コーポレートサイトのWordPressオリジナルテーマ
# 技術スタック
- PHP 8.2 / WordPress 6.x
- CSS:FLOCSS設計(Sassは使わない)
- JavaScript:jQuery 3.7.1(テーマで読み込み済み)
# コーディングルール
- 関数名の接頭辞は mytheme_
- 出力は必ず esc_html / esc_url / esc_attr でエスケープする
- 既存ファイルを大きく書き換える前に、必ず方針を説明すること
# よく使うコマンド
- ローカル環境:Local(http://mysite.local)
- PHPの構文チェック:php -l ファイル名
# やってはいけないこと
- wp-config.php は編集しない
- 本番サーバーへ直接アップロードしない

用語メモ

ターミナル
文字でパソコンに命令を出す画面。Macは「ターミナル」、Windowsは「PowerShell」を使います。
コマンド
ターミナルに入力する命令文のこと。
Markdown(マークダウン)
# で見出し、- で箇条書きを表す、シンプルな文章の書き方です。

VS Codeを使っている方は、拡張機能からClaude Codeをエディタ内で使うこともできます。VS Codeの基本はVS Codeの導入と基本操作ガイドで解説しています。


スキル(Skills)で「いつもの作業」を自動化する

慣れてくると「毎回同じ手順を説明している」ことに気づきます。そんなときに便利なのがスキル(Skills)です。スキルは、作業の手順やルールをまとめたClaude専用のマニュアルのようなもの。必要な場面でClaudeが自動的に読み込んで、その手順どおりに作業してくれます。

スキルが向いている作業の例

  • WordPressプラグインやテーマの雛形づくり
  • ブログ記事を決まったフォーマットで書く・WordPress用に書き出す
  • サムネイル画像を決まったサイズ・デザインルールで作る
  • 納品前のチェックリスト確認(表示崩れ・リンク切れ・alt属性など)

スキルの作り方

フォルダを1つ作り、その中に SKILL.md を置くだけです。先ほどのプラグイン開発を、スキルにしてみましょう。

Skill

WordPressプラグイン雛形スキル

スキルは「フォルダ+SKILL.md」だけで作れます。description に「いつ使うか」を書いておくと、Claudeが必要な場面で自動的に読み込みます。

SKILL.mdname / description手順とルール
SKILL.md構成
.claude/skills/wp-plugin-scaffold/SKILL.mdcopy
---
name: wp-plugin-scaffold
description: WordPressプラグインを新規作成するときに使う。フォルダ構成・プラグインヘッダー・セキュリティ対策を含む雛形を作成する。
---
# WordPressプラグイン雛形スキル
## 手順
1. プラグイン名・スラッグ・関数の接頭辞をユーザーに確認する
2. 次の構成でファイルを作成する
   - {slug}/{slug}.php(templates/plugin-main.php をもとにヘッダーを書き換える)
   - {slug}/includes/
   - {slug}/assets/css/ と {slug}/assets/js/
   - {slug}/readme.txt
3. すべてのPHPファイルの先頭に ABSPATH チェックを入れる
4. 作成後、php -l で全PHPファイルの構文チェックを行い、結果を報告する
## ルール
- 出力は必ず esc_html / esc_attr / esc_url でエスケープする
- フォーム処理には nonce と current_user_can を必ず使う
- 関数名・オプション名には必ず接頭辞を付ける
フォルダ構成copy
.claude/skills/
└─ wp-plugin-scaffold/
   ├─ SKILL.md           … スキル本体(必須)
   └─ templates/
      └─ plugin-main.php … 雛形ファイル(任意)
使う場所 スキルの置き方
Claude Code(このプロジェクトだけ) プロジェクト内の .claude/skills/スキル名/SKILL.md
Claude Code(すべてのプロジェクト) ホームフォルダの ~/.claude/skills/スキル名/SKILL.md
Claude(Web・アプリ) 設定画面のスキルの項目から、フォルダをZIPにしてアップロード
コツ:スキルの手順は自分で一から書かなくても大丈夫です。うまくいった作業のあとに「今の手順をスキル(SKILL.md)にまとめて」と頼めば、Claudeが下書きを作ってくれます。

つまずきやすいポイントと対策

よくある困りごと 対策
会話が長くなると、最初の指示を忘れる 作業が変わったら新しいチャット(Claude Codeなら /clear)に。守ってほしいルールはプロジェクトや CLAUDE.md へ
それっぽいけど動かないコードが出る エラーメッセージを全文貼る。「動作確認の手順も教えて」と依頼する
既存のコードを勝手に大きく書き換える 「変更箇所だけ出力して」「変更前に方針を説明して」と伝える。gitで履歴を残す
デザインのトーンが毎回バラバラ 最初にデザインガイド(CSS変数)を渡してから依頼する
古い書き方・存在しない関数が出てくる WordPressやPHPのバージョンを伝える。公式ドキュメントのURLを添える
機密情報の扱いが心配 パスワード・APIキー・顧客の個人情報は貼らない。.env などの秘密情報ファイルは読ませない

まとめ

Claudeを「賢く使う」ポイントをおさらいします。

  • 依頼は目的・前提・制約・出力形式をセットで伝える
  • 画像・エラー全文・既存コードなど、素材はどんどん渡す
  • 一度に全部作らせず、小さく区切って確認しながら進める
  • PSDのコーディングは、画像+正確な数値、またはClaude Codeでの解析が効果的
  • WordPressプラグインやアプリ開発は、Claude Codeで「計画→実装→確認」の順に
  • いつものルールは CLAUDE.md、いつもの手順はスキルにまとめる

まずはこの記事のプロンプトをコピーして、どれか1つ試してみてください。「自分の作業のここも任せられるかも」という発見が、きっと見つかるはずです。

広告

以下のエリアには広告またはプロモーションが表示される場合があります。

この記事を書いた人

unigram
web、印刷、映像などの制作をしています。@京都、フリーランス18年目。 大学で講師もしています。 自身の備忘録も兼ねて、Web制作・WordPress・SEO・GA4・生成AI活用をテーマに情報発信しています。わかりやすく優しい内容で記事作成を心がけています。