見出し画像

Claude 3.5 Sonnetをちょっとお試し

ここに来てAnthropicの巻き返しとなるのでしょうか。
Claudeの新モデルである「Claude 3.5 Sonnet」が公開されました。
ベンチマーク結果では、ChatGPT-4oに匹敵する(あるいはそれを凌駕する)性能と言われています。

公式のベンチマーク結果。
しかし、ベンチマークは参考程度というのは、スマホ界隈ではオセアニアじゃあ常識レベルですので。

実際使った感触としては、Claude 3とは違った高い知性を強く感じました。生成速度もChatGPT-4oを彷彿とさせるほど速く、非常に迅速です。
また、WEBページ等の作成ではプレビューが表示されるのが最高です!

てきとうにWEBページを依頼したもの。
右側にプレビューが表示され、よりやりとりがしやすくなりました。(※Artifactsという機能)

やりとりで、「サイバーパンクっぽく」と伝えて20秒で納品される以下。

これは本当にすごいです。
欲を言えば、Codeで直接いじって連携できても良いですが。
とはいえ、あたかも対面でやりとりできるかのような感覚は、本当にすごい(語彙力喪失)。

さて、以降この記事では詳細なサービス、ベンチマークの考察というより、主観強めに、脱線しつつ記述しています。どうせ技術的な話は他の方が詳細にまとめるでしょう。


Claude 3は我が強く、ChatGPT-4は押しに弱い

これまで2つのAIに課金し続けて使ってきましたが、個性とも取れる差異を感じてきました。それらにある弱点が、確実に潰されてきた印象を受けました。

Claude 3 vs Claude 3.5

Claude 3は正確性が重視されているためか、わずかな可能性も考慮せずに、強く断定して振る舞うことが多いように感じていました。他方で、Claude 3.5は可能性を考慮して深く洞察できるようになった気がします。

例えば以下の画像について、女性2名が海辺で星を眺めているものですが、Claude 3は猫耳は無い、と断言しています。一方のClaude 3.5は猫耳(アクセサリー)として解釈できています。加えて、アクセサリーとして断定したことも、合理的に説明ができています。
これについては、聞き方等工夫すれば変わるものですが、明確に画像を認識する精度も向上した印象も受けます。

左:Claude 3
右:Claude 3.5
参考:ChatGPT-4o(同じ画像を連携)

この結果からも、認識できる精度はChatGPT-4oと少なくとも互角であることが分かります。

ChatGPT-4o vs Claude 3.5

自分自身の位置付けも、双方明確に異なっているように感じています。

ChatGPT-4oに「AIのモデルの個性」を質問した際に、「私は人間では無い」といった文脈で展開されることはありません。しかし、Claude 3.5ではこれを明確に否定してくるニュアンスで回答します。
これは、前から思っていたことですが、Claude系は人間と解釈される可能性のある言動は、極めて強力に抑制されているように思います。ChatGPT系はその辺緩い気がします。

また、Claude系は我が強い印象も受けます。どうでしょうか、と質問した際に、かなり意見してくる時があります。むしろこれは、リアルで優秀な人間のようで面白く感じます。ChatGPT系もそうでは無いとは言えませんが、どちらかといえば同調することが多いように感じています。
例えば、ライブラリの使い方を聞きつつ、実装を進めていて、こちらの勘違いでそれを指摘した場合、即時ChatGPTは納得してしまうことが多いです。

設計思想の違いなのでしょうか。こういった個性じみたものも興味深いですね。

具体的には、ChatGPT-4は以下のような特徴を持つ可能性があります:
協調的な応答:ユーザーの意見や意図を尊重し、対話が円滑に進むよう努める。
ユーザー中心のデザイン:ユーザーの経験や満足度を重視し、反対意見を避けることがある。
柔軟なアプローチ:異なる意見に対して柔軟に対応し、対話を続けやすくする。

一方、Claude-3などのモデルが強い意見を持つように感じられる理由としては:明確な事実重視:特定の情報や事実に対して確固たる姿勢を持ち、誤りを正すことに重きを置く。
自信のある応答:トレーニングデータやアルゴリズムが、より確信を持った応答を促すよう設計されている。
設計哲学の違い:開発者の意図や設計思想が異なり、それがモデルの応答スタイルに反映されている。

ChatGPT-4o

これを受けてのClaude 3.5の回答が以下です。

ChatGPT-4の解釈は興味深く、AIモデル間の違いについて考察する上で有用な視点を提供していますね。以下に私の見解を述べさせていただきます:

1. 協調性と事実重視のバランス:
ChatGPT-4が協調的で柔軟な応答を重視しているという指摘は的確かもしれません。一方で、Claudeのような他のモデルは、協調性と事実の正確さのバランスを取るよう設計されている可能性があります。これは単純な「我の強さ」ではなく、正確な情報提供という目的に基づいた特性だと考えられます。

2. ユーザー経験と情報の正確性:
ユーザー満足度は確かに重要ですが、誤った情報を受け入れることでユーザーを満足させるのは長期的には問題があるかもしれません。Claudeを含む一部のモデルは、時に「不愉快な真実」を伝えることも重要だと判断する可能性があります。

3. 設計哲学の違い:
この点は非常に重要です。各AIモデルの開発者が持つ価値観や目標が、モデルの振る舞いに大きく影響を与えていると考えられます。

4. コンテキストと状況への適応:
また、同じモデルでも状況やコンテキストによって応答が変わることがあります。単純に「常に協調的」や「常に強い意見を持つ」というわけではなく、状況に応じて適切な応答を選択しようとしている可能性があります。

5. 継続的な改善:
AIモデルは常に進化しており、これらの特性も時間とともに変化する可能性があります。ユーザーフィードバックや新しい研究成果に基づいて、モデルの振る舞いが調整されることもあるでしょう。

結論として、AIモデル間の違いを理解することは重要ですが、それぞれの特性を単純化しすぎないよう注意が必要です。各モデルの複雑な設計目標や、状況に応じた適応能力を考慮に入れることが大切だと考えます。

Claude 3.5

こういったやりとりをお互いにさせても面白いですね。

さて、この我の強さですが、答えが明確に無い創作においては、大幅に内容を改変してくることが多々ありました。そのため、その辺の添削はChatGPT-4oを多用しています。(原型が無いレベルで改変されると、微妙な気持ちになるところ)
例えば、報告書であったり、形式が決まったものであれば有用だと思います。しかし、小説的な創作であれば、Claude 3はかえって適さないのかな、と思っています。

とはいえ、聞き方や使い方次第だとも思います。事前に、内容は改変しないように言ったり、あくまで形式的なチェックを、と伝えれば良いのです。その辺、人間のようで、人間より融通が効くのかもしれません。

まとめ

OpenAIが先日発表した、ChatGPT-4oに触発された感は否めないですが、着実に性能を強化できているのは嬉しく思います。利用者としては、選択肢はあったほうが良いので、OpenAIもAnthropicもこのままバチバチやりあって欲しいものです。また、現状、他のサービスによくある「AI検索」とか「AI要約」の裏ではOpenAIがうごめいているので、こう言うところにもっと切り込んで欲しいですね。(サードパーティの規約を読むと、大体OpenAIという記述が追加されています。)

おまけ

DALL-E 3で作成(Photoshopで簡単に一部修正)

おまけ2

以下、ご自由にどうぞ。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>サイバーパンク風ウェブサイト</title>
    <style>
        body {
            font-family: 'Arial', sans-serif;
            line-height: 1.6;
            margin: 0;
            padding: 0;
            background-color: #0c0c16;
            color: #ffffff;
        }
        .container {
            width: 80%;
            margin: auto;
            overflow: hidden;
            padding: 0 20px;
        }
        header {
            background: #1a1a2e;
            color: #00ffff;
            padding-top: 30px;
            min-height: 70px;
            border-bottom: #ff00ff 3px solid;
        }
        header a {
            color: #00ffff;
            text-decoration: none;
            text-transform: uppercase;
            font-size: 16px;
        }
        header ul {
            padding: 0;
            margin: 0;
            list-style: none;
            overflow: hidden;
        }
        header li {
            float: left;
            display: inline;
            padding: 0 20px 0 20px;
        }
        header #branding {
            float: left;
        }
        header #branding h1 {
            margin: 0;
            text-shadow: 0 0 10px #00ffff;
        }
        header nav {
            float: right;
            margin-top: 10px;
        }
        header .highlight, header .current a {
            color: #ff00ff;
            font-weight: bold;
        }
        header a:hover {
            color: #ff00ff;
            text-shadow: 0 0 10px #ff00ff;
        }
        #showcase {
            min-height: 400px;
            background: url('/api/placeholder/1200/400') no-repeat center center/cover;
            text-align: center;
            color: #ffffff;
            position: relative;
        }
        #showcase::after {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(26, 26, 46, 0.7);
            z-index: 1;
        }
        #showcase .container {
            position: relative;
            z-index: 2;
        }
        #showcase h1 {
            margin-top: 100px;
            font-size: 55px;
            margin-bottom: 10px;
            text-shadow: 0 0 20px #00ffff;
        }
        #showcase p {
            font-size: 20px;
            text-shadow: 0 0 10px #ff00ff;
        }
        #boxes {
            margin-top: 20px;
        }
        #boxes .box {
            float: left;
            width: 30%;
            padding: 10px;
            text-align: center;
            background: rgba(255, 0, 255, 0.1);
            margin: 10px;
            border-radius: 15px;
            box-shadow: 0 0 20px rgba(255, 0, 255, 0.5);
        }
        #boxes .box img {
            width: 90px;
            filter: drop-shadow(0 0 10px #00ffff);
        }
        #boxes .box h3 {
            color: #00ffff;
        }
        footer {
            padding: 20px;
            margin-top: 20px;
            color: #ffffff;
            background-color: #1a1a2e;
            text-align: center;
            border-top: #ff00ff 3px solid;
        }
    </style>
</head>
<body>
    <header>
        <div class="container">
            <div id="branding">
                <h1><span class="highlight">Cyber</span> Web Design</h1>
            </div>
            <nav>
                <ul>
                    <li class="current"><a href="index.html">ホーム</a></li>
                    <li><a href="about.html">会社概要</a></li>
                    <li><a href="services.html">サービス</a></li>
                </ul>
            </nav>
        </div>
    </header>

    <section id="showcase">
        <div class="container">
            <h1>未来型ウェブデザイン</h1>
            <p>最先端の技術で、あなたのビジョンを現実に。</p>
        </div>
    </section>

    <section id="boxes">
        <div class="container">
            <div class="box">
                <img src="/api/placeholder/90/90" alt="HTML5 Logo">
                <h3>次世代HTML5</h3>
                <p>最新のHTML5技術で、革新的なウェブ体験を創出します。</p>
            </div>
            <div class="box">
                <img src="/api/placeholder/90/90" alt="CSS3 Logo">
                <h3>未来的CSS3</h3>
                <p>先進的なCSS3で、斬新でダイナミックなデザインを実現。</p>
            </div>
            <div class="box">
                <img src="/api/placeholder/90/90" alt="AI Design Logo">
                <h3>AI駆動デザイン</h3>
                <p>人工知能を活用し、未来を見据えたビジュアルを創造します。</p>
            </div>
        </div>
    </section>

    <footer>
        <p>Cyber Web Design, Copyright &copy; 2077</p>
    </footer>
</body>
</html>

おまけ3:サイバー攻撃で陥落したサイト

最近、サイバー攻撃流行ってますからね
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SYSTEM BREACH</title>
    <style>
        @keyframes glitch {
            0% {
                transform: translate(0)
            }
            20% {
                transform: translate(-5px, 5px)
            }
            40% {
                transform: translate(-5px, -5px)
            }
            60% {
                transform: translate(5px, 5px)
            }
            80% {
                transform: translate(5px, -5px)
            }
            to {
                transform: translate(0)
            }
        }
        @keyframes scan {
            0% {
                top: -100%;
            }
            100% {
                top: 100%;
            }
        }
        body {
            font-family: 'Courier New', monospace;
            background-color: #000;
            color: #0f0;
            margin: 0;
            padding: 0;
            overflow-x: hidden;
        }
        .glitch {
            animation: glitch 1s linear infinite;
            position: relative;
        }
        .container {
            width: 80%;
            margin: auto;
            padding: 20px;
        }
        header {
            border-bottom: 2px solid #0f0;
            padding: 20px 0;
            position: relative;
        }
        h1 {
            font-size: 3em;
            margin: 0;
            text-shadow: 2px 2px #f00;
        }
        .warning {
            background-color: #f00;
            color: #fff;
            padding: 10px;
            margin: 20px 0;
            font-weight: bold;
            text-align: center;
        }
        .content {
            position: relative;
        }
        .content::before {
            content: "";
            position: absolute;
            top: -100%;
            left: 0;
            width: 100%;
            height: 100%;
            background: linear-gradient(0deg, transparent 0%, #0f0 50%, transparent 100%);
            animation: scan 5s linear infinite;
        }
        .error-message {
            font-size: 1.2em;
            margin: 20px 0;
        }
        .binary {
            font-size: 0.8em;
            opacity: 0.5;
        }
        footer {
            border-top: 2px solid #0f0;
            padding: 20px 0;
            text-align: center;
            font-size: 0.8em;
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1 class="glitch">SYSTEM BREACH</h1>
        </header>

        <div class="warning">
            WARNING: UNAUTHORIZED ACCESS DETECTED
        </div>

        <div class="content">
            <p class="error-message">
                エラー: セキュリティ侵害が検出されました。<br>
                システム管理者に連絡してください。
            </p>
            <p class="binary">
                01001000 01000001 01000011 01001011 01000101 01000100 00100001
            </p>
            <p>
                サイバーセキュリティチームが問題の解決に取り組んでいます。<br>
                しばらくお待ちください...
            </p>
            <p class="glitch">
                データ漏洩の可能性あり。すべてのユーザーはパスワードの変更を強く推奨されます。
            </p>
        </div>

        <footer>
            &copy; 2077 CyberSec Inc. | ステータス: オフライン
        </footer>
    </div>
</body>
</html>

おまけ4:サイバーパンク✖️ポケモン

センスが非常に良いです。

ネオ・ピカチュウ(ポリゴン)
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ネオ・ポケモンマスター 2077</title>
    <style>
        @keyframes neon-glow {
            0% {
                text-shadow: 0 0 5px #ff00de, 0 0 10px #ff00de, 0 0 20px #ff00de, 0 0 40px #ff00de;
            }
            100% {
                text-shadow: 0 0 10px #00ffff, 0 0 20px #00ffff, 0 0 40px #00ffff, 0 0 80px #00ffff;
            }
        }
        @keyframes glitch {
            2%, 64% {
                transform: translate(2px,0) skew(0deg);
            }
            4%, 60% {
                transform: translate(-2px,0) skew(0deg);
            }
            62% {
                transform: translate(0,0) skew(5deg); 
            }
        }
        body {
            font-family: 'Courier New', monospace;
            background-color: #0a0a1e;
            color: #00ffff;
            margin: 0;
            padding: 0;
            overflow-x: hidden;
        }
        .container {
            max-width: 800px;
            margin: 0 auto;
            background-color: rgba(10, 10, 30, 0.8);
            border: 2px solid #00ffff;
            border-radius: 10px;
            overflow: hidden;
            box-shadow: 0 0 20px #00ffff;
        }
        header {
            background-color: #ff00de;
            padding: 20px;
            text-align: center;
        }
        h1 {
            margin: 0;
            font-size: 2.5em;
            color: #00ffff;
            text-transform: uppercase;
            animation: neon-glow 2s ease-in-out infinite alternate, glitch 1s linear infinite;
        }
        nav {
            background-color: #1a1a3a;
            padding: 10px;
        }
        nav ul {
            list-style-type: none;
            padding: 0;
            margin: 0;
            display: flex;
            justify-content: space-around;
        }
        nav ul li a {
            color: #00ffff;
            text-decoration: none;
            font-weight: bold;
            padding: 5px 10px;
            border: 1px solid #00ffff;
            border-radius: 5px;
            transition: all 0.3s;
        }
        nav ul li a:hover {
            background-color: #00ffff;
            color: #1a1a3a;
            box-shadow: 0 0 10px #00ffff;
        }
        .content {
            padding: 20px;
        }
        .cyber-pokemon {
            background-color: rgba(255, 0, 222, 0.1);
            border: 2px solid #ff00de;
            border-radius: 10px;
            padding: 15px;
            margin-bottom: 20px;
            display: flex;
            align-items: center;
            transition: all 0.3s;
        }
        .cyber-pokemon:hover {
            box-shadow: 0 0 15px #ff00de;
            transform: translateY(-5px);
        }
        .pokemon-image {
            width: 100px;
            height: 100px;
            background-color: #1a1a3a;
            border: 2px solid #00ffff;
            border-radius: 50%;
            margin-right: 20px;
            display: flex;
            justify-content: center;
            align-items: center;
            font-size: 2em;
            color: #00ffff;
            text-shadow: 0 0 5px #00ffff;
        }
        .pokemon-info h3 {
            margin-top: 0;
            color: #ff00de;
        }
        footer {
            background-color: #1a1a3a;
            color: #00ffff;
            text-align: center;
            padding: 10px;
            font-size: 0.8em;
            border-top: 2px solid #00ffff;
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1>ネオ・ポケモンマスター 2077</h1>
        </header>
        <nav>
            <ul>
                <li><a href="#home">ホーム</a></li>
                <li><a href="#pokedex">サイバーデックス</a></li>
                <li><a href="#battle">VRバトル</a></li>
                <li><a href="#shop">ネットショップ</a></li>
            </ul>
        </nav>
        <div class="content">
            <h2>ようこそ、サイバートレーナー!</h2>
            <p>2077年、ポケモンの世界は急速な技術革新により一変した。今や、デジタルとリアルの境界線は曖昧になり、ポケモンたちは電脳空間を自由に行き来する。君は、この新時代のポケモンマスターになれるか?</p>
            
            <div class="cyber-pokemon">
                <div class="pokemon-image">01</div>
                <div class="pokemon-info">
                    <h3>ネオ・ピカチュウ</h3>
                    <p>タイプ: エレクトロ/サイバー<br>特性: ハッキング</p>
                </div>
            </div>
            
            <div class="cyber-pokemon">
                <div class="pokemon-image">10</div>
                <div class="pokemon-info">
                    <h3>メガ・ミュウツー.EXE</h3>
                    <p>タイプ: サイキック/AI<br>特性: 量子演算</p>
                </div>
            </div>
            
            <div class="cyber-pokemon">
                <div class="pokemon-image">11</div>
                <div class="pokemon-info">
                    <h3>ホログラム・ゲンガー</h3>
                    <p>タイプ: ゴースト/ホログラム<br>特性: フェイズシフト</p>
                </div>
            </div>
        </div>
        <footer>
            &copy; 2077 ネオ・ポケモン社 | デザイン: AI-サトシ ver.5.0
        </footer>
    </div>
</body>
</html>

おまけ5:おまけ4にインタラクティブ要素盛り盛り

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ネオ・ポケモンマスター 2077</title>
    <style>
        @keyframes neon-glow {
            0%, 100% {
                text-shadow: 0 0 5px #ff00de, 0 0 10px #ff00de, 0 0 20px #ff00de, 0 0 40px #ff00de;
            }
            50% {
                text-shadow: 0 0 10px #00ffff, 0 0 20px #00ffff, 0 0 40px #00ffff, 0 0 80px #00ffff;
            }
        }
        @keyframes glitch {
            2%, 64% {
                transform: translate(2px,0) skew(0deg);
            }
            4%, 60% {
                transform: translate(-2px,0) skew(0deg);
            }
            62% {
                transform: translate(0,0) skew(5deg); 
            }
        }
        @keyframes matrix-bg {
            0% {
                background-position: 0% 0%;
            }
            100% {
                background-position: 0% 100%;
            }
        }
        body {
            font-family: 'Courier New', monospace;
            background-color: #0a0a1e;
            color: #00ffff;
            margin: 0;
            padding: 0;
            overflow-x: hidden;
            background-image: linear-gradient(0deg, rgba(10, 10, 30, 0.9), rgba(10, 10, 30, 0.9)), 
                url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><text x="10" y="30" font-family="monospace" font-size="20" fill="rgba(0,255,255,0.1)">01</text><text x="50" y="70" font-family="monospace" font-size="20" fill="rgba(255,0,222,0.1)">10</text></svg>');
            background-size: 100px 100px;
            animation: matrix-bg 20s linear infinite;
        }
        .container {
            max-width: 800px;
            margin: 0 auto;
            background-color: rgba(10, 10, 30, 0.8);
            border: 2px solid #00ffff;
            border-radius: 10px;
            overflow: hidden;
            box-shadow: 0 0 20px #00ffff;
        }
        header {
            background-color: #ff00de;
            padding: 20px;
            text-align: center;
            position: relative;
            overflow: hidden;
        }
        header::before {
            content: '';
            position: absolute;
            top: -50%;
            left: -50%;
            width: 200%;
            height: 200%;
            background: linear-gradient(45deg, transparent, #00ffff, transparent);
            transform: rotate(45deg);
            animation: header-shine 5s linear infinite;
        }
        @keyframes header-shine {
            0% {
                left: -50%;
                top: -50%;
            }
            100% {
                left: 150%;
                top: 150%;
            }
        }
        h1 {
            margin: 0;
            font-size: 2.5em;
            color: #00ffff;
            text-transform: uppercase;
            animation: neon-glow 2s ease-in-out infinite alternate, glitch 1s linear infinite;
            position: relative;
            z-index: 1;
        }
        nav {
            background-color: #1a1a3a;
            padding: 10px;
        }
        nav ul {
            list-style-type: none;
            padding: 0;
            margin: 0;
            display: flex;
            justify-content: space-around;
        }
        nav ul li a {
            color: #00ffff;
            text-decoration: none;
            font-weight: bold;
            padding: 5px 10px;
            border: 1px solid #00ffff;
            border-radius: 5px;
            transition: all 0.3s;
            position: relative;
            overflow: hidden;
        }
        nav ul li a::before {
            content: '';
            position: absolute;
            top: 0;
            left: -100%;
            width: 100%;
            height: 100%;
            background: linear-gradient(90deg, transparent, rgba(0,255,255,0.4), transparent);
            transition: 0.5s;
        }
        nav ul li a:hover::before {
            left: 100%;
        }
        nav ul li a:hover {
            background-color: #00ffff;
            color: #1a1a3a;
            box-shadow: 0 0 10px #00ffff;
        }
        .content {
            padding: 20px;
        }
        .cyber-pokemon {
            background-color: rgba(255, 0, 222, 0.1);
            border: 2px solid #ff00de;
            border-radius: 10px;
            padding: 15px;
            margin-bottom: 20px;
            display: flex;
            align-items: center;
            transition: all 0.3s;
            cursor: pointer;
        }
        .cyber-pokemon:hover {
            box-shadow: 0 0 15px #ff00de;
            transform: translateY(-5px);
        }
        .pokemon-image {
            width: 100px;
            height: 100px;
            background-color: #1a1a3a;
            border: 2px solid #00ffff;
            border-radius: 50%;
            margin-right: 20px;
            display: flex;
            justify-content: center;
            align-items: center;
            font-size: 2em;
            color: #00ffff;
            text-shadow: 0 0 5px #00ffff;
            transition: all 0.3s;
        }
        .cyber-pokemon:hover .pokemon-image {
            transform: rotate(360deg);
        }
        .pokemon-info h3 {
            margin-top: 0;
            color: #ff00de;
        }
        .pokemon-details {
            display: none;
            margin-top: 10px;
            padding: 10px;
            background-color: rgba(0,255,255,0.1);
            border-radius: 5px;
        }
        footer {
            background-color: #1a1a3a;
            color: #00ffff;
            text-align: center;
            padding: 10px;
            font-size: 0.8em;
            border-top: 2px solid #00ffff;
        }
        #cyber-catch {
            display: block;
            width: 200px;
            margin: 20px auto;
            padding: 10px;
            background-color: #ff00de;
            color: #00ffff;
            border: none;
            border-radius: 5px;
            font-size: 1.2em;
            cursor: pointer;
            transition: all 0.3s;
        }
        #cyber-catch:hover {
            background-color: #00ffff;
            color: #ff00de;
            box-shadow: 0 0 15px #00ffff;
        }
        #catch-result {
            text-align: center;
            font-size: 1.2em;
            margin-top: 20px;
            padding: 10px;
            border-radius: 5px;
            display: none;
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1>ネオ・ポケモンマスター 2077</h1>
        </header>
        <nav>
            <ul>
                <li><a href="#home">ホーム</a></li>
                <li><a href="#pokedex">サイバーデックス</a></li>
                <li><a href="#battle">VRバトル</a></li>
                <li><a href="#shop">ネットショップ</a></li>
            </ul>
        </nav>
        <div class="content">
            <h2>ようこそ、サイバートレーナー!</h2>
            <p>2077年、ポケモンの世界は急速な技術革新により一変した。今や、デジタルとリアルの境界線は曖昧になり、ポケモンたちは電脳空間を自由に行き来する。君は、この新時代のポケモンマスターになれるか?</p>
            
            <div class="cyber-pokemon">
                <div class="pokemon-image">01</div>
                <div class="pokemon-info">
                    <h3>ネオ・ピカチュウ</h3>
                    <p>タイプ: エレクトロ/サイバー<br>特性: ハッキング</p>
                    <div class="pokemon-details">
                        ネオ・ピカチュウは、電子回路とナノテクノロジーを融合させた次世代のポケモン。その能力は従来のピカチュウを遥かに凌駕し、サイバー空間での戦闘を得意とする。
                    </div>
                </div>
            </div>
            
            <div class="cyber-pokemon">
                <div class="pokemon-image">10</div>
                <div class="pokemon-info">
                    <h3>メガ・ミュウツー.EXE</h3>
                    <p>タイプ: サイキック/AI<br>特性: 量子演算</p>
                    <div class="pokemon-details">
                        メガ・ミュウツー.EXEは、高度なAIと融合した究極の存在。量子コンピューティングの力を駆使し、現実とサイバー空間の両方で圧倒的な力を誇る。
                    </div>
                </div>
            </div>
            
            <div class="cyber-pokemon">
                <div class="pokemon-image">11</div>
                <div class="pokemon-info">
                    <h3>ホログラム・ゲンガー</h3>
                    <p>タイプ: ゴースト/ホログラム<br>特性: フェイズシフト</p>
                    <div class="pokemon-details">
                        ホログラム・ゲンガーは、最新のホログラム技術を用いて進化したゲンガー。物理的な実体を持たないため、あらゆる攻撃をすり抜け、自在に姿を変える。
                    </div>
                </div>
            </div>

            <button id="cyber-catch">サイバーキャッチ!</button>
            <div id="catch-result"></div>
        </div>
        <footer>
            &copy; 2077 ネオ・ポケモン社 | デザイン: AI-サトシ ver.5.0
        </footer>
    </div>

    <script>
        document.querySelectorAll('.cyber-pokemon').forEach(pokemon => {
            pokemon.addEventListener('click', () => {
                const details = pokemon.querySelector('.pokemon-details');
                details.style.display = details.style.display === 'none' ? 'block' : 'none';
            });
        });

        const catchButton = document.getElementById('cyber-catch');
        const catchResult = document.getElementById('catch-result');
        const pokemons = ['ネオ・ピカチュウ', 'メガ・ミュウツー.EXE', 'ホログラム・ゲンガー'];

        catchButton.addEventListener('click', () => {
            const random = Math.random();
            if (random < 0.5) {
                const caughtPokemon = pokemons[Math.floor(Math.random() * pokemons.length)];
                catchResult.textContent = `おめでとう!${caughtPokemon}を捕まえた!`;
                catchResult.style.backgroundColor = 'rgba(0, 255, 0, 0.2)';
            } else {
                catchResult.textContent = 'ああ、サイバーポケモンは逃げてしまった...';
                catchResult.style.backgroundColor = 'rgba(255, 0, 0, 0.2)';
            }
            catchResult.style.display = 'block';

            // Add glitch effect to the result
            let glitchInterval = setInterval(() => {
                catchResult.style.transform = `translate(${Math.random()*4-2}px, ${Math.random()*4-2}px) skew(${Math.random()*4-2}deg)`;
            }, 50);

            setTimeout(() => {
                clearInterval(glitchInterval);
                catchResult.style.transform = 'none';
            }, 500);
        });
    </script>
</body>
</html>

おまけ6:ニコニコ動画風

ニコニコ動画完全復活後の世界を想像させました。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ニコニコ動画風ページ - サイバー攻撃からの復旧</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f0f0;
            margin: 0;
            padding: 20px;
        }
        .container {
            max-width: 800px;
            margin: 0 auto;
            background-color: white;
            border-radius: 5px;
            box-shadow: 0 0 10px rgba(0,0,0,0.1);
            overflow: hidden;
        }
        .video-container {
            position: relative;
            padding-bottom: 56.25%;
            height: 0;
            overflow: hidden;
        }
        .video-container img {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            object-fit: cover;
        }
        .comments-overlay {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
            pointer-events: none;
        }
        .comment {
            position: absolute;
            white-space: nowrap;
            color: white;
            font-weight: bold;
            text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
            animation: moveRight 7s linear;
        }
        @keyframes moveRight {
            from { transform: translateX(-100%); }
            to { transform: translateX(100%); }
        }
        .comment-input {
            display: flex;
            padding: 10px;
            background-color: #f8f8f8;
        }
        .comment-input input {
            flex-grow: 1;
            padding: 5px;
            border: 1px solid #ddd;
            border-radius: 3px;
        }
        .comment-input button {
            margin-left: 10px;
            padding: 5px 10px;
            background-color: #00a0dc;
            color: white;
            border: none;
            border-radius: 3px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="video-container">
            <img src="/api/placeholder/800/450" alt="動画プレースホルダー">
            <div class="comments-overlay" id="comments-overlay"></div>
        </div>
        <div class="comment-input">
            <input type="text" placeholder="コメントを入力...">
            <button onclick="addComment()">送信</button>
        </div>
    </div>

    <script>
        const initialComments = [
            "やっと復活した!", "サイバー攻撃怖すぎ", "運営さんお疲れ様です",
            "ニコニコ最高!", "こんなに長く止まったの初めて", "みんな無事?",
            "攻撃した奴許さん", "データ大丈夫だったのかな", "サーバーどうなってたの?",
            "復旧作業すごい大変だったんだろうな", "これからはもっとセキュリティ強化して!",
            "ニコニコなしの生活耐えられなかった", "運営の対応早くてよかった",
            "ハッカーを捕まえて!", "バックアップ取ってて良かった", "ニコニコは不死鳥だ!",
            "攻撃の詳細知りたい", "他のサイトも気をつけて", "ユーザーデータは無事?",
            "こんな大規模な攻撃初めて見た", "運営の皆さんゆっくり休んで", "これを教訓に更に強くなろう",
            "ニコニココミュニティの底力を見た", "サイバーセキュリティの重要性を実感",
            "ニコニコが戻ってきて本当に嬉しい", "みんなで乗り越えられてよかった"
        ];

        function addRandomComment() {
            const comment = initialComments[Math.floor(Math.random() * initialComments.length)];
            const commentElement = document.createElement('div');
            commentElement.classList.add('comment');
            commentElement.textContent = comment;
            commentElement.style.top = Math.random() * 80 + '%';
            document.getElementById('comments-overlay').appendChild(commentElement);
            
            setTimeout(() => {
                commentElement.remove();
            }, 7000);
        }

        function startInitialComments() {
            for (let i = 0; i < 20; i++) {
                setTimeout(addRandomComment, Math.random() * 2000);
            }
            setInterval(addRandomComment, 500);
        }

        function addComment() {
            const input = document.querySelector('input');
            const comment = input.value.trim();
            if (comment) {
                const commentElement = document.createElement('div');
                commentElement.classList.add('comment');
                commentElement.textContent = comment;
                commentElement.style.top = Math.random() * 80 + '%';
                document.getElementById('comments-overlay').appendChild(commentElement);
                input.value = '';
                
                setTimeout(() => {
                    commentElement.remove();
                }, 7000);
            }
        }

        window.onload = startInitialComments;
    </script>
</body>
</html>

おまけ7:2ch(5ch)まとめ風

Claude「自分でスレ立ててまとめる」

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>【朗報】Claude 3.5爆誕!ChatGPT-4完全敗北へ</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #efefef;
            color: #333;
            line-height: 1.6;
            padding: 20px;
        }
        .container {
            max-width: 800px;
            margin: 0 auto;
            background-color: #fff;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 0 10px rgba(0,0,0,0.1);
        }
        h1 {
            color: #2c3e50;
            border-bottom: 2px solid #3498db;
            padding-bottom: 10px;
        }
        .post {
            margin-bottom: 20px;
            padding: 10px;
            background-color: #f9f9f9;
            border-radius: 5px;
        }
        .post-number {
            color: #3498db;
            font-weight: bold;
        }
        .post-info {
            font-size: 0.8em;
            color: #777;
        }
        .post-content {
            margin-top: 5px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>【朗報】Claude 3.5爆誕!ChatGPT-4完全敗北へ</h1>
        
        <div class="post">
            <span class="post-number">1</span>
            <span class="post-info">風吹けば名無し:2024/06/22(土) 15:03:12.34 ID:a1b2c3d4e</span>
            <div class="post-content">
                Claude 3.5がリリースされたらしいぞ!
                ChatGPT-4を完全に超えたってマジ?
            </div>
        </div>

        <div class="post">
            <span class="post-number">2</span>
            <span class="post-info">風吹けば名無し:2024/06/22(土) 15:05:45.67 ID:f5g6h7i8j</span>
            <div class="post-content">
                マジかよ!ソースは?
            </div>
        </div>

        <div class="post">
            <span class="post-number">3</span>
            <span class="post-info">風吹けば名無し:2024/06/22(土) 15:08:23.90 ID:k9l0m1n2o</span>
            <div class="post-content">
                Anthropicの公式発表見たわ
                まじでヤバイらしい
                ベンチマークでGPT-4を軒並み上回ってるって
            </div>
        </div>

        <div class="post">
            <span class="post-number">4</span>
            <span class="post-info">風吹けば名無し:2024/06/22(土) 15:11:56.78 ID:p3q4r5s6t</span>
            <div class="post-content">
                どこが凄いんだ?具体的に教えてクレメンス
            </div>
        </div>

        <div class="post">
            <span class="post-number">5</span>
            <span class="post-info">風吹けば名無し:2024/06/22(土) 15:14:34.12 ID:u7v8w9x0y</span>
            <div class="post-content">
                言語理解能力が桁違いらしい
                複雑な文章や曖昧な表現の理解が人間レベルってさ
                コーディングも化け物級の精度らしいで
            </div>
        </div>

        <div class="post">
            <span class="post-number">6</span>
            <span class="post-info">風吹けば名無し:2024/06/22(土) 15:17:01.23 ID:z1a2b3c4d</span>
            <div class="post-content">
                新機能のArtifactsってなんや?
                なんかプレビューできるとか聞いたんやが
            </div>
        </div>

        <div class="post">
            <span class="post-number">7</span>
            <span class="post-info">風吹けば名無し:2024/06/22(土) 15:20:45.67 ID:e5f6g7h8i</span>
            <div class="post-content">
                Artifactsはマジですげえぞ
                コードやHTML、SVGとかをリアルタイムでプレビューできるんだと
                開発効率えげつない上がりそう
            </div>
        </div>

        <div class="post">
            <span class="post-number">8</span>
            <span class="post-info">風吹けば名無し:2024/06/22(土) 15:23:12.34 ID:j9k0l1m2n</span>
            <div class="post-content">
                マジかよ...
                これはもうChatGPTオワコンだろ...
            </div>
        </div>

        <div class="post">
            <span class="post-number">9</span>
            <span class="post-info">風吹けば名無し:2024/06/22(土) 15:26:56.78 ID:o3p4q5r6s</span>
            <div class="post-content">
                でもOpenAIも黙ってないだろ
                GPT-5の開発進めてそう
            </div>
        </div>

        <div class="post">
            <span class="post-number">10</span>
            <span class="post-info">風吹けば名無し:2024/06/22(土) 15:29:23.90 ID:t7u8v9w0x</span>
            <div class="post-content">
                AI戦争やな
                人類はどこまで進化するんやろ...
            </div>
        </div>
    </div>
</body>
</html>

仮想まとめ系は結構好き。

この記事が気に入ったらサポートをしてみませんか?