第3部:実践サイト制作 Step 8 / 14

ポートフォリオサイト制作

ポートフォリオサイトは自分をアピールする名刺代わり。AIを活用して、魅力的なポートフォリオを作りましょう。

このレッスンでは、Claude Codeを使って実際にポートフォリオサイトを1から作成します。完成コードも掲載しているので、初めての方でも安心です。

ポートフォリオに必要な要素

👋

自己紹介

名前、肩書き、プロフィール写真

💼

実績・作品

過去の制作物をビジュアルで紹介

🛠️

スキル

得意な技術、使えるツール

📧

お問い合わせ

連絡先、問い合わせフォーム

事前準備

Claude Codeとは?

Claude Codeは、Anthropic社が提供するAIコーディングアシスタントです。ターミナル(コマンドプロンプト)上で動作し、自然な日本語の指示でファイルの作成・編集を行ってくれます。プログラミング未経験でも、やりたいことを言葉で伝えるだけでコードを書いてくれる強力なツールです。

プロジェクトフォルダの作成

まず、ポートフォリオサイトのファイルを保存するフォルダを作成します。ターミナル(Windowsの場合はコマンドプロンプトまたはPowerShell)を開いて、以下のコマンドを入力してください。

mkdir portfolio-site
cd portfolio-site

次に、Claude Codeを起動します。

claude

※ Claude Codeが未インストールの場合は、npm install -g @anthropic-ai/claude-code でインストールしてください。

Step 1: プロジェクトの初期化

Claude Codeが起動したら、以下の指示を入力してください。AIがポートフォリオサイトのHTMLファイルを自動で作成してくれます。

Claude Codeに以下を入力:

ポートフォリオサイトを作成します。以下の構成でindex.htmlファイルを作成してください。Tailwind CSS(CDN版)を使用。1ページ完結のスクロール型。セクション:ヒーロー、自己紹介、スキル、実績、お問い合わせ

AIが行うこと

  • 1. index.html ファイルを新規作成します
  • 2. Tailwind CSSのCDNリンクを含むHTML構造を生成します
  • 3. 指定した5つのセクション(ヒーロー、自己紹介、スキル、実績、お問い合わせ)を含むページを作成します

※ Claude Codeがファイルの作成許可を求めてきたら「Yes」を選択してください。

完成コード

Claude Codeが生成するコードは毎回少し異なりますが、以下のような完成形になります。このコードをそのままコピーして使うこともできます。

index.html

コピーして使えます
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>山田太郎 - Portfolio</title>
    <script src="https://cdn.tailwindcss.com"></script>
    <style>
        html { scroll-behavior: smooth; }
    </style>
</head>
<body class="bg-gray-50 text-gray-800">

    <!-- ナビゲーション -->
    <nav class="fixed top-0 w-full bg-white/90 backdrop-blur shadow-sm z-50">
        <div class="container mx-auto px-6 py-4 flex justify-between items-center">
            <a href="#" class="text-xl font-bold text-gray-800">T.Yamada</a>
            <div class="hidden md:flex space-x-8">
                <a href="#about" class="text-gray-600 hover:text-blue-600">自己紹介</a>
                <a href="#skills" class="text-gray-600 hover:text-blue-600">スキル</a>
                <a href="#works" class="text-gray-600 hover:text-blue-600">実績</a>
                <a href="#contact" class="text-gray-600 hover:text-blue-600">お問い合わせ</a>
            </div>
        </div>
    </nav>

    <!-- ヒーローセクション -->
    <section class="min-h-screen flex items-center justify-center bg-gradient-to-br from-blue-600 to-purple-700 text-white">
        <div class="text-center px-6">
            <p class="text-lg mb-4 tracking-widest">Web Designer / UI Designer</p>
            <h1 class="text-5xl md:text-7xl font-bold mb-6">山田太郎</h1>
            <p class="text-xl md:text-2xl mb-10 text-blue-100">使いやすさを、美しさに。</p>
            <a href="#works" class="inline-block border-2 border-white px-8 py-3 rounded-full hover:bg-white hover:text-blue-700 transition">実績を見る</a>
        </div>
    </section>

    <!-- 自己紹介セクション -->
    <section id="about" class="py-20">
        <div class="container mx-auto px-6 max-w-4xl">
            <h2 class="text-3xl font-bold text-center mb-12">自己紹介</h2>
            <div class="flex flex-col md:flex-row items-center gap-12">
                <div class="w-48 h-48 bg-gray-300 rounded-full flex items-center justify-center text-gray-500 text-sm">
                    写真
                </div>
                <div class="flex-1">
                    <h3 class="text-2xl font-bold mb-4">山田 太郎<span class="text-base font-normal text-gray-500 ml-3">Taro Yamada</span></h3>
                    <p class="text-gray-600 leading-relaxed mb-4">
                        東京を拠点に活動するWebデザイナーです。ユーザーにとって「使いやすく、美しい」デザインを追求しています。
                        企業サイトからWebアプリまで、幅広いプロジェクトに対応。クライアントの課題を丁寧にヒアリングし、
                        最適なデザインソリューションを提案します。
                    </p>
                    <p class="text-gray-600 leading-relaxed">
                        制作実績は50件以上。「デザインの力でビジネスを前に進める」をモットーに、
                        日々新しい技術やトレンドを学び続けています。
                    </p>
                </div>
            </div>
        </div>
    </section>

    <!-- スキルセクション -->
    <section id="skills" class="py-20 bg-white">
        <div class="container mx-auto px-6 max-w-4xl">
            <h2 class="text-3xl font-bold text-center mb-12">スキル</h2>
            <div class="grid md:grid-cols-2 gap-8">
                <div>
                    <div class="flex justify-between mb-2">
                        <span class="font-medium">HTML / CSS</span>
                        <span class="text-gray-500">90%</span>
                    </div>
                    <div class="w-full bg-gray-200 rounded-full h-3">
                        <div class="bg-blue-600 h-3 rounded-full" style="width: 90%"></div>
                    </div>
                </div>
                <div>
                    <div class="flex justify-between mb-2">
                        <span class="font-medium">JavaScript</span>
                        <span class="text-gray-500">75%</span>
                    </div>
                    <div class="w-full bg-gray-200 rounded-full h-3">
                        <div class="bg-yellow-500 h-3 rounded-full" style="width: 75%"></div>
                    </div>
                </div>
                <div>
                    <div class="flex justify-between mb-2">
                        <span class="font-medium">Figma</span>
                        <span class="text-gray-500">85%</span>
                    </div>
                    <div class="w-full bg-gray-200 rounded-full h-3">
                        <div class="bg-purple-500 h-3 rounded-full" style="width: 85%"></div>
                    </div>
                </div>
                <div>
                    <div class="flex justify-between mb-2">
                        <span class="font-medium">Photoshop / Illustrator</span>
                        <span class="text-gray-500">80%</span>
                    </div>
                    <div class="w-full bg-gray-200 rounded-full h-3">
                        <div class="bg-red-500 h-3 rounded-full" style="width: 80%"></div>
                    </div>
                </div>
                <div>
                    <div class="flex justify-between mb-2">
                        <span class="font-medium">WordPress</span>
                        <span class="text-gray-500">70%</span>
                    </div>
                    <div class="w-full bg-gray-200 rounded-full h-3">
                        <div class="bg-green-500 h-3 rounded-full" style="width: 70%"></div>
                    </div>
                </div>
                <div>
                    <div class="flex justify-between mb-2">
                        <span class="font-medium">UI/UXデザイン</span>
                        <span class="text-gray-500">85%</span>
                    </div>
                    <div class="w-full bg-gray-200 rounded-full h-3">
                        <div class="bg-indigo-500 h-3 rounded-full" style="width: 85%"></div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- 実績セクション -->
    <section id="works" class="py-20">
        <div class="container mx-auto px-6 max-w-5xl">
            <h2 class="text-3xl font-bold text-center mb-12">実績</h2>
            <div class="grid md:grid-cols-3 gap-8">
                <!-- 作品1 -->
                <div class="group relative overflow-hidden rounded-lg shadow-lg">
                    <img src="https://via.placeholder.com/600x400/3b82f6/ffffff?text=Corporate+Site" alt="企業サイト" class="w-full h-64 object-cover group-hover:scale-110 transition duration-300">
                    <div class="absolute inset-0 bg-blue-600/80 opacity-0 group-hover:opacity-100 transition duration-300 flex items-center justify-center">
                        <div class="text-center text-white">
                            <p class="font-bold text-lg">株式会社ABC コーポレートサイト</p>
                            <span class="text-sm bg-white/20 px-3 py-1 rounded-full mt-2 inline-block">企業サイト</span>
                        </div>
                    </div>
                </div>
                <!-- 作品2 -->
                <div class="group relative overflow-hidden rounded-lg shadow-lg">
                    <img src="https://via.placeholder.com/600x400/8b5cf6/ffffff?text=EC+Site" alt="ECサイト" class="w-full h-64 object-cover group-hover:scale-110 transition duration-300">
                    <div class="absolute inset-0 bg-purple-600/80 opacity-0 group-hover:opacity-100 transition duration-300 flex items-center justify-center">
                        <div class="text-center text-white">
                            <p class="font-bold text-lg">Organic Shop ECサイト</p>
                            <span class="text-sm bg-white/20 px-3 py-1 rounded-full mt-2 inline-block">ECサイト</span>
                        </div>
                    </div>
                </div>
                <!-- 作品3 -->
                <div class="group relative overflow-hidden rounded-lg shadow-lg">
                    <img src="https://via.placeholder.com/600x400/10b981/ffffff?text=Web+App" alt="Webアプリ" class="w-full h-64 object-cover group-hover:scale-110 transition duration-300">
                    <div class="absolute inset-0 bg-green-600/80 opacity-0 group-hover:opacity-100 transition duration-300 flex items-center justify-center">
                        <div class="text-center text-white">
                            <p class="font-bold text-lg">TaskFlow タスク管理アプリ</p>
                            <span class="text-sm bg-white/20 px-3 py-1 rounded-full mt-2 inline-block">Webアプリ</span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- お問い合わせセクション -->
    <section id="contact" class="py-20 bg-white">
        <div class="container mx-auto px-6 max-w-2xl">
            <h2 class="text-3xl font-bold text-center mb-12">お問い合わせ</h2>
            <form class="space-y-6">
                <div>
                    <label class="block text-sm font-medium mb-2">お名前</label>
                    <input type="text" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="山田 花子">
                </div>
                <div>
                    <label class="block text-sm font-medium mb-2">メールアドレス</label>
                    <input type="email" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="example@email.com">
                </div>
                <div>
                    <label class="block text-sm font-medium mb-2">メッセージ</label>
                    <textarea rows="5" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="お気軽にご連絡ください"></textarea>
                </div>
                <button type="submit" class="w-full bg-blue-600 text-white py-3 rounded-lg hover:bg-blue-700 transition font-medium">送信する</button>
            </form>
        </div>
    </section>

    <!-- フッター -->
    <footer class="bg-gray-800 text-white py-8 text-center">
        <p class="text-gray-400">&copy; 2024 Taro Yamada. All rights reserved.</p>
    </footer>

</body>
</html>

ポイント:上記のコードを index.html という名前でファイルに保存するだけで、ポートフォリオサイトが完成します。Claude Codeを使えば自動で作成されますが、手動でコピー&ペーストしてもOKです。

ブラウザで確認

作成したサイトをブラウザで表示してみましょう

  1. 1. エクスプローラー(Finder)で portfolio-site フォルダを開きます
  2. 2. index.html ファイルをダブルクリックします
  3. 3. ブラウザ(Chrome推奨)が自動的に開き、サイトが表示されます

各セクションの確認ポイント

1

ヒーローセクション

画面いっぱいに青~紫のグラデーション背景が表示され、中央に名前「山田太郎」とキャッチコピー「使いやすさを、美しさに。」が表示されます。「実績を見る」ボタンをクリックすると、実績セクションまでスクロールします。

2

自己紹介セクション

丸いプロフィール写真エリア(プレースホルダー)の横に、名前とプロフィール文が表示されます。スマホでは縦並びになります。

3

スキルセクション

色付きのプログレスバーで各スキルの習熟度が表示されます。HTML/CSS 90%、JavaScript 75%、Figma 85%など、視覚的にわかりやすくなっています。

4

実績セクション

3つの作品カードが横並びで表示されます。カードにマウスを乗せると画像が拡大し、オーバーレイで作品名とカテゴリーが表示されます。

5

お問い合わせセクション

お名前・メールアドレス・メッセージの入力フォームと「送信する」ボタンが表示されます。(このフォームは見た目のみで、実際の送信機能はありません)

カスタマイズしてみよう

サイトが表示されたら、次は自分の情報に置き換えていきましょう。Claude Codeに以下のように指示するだけで、簡単にカスタマイズできます。

Claude Codeに以下を入力:

以下の変更をしてください:
・名前を「あなたの名前」に変更
・カラーテーマを青系から緑系に変更
・スキルの内容を以下に変更:
  - Webデザイン 85%
  - 動画編集 70%
  - SNS運用 90%
  - ライティング 75%
・プロフィール文を自分の自己紹介に変更

カスタマイズのヒント

色を変えたい場合

「カラーテーマを赤系に変更して」「ヒーローの背景をオレンジのグラデーションにして」など、日本語で色の指示をするだけでOKです。

セクションを追加したい場合

「実績の下に"お客様の声"セクションを追加して」のように指示すると、新しいセクションが追加されます。

プロフィール写真を入れたい場合

写真ファイルを同じフォルダに入れて、「プロフィール写真を photo.jpg に変更して」と指示します。

実績の画像を変えたい場合

作品のスクリーンショットをフォルダに入れて、「作品1の画像を work1.jpg に変更して」と指示します。

よくあるエラーと対処法

ページが真っ白になる

原因1:Tailwind CSSのCDNが読み込めていない

対処 → インターネット接続を確認してください。オフラインではTailwind CDNが動作しません。HTMLの<head>内に <script src="https://cdn.tailwindcss.com"></script> があるか確認してください。

原因2:HTMLタグの閉じ忘れ

対処 → Claude Codeに「HTMLの構文エラーがないかチェックして修正してください」と指示してください。

レイアウトが崩れる

原因:Tailwind CSSのクラス名の打ち間違い

対処 → 手動でコードを編集した場合、クラス名にタイプミスがないか確認してください。例えば flx(正しくは flex)のような間違いです。Claude Codeに「レイアウトが崩れているので確認して修正して」と伝えると自動で直してくれます。

画像が表示されない

原因:画像ファイルのパスが間違っている

対処 → 画像ファイルが index.html と同じフォルダにあるか確認してください。ファイル名の大文字・小文字も区別されるので注意(Photo.jpgphoto.jpg は別ファイルとして扱われます)。

スマホで見るとデザインが違う

原因:レスポンシブ対応の問題

対処 → ブラウザの開発者ツール(F12キー)でスマホ表示を確認できます。Claude Codeに「スマホ表示で崩れている部分を修正して」と指示すると、レスポンシブ対応を調整してくれます。

ポートフォリオのコツ

実績は厳選する

量より質。最も自信のある作品を3〜6点程度に絞る

プロセスも見せる

完成品だけでなく、制作過程や工夫した点も紹介

更新を続ける

定期的に新しい作品を追加して鮮度を保つ

まとめ

  • 自己紹介、実績、スキル、連絡先が基本構成
  • AIに構成→各セクションの順で作成を依頼
  • 実績は厳選して質を重視
  • 定期的に更新して最新の状態を保つ
前へ:AIで画像生成 次へ:ビジネスサイト制作