「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は「チャット画面」だけでなく、用途に合わせていくつかの使い方ができます。まずは全体像をつかみましょう。
Claude(Web・アプリ)
ブラウザやデスクトップ/スマホアプリで使う基本の形。画像やPDFを添付して質問できます。
プロジェクト
資料や「いつもの指示」を登録しておける作業部屋。毎回同じ説明をしなくて済みます。
アーティファクト
作ったWebページやグラフを、チャットの横でそのままプレビュー・共有できる機能です。
Claude Code
パソコンのフォルダの中で、ファイルの作成・編集・コマンド実行まで任せられる開発ツールです。
スキル
「いつもの作業手順」をファイルにまとめてClaudeに覚えさせる仕組み。作業の品質がそろいます。
コネクタ・Cowork など
GoogleドライブやSlackなどと連携したり、パソコン上のファイル整理を任せたりできます。
初心者の方は、まずチャット+アーティファクトで試してみて、慣れてきたらClaude Codeに進むのがおすすめです。ほかのAIツールとの違いが気になる方は、主要AIツール10選の比較記事もあわせてどうぞ。
用語メモ
- 生成AI
- 文章・画像・コードなどを新しく作り出すAIのこと。
- プロンプト
- AIへの指示文・依頼文のこと。書き方次第で回答の質が大きく変わります。
- Claude Code(クロード コード)
- ターミナル(黒い画面)やエディタから使う、開発向けのClaudeです。指定したフォルダ内のファイルを直接読み書きできます。
賢い使い方の基本:回答の質が上がる5つのコツ
Claudeは「察してくれる」タイプですが、伝える情報が少ないと、それっぽいけれど自分の目的とズレた回答になりがちです。次の5つを意識するだけで、結果が見違えます。
コツ1:目的・前提・制約・出力形式をセットで伝える
「料金表を作って」だけでなく、何のために・どんな環境で・どんな条件で・どんな形で欲しいかを書きます。見出し(##)で区切ると、Claudeが情報を整理しやすくなります。
そのまま使える依頼文の型
「目的・前提・制約・出力形式」の4つを見出しで分けて書くだけで、Claudeの回答はぐっと安定します。## は見出しの印で、Claudeが情報を整理しやすくなります。
## 目的 ブログ記事に載せる「料金表セクション」を作りたい ## 前提 ・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ファイルから位置・テキストを自動で抜き出すので、より正確 |
作業の流れ
- PSDを書き出す・情報をメモする全体をPNGで書き出し、メインカラー・フォント・文字サイズ・コンテンツ幅などをメモします(方法Bなら自動で取得)。
- セクションごとに依頼する「ヘッダーとファーストビュー」→「サービス紹介」のように、上から順番に区切って依頼します。
- ブラウザで表示してズレを伝える表示した画面のスクリーンショットを渡し、「見出しの余白をカンプに合わせて」などと具体的に修正を依頼します。
- スマホ表示・アクセシビリティを確認最後に「375px幅での崩れ」「alt属性の抜け」などをチェックさせます。
チャットで画像から組む(手軽)
PSDを画像(PNG/JPG)で書き出して添付し、PSDで確認した正確な数値を添えて依頼します。いきなり全ページではなく「ヘッダーとファーストビューだけ」のように範囲を絞るのがコツです。
添付の画像は、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 まずはヘッダーとファーストビューだけ作ってください。
Claude CodeでPSDを解析して組む(本格派)
Claude Codeなら、PSDファイルそのものをPythonライブラリ「psd-tools」で解析させられます。レイヤー名・位置・テキストを数値で取り出すので、画像だけで推測するより正確です。
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と見た目が違いそうな箇所をリストアップして
# 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")
{
"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 }
]
}
生成されるコードの例(ヘッダー+ファーストビュー)
Claudeが書き出すコードの一例です。色やサイズがCSS変数にまとまっているので、あとからの修正も簡単です。
<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>
: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; }
}
用語メモ
- デザインカンプ
- 完成形に近い見た目で作ったデザイン案のこと。コーディングの設計図になります。
- psd-tools
- PSDファイルの中身(レイヤー・テキスト・位置)をPythonで読み取るためのライブラリ(便利な部品集)です。
- セマンティックなHTML
- header・nav・mainなど、意味に合ったタグで組んだHTML。SEOやアクセシビリティに有利です。
- clamp()
- 「最小値・推奨値・最大値」を指定して、画面幅に合わせてサイズを自動で変えるCSS関数です。
実例② Webデザインのたたき台を作る
デザインツールを開く前に、Claudeに動くデザイン案を作ってもらう使い方です。アーティファクト機能を使うと、チャットの横にWebページがそのまま表示されるので、見ながら「ここをもっとこうして」と直していけます。
ポイントは「誰に・どんな印象で」を伝えること
「おしゃれに」だけだと、どこかで見たようなデザインになりがちです。ターゲット・伝えたい雰囲気・必要なセクションを具体的に伝えましょう。
デザイン案を作ってもらう依頼文
ターゲット・トーン・必要なセクションを伝え、「複数案の考え方」を先に出してもらうのがポイントです。Claudeはアーティファクトとして、その場でプレビューできるデザインを作ってくれます。
地域の小さなカフェのWebサイトのデザイン案を、HTML/CSSのアーティファクトで作ってください。 ## ターゲット 30〜50代の近所の方。落ち着いて長居できる雰囲気を伝えたい ## トーン ナチュラル・温かみ・余白多め。写真が主役 ## 必要なセクション ファーストビュー / こだわり3つ / メニュー / アクセス / Instagramへの導線 ## お願い ・配色とフォントの組み合わせを3案考えて、それぞれの意図を説明して ・まずは1案だけ形にして、残り2案は色とフォントの指定だけ教えて ・写真は仮のグレーの枠で大丈夫です
/* デザインガイド(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)
- ローカル環境を用意する「Local」などのツールで、パソコン上にテスト用のWordPressを作ります。本番サイトでいきなり試すのはNGです。
- pluginsフォルダでClaude Codeを起動するWordPressのプラグインが入っている「plugins」フォルダでターミナルを開き、
claudeと入力します(くわしい手順はこのすぐ下で解説します)。 - 仕様とルールを伝え、まず方針を出させるいきなり書かせず「方針→OK→実装」の順にすると、手戻りが減ります。
- 有効化して動作確認・修正管理画面でプラグインを有効化し、表示を確認。エラーが出たら全文を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 |
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 と入力 |
cdコマンドで移動して起動する
ターミナルに1行ずつ入力して、Enterキーで実行します。# で始まる行は説明文なので入力不要です。
# ① pluginsフォルダへ移動(「mysite」は自分のサイト名に変更) # 「Local Sites」には空白があるので、全体を " " で囲みます cd "$HOME/Local Sites/mysite/app/public/wp-content/plugins" # ② 正しい場所にいるか確認(akismet などのフォルダ名が表示されればOK) ls # ③ Claude Codeを起動 claude
# ① pluginsフォルダへ移動(「mysite」は自分のサイト名に変更) cd "$HOME\Local Sites\mysite\app\public\wp-content\plugins" # ② 正しい場所にいるか確認(akismet などのフォルダ名が表示されればOK) ls # ③ Claude Codeを起動 claude
cd と半角スペースまで入力したら、Finderから plugins フォルダをターミナルの画面にドラッグ&ドロップしてみてください。フォルダの場所が自動で入力されるので、打ち間違いがなくなります。起動すると、ターミナルの中にClaudeの入力欄が表示されます。あとはチャットと同じように、日本語で依頼文を入力するだけです。作業を終えるときは /exit と入力するか、Ctrl + C を2回押します。
用語メモ
- cd(チェンジ・ディレクトリ)
- ターミナルで「作業するフォルダ」を移動するコマンドです。ディレクトリはフォルダと同じ意味です。
- ls(リスト)
- 今いるフォルダの中身を一覧表示するコマンド。正しい場所にいるかの確認に使います。
- パス
/Users/…/pluginsのような、フォルダやファイルの場所を表す住所のような文字列です。
読了時間を表示するプラグイン
投稿の本文から文字数を数えて「約○分で読めます」と表示するプラグインです。下のコードをそのままフォルダに保存してZIPにすれば、WordPressにアップロードして使えます。
WordPressプラグインを新規作成したいです。 ## 作りたいもの 投稿ページの本文の先頭に「この記事は約○分で読めます」を表示するプラグイン ## 仕様 ・日本語は1分=500文字で計算(フィルターフックで変更できるように) ・ショートコード [reading_time] でも表示できる ・CSSは別ファイルにして、投稿ページだけで読み込む ## ルール ・WordPressコーディング規約に従う ・関数名の接頭辞は urt_ ・出力は必ずエスケープ(esc_html など) ・ABSPATH チェックを入れる まず実装方針とファイル構成を提案して。私がOKを出したら実装に進んで。
uni-reading-time/ ├─ uni-reading-time.php … プラグイン本体 └─ css/ └─ reading-time.css … 見た目(デザイン)
<?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' );
/* 読了時間の表示(ピル型のラベル) */
.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と権限チェックも入れて」
- 「固定ページでも表示するかどうかを設定で選べるようにして」
- 「このプラグインにセキュリティ上の問題がないかレビューして」
用語メモ
- フィルターフック(add_filter)
- WordPressが出力する内容を、途中で書き換えるための仕組み。ここでは本文(the_content)の先頭に表示を追加しています。
- ショートコード
- 本文に
[reading_time]のように書くと、決まった内容に置き換わる仕組みです。 - エスケープ(esc_html など)
- 画面に出す文字を安全な形に変換する処理。悪意のあるコードが実行されるのを防ぎます。
- nonce(ノンス)
- フォーム送信が正しい画面から行われたかを確認する「使い捨ての合言葉」です。
- ABSPATH チェック
- プラグインのファイルにURLで直接アクセスされたとき、処理を止めるためのお決まりの一文です。
実例④ ブラウザで動くアプリを開発する
最後は、ちょっとしたWebアプリ作りです。いきなり大きなアプリを目指すより、「自分が毎日使う小さな道具」から作るのが上達の近道。ここではタスク管理アプリを例に、Claude Codeでの進め方を紹介します。
「プランモード」で計画から始める
Claude Codeでは Shift + Tab キーでモードを切り替えられます。「プランモード」にすると、Claudeはファイルを書き換えずにまず実装計画だけを提案してくれます。計画に納得してから実装に進めるので、初心者でも安心です。
タスク管理アプリ「Mini Todo」
ライブラリを使わない3ファイル構成のWebアプリです。3つのファイルを同じフォルダに保存して index.html をブラウザで開くだけで動きます。
ブラウザで動くシンプルなタスク管理アプリを作りたいです。 ## 機能 ・タスクの追加 / 完了チェック / 削除 ・残りの件数を表示 ・ページを閉じてもデータが残る(localStorage に保存) ## 技術 ・HTML / CSS / JavaScript(ライブラリは使わない) ・ファイルは index.html / style.css / app.js の3つ ## 進め方 ・まず計画を立てて、私の確認を取ってから実装して ・完成したら、動作確認の手順を教えて
<!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>
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; }
// 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)で作り直すと何が良くなる?メリットとデメリットを教えて」
用語メモ
- localStorage
- ブラウザにデータを保存できる仕組み。ページを閉じてもデータが残ります(別のブラウザやパソコンとは共有されません)。
- git(ギット)
- ファイルの変更履歴を記録するツール。いつでも過去の状態に戻せます。
- XSS対策
- 入力された文字に悪意のあるコードが含まれていても実行されないようにする対策。ここでは
textContentを使って文字として表示しています。
Claude Codeの始め方と基本操作
実例③④で使ったClaude Codeの始め方です。難しそうに見えますが、インストールはコマンド1行で完了します。
Claude Codeのインストールと起動
ターミナル(WindowsはPowerShell)に1行ずつ貼り付けて実行します。起動後は、普段の言葉で依頼するだけです。
# 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が起動するたびに読み込む「引き継ぎメモ」です。技術スタックやコーディングルール、やってはいけないことを書いておくと、毎回説明しなくても守ってくれます。
CLAUDE.md の書き方例
プロジェクトのフォルダ直下に置く「Claudeへの引き継ぎメモ」です。/init で自動作成したあと、自分のルールを書き足していきましょう。
# プロジェクト概要 コーポレートサイトの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 を置くだけです。先ほどのプラグイン開発を、スキルにしてみましょう。
WordPressプラグイン雛形スキル
スキルは「フォルダ+SKILL.md」だけで作れます。description に「いつ使うか」を書いておくと、Claudeが必要な場面で自動的に読み込みます。
---
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 を必ず使う
- 関数名・オプション名には必ず接頭辞を付ける
.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にしてアップロード |
つまずきやすいポイントと対策
| よくある困りごと | 対策 |
|---|---|
| 会話が長くなると、最初の指示を忘れる | 作業が変わったら新しいチャット(Claude Codeなら /clear)に。守ってほしいルールはプロジェクトや CLAUDE.md へ |
| それっぽいけど動かないコードが出る | エラーメッセージを全文貼る。「動作確認の手順も教えて」と依頼する |
| 既存のコードを勝手に大きく書き換える | 「変更箇所だけ出力して」「変更前に方針を説明して」と伝える。gitで履歴を残す |
| デザインのトーンが毎回バラバラ | 最初にデザインガイド(CSS変数)を渡してから依頼する |
| 古い書き方・存在しない関数が出てくる | WordPressやPHPのバージョンを伝える。公式ドキュメントのURLを添える |
| 機密情報の扱いが心配 | パスワード・APIキー・顧客の個人情報は貼らない。.env などの秘密情報ファイルは読ませない |
まとめ
Claudeを「賢く使う」ポイントをおさらいします。
- 依頼は目的・前提・制約・出力形式をセットで伝える
- 画像・エラー全文・既存コードなど、素材はどんどん渡す
- 一度に全部作らせず、小さく区切って確認しながら進める
- PSDのコーディングは、画像+正確な数値、またはClaude Codeでの解析が効果的
- WordPressプラグインやアプリ開発は、Claude Codeで「計画→実装→確認」の順に
- いつものルールは CLAUDE.md、いつもの手順はスキルにまとめる
まずはこの記事のプロンプトをコピーして、どれか1つ試してみてください。「自分の作業のここも任せられるかも」という発見が、きっと見つかるはずです。