PR

世界トップクラスのコーディング性能の「Claude Sonnet 4.5」を試してみる

ブログサイトの立ち上げ方
スポンサーリンク
スポンサーリンク
スポンサーリンク

 

 

世界トップクラスのコーディング性能の「Claude Opus 4.5」

2025年11月24日(アメリカ時間)にリリースされたAnthropicの「Claude Opus 4.5」は、世界トップクラスのコーディング性能を誇っているようです。
実際のGitHubの問題を解決する「SWE-bench」で史上初の80%超え(80.9%)を達成し、GPT-5.1やGemini 3 Proを凌駕しました。
「SWE-bench」が80%超えの82.0%になるのは、parallel test-time compute使用時のようで、基本スコアは77.2%です。

以下の記事では、Googleの「Gemini 3」で画像を生成してみました。

これに続いて「Claude Sonnet 4.5」の能力を試してみます。

「Claude Sonnet 4.5」を使ってみる

「Claude Opus 4.5」は無料で使えないので、ブラウザから無料で使える「Claude Sonnet 4.5」を使ってみました。

にアクセスしてアカウントを作れば、すぐに使えるようになります。

標準偏差の信頼度とサンプル数の関係

長年仕事をしてきた中で、ずっと知りたかったことがあります。

いろいろな測定をするとき、N個のサンプルデータから、標準偏差σを計算して、母集団のバラつき具合を評価することがあります。
その際、

「それなりに信頼できる標準偏差σを計算するには、サンプル数は、いくつ以上必要なんだろう?」

という疑問が起こります。
私は今まで、先輩に言われた、

「最低でも20個、できれば30個以上は必要。」

という教えを信じて、20個~30個の測定データを使ってきました。

この機会に「標準偏差の信頼度とサンプル数の関係」を「Claude Sonnet 4.5」に聞いてみました。

データサンプル数N個のデータでσを計算します。
N数が増えるほどσの信頼度が上がると考えていますが、間違いないですか?

「Claude Sonnet 4.5」の回答は当然

「はい、その理解は正しいです。サンプル数Nが増えるほど、標準偏差σ(母標準偏差の推定値)の信頼度は上がります。」

でした。
さらに、長年知りたかった標準偏差σの誤差の式も教えてくれました。

「標準偏差の推定値自体にもばらつき(標準誤差)があります。
母標準偏差をσ、サンプルサイズをNとすると、標準偏差の推定値の標準誤差は近似的に:
σ / √(2N)
となります。」

上記の標準偏差の誤差を縦軸、N数を横軸にしたグラフを作ってください。

と追加でお願いすると、あっという間にグラフ描画のプログラムコードを生成し、グラフを表示してくれました。

このグラフを描くのに使ったプログラムコードを見せてください。

とお願いしてプログラムコードを見ると、reactベースのプログラムコードでした。
私は、reactのスキルがないので、

単純なHTML/JavaScriptでグラフを描きたいので、Chart.jsを使ったバージョンを作成してください。

とお願いしました。
すると、数十秒後に、

「Chart.jsを使ったバージョンを作成しました!」

と伝えてきて、以下のプログラムコードを提示してくれました。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>標準偏差の標準誤差とサンプル数の関係 (Vue3版)</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/3.3.4/vue.global.prod.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/chart.min.js"></script>
    <style>
        body {
            font-family: 'Arial', sans-serif;
            background-color: #f3f4f6;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            margin: 0;
            padding: 20px;
        }
        .container {
            background-color: white;
            border-radius: 8px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            padding: 30px;
            max-width: 900px;
            width: 100%;
        }
        h1 {
            text-align: center;
            color: #1f2937;
            margin-bottom: 10px;
            font-size: 24px;
        }
        .subtitle {
            text-align: center;
            color: #6b7280;
            margin-bottom: 30px;
            font-size: 14px;
        }
        .info-box {
            margin-top: 20px;
            padding: 15px;
            background-color: #f9fafb;
            border-radius: 6px;
            font-size: 14px;
            color: #4b5563;
        }
        .info-box p {
            margin: 0 0 10px 0;
            font-weight: bold;
        }
        .info-box ul {
            margin: 0;
            padding-left: 20px;
        }
        .info-box li {
            margin: 5px 0;
        }
    </style>
</head>
<body>
    <div id="app">
        <div class="container">
            <h1>{{ title }}</h1>
            <p class="subtitle">{{ subtitle }}</p>
            
            <canvas ref="chartCanvas"></canvas>
            
            <div class="info-box">
                <p>グラフから読み取れること:</p>
                <ul>
                    <li v-for="(info, index) in infoList" :key="index">{{ info }}</li>
                </ul>
            </div>
        </div>
    </div>

    <script>
        const { createApp, ref, onMounted } = Vue;

        createApp({
            setup() {
                const title = ref('標準偏差の標準誤差とサンプル数の関係');
                const subtitle = ref('標準誤差 = σ / √(2N) (σ = 1 の場合)');
                const chartCanvas = ref(null);
                const infoList = ref([
                    'N数が少ない時は標準誤差が大きく、推定精度が低い',
                    'N数が増えるにつれて標準誤差は急速に減少する',
                    'N数が大きくなると、誤差の減少は緩やかになる(√の効果)'
                ]);

                const generateData = () => {
                    const labels = [];
                    const data = [];
                    
                    for (let n = 1; n <= 1000; n += 5) {
                        // σ = 1 と仮定した場合の標準誤差
                        const standardError = 1 / Math.sqrt(2 * n);
                        labels.push(n);
                        data.push(standardError);
                    }
                    
                    return { labels, data };
                };

                const createChart = () => {
                    const { labels, data } = generateData();
                    const ctx = chartCanvas.value.getContext('2d');
                    
                    new Chart(ctx, {
                        type: 'line',
                        data: {
                            labels: labels,
                            datasets: [{
                                label: '標準誤差',
                                data: data,
                                borderColor: '#3b82f6',
                                backgroundColor: 'rgba(59, 130, 246, 0.1)',
                                borderWidth: 2,
                                pointRadius: 0,
                                tension: 0.1
                            }]
                        },
                        options: {
                            responsive: true,
                            maintainAspectRatio: true,
                            aspectRatio: 2,
                            plugins: {
                                legend: {
                                    display: true,
                                    position: 'top'
                                },
                                tooltip: {
                                    callbacks: {
                                        title: function(context) {
                                            return 'N = ' + context[0].label;
                                        },
                                        label: function(context) {
                                            return '標準誤差: ' + context.parsed.y.toFixed(4);
                                        }
                                    }
                                }
                            },
                            scales: {
                                x: {
                                    title: {
                                        display: true,
                                        text: 'サンプル数 (N)',
                                        font: {
                                            size: 14
                                        }
                                    },
                                    ticks: {
                                        maxTicksLimit: 10
                                    }
                                },
                                y: {
                                    title: {
                                        display: true,
                                        text: '標準誤差',
                                        font: {
                                            size: 14
                                        }
                                    },
                                    beginAtZero: true
                                }
                            }
                        }
                    });
                };

                onMounted(() => {
                    createChart();
                });

                return {
                    title,
                    subtitle,
                    chartCanvas,
                    infoList
                };
            }
        }).mount('#app');
    </script>
</body>
</html>

このコードの利点として、以下の説明がありました。

  • 純粋なHTML/JavaScriptで動作(Reactは不要)
  • ブラウザで直接開くだけで動作
  • Chart.jsはCDNから読み込むので、インストール不要

ということで、この投稿にWordPressのブロックエディタで「カスタムHTML」ブロックを配置し、上記のHTMLのコードを貼り付けてみます。

どうでしょう?
以下にグラフが表示されていますよね。

標準偏差の標準誤差とサンプル数の関係 (Vue3版)

{{ title }}

{{ subtitle }}

グラフから読み取れること:

  • {{ info }}

グラフから読み取れることの内容も「Claude Sonnet 4.5」が自動で付けてくれています。
さすがのコーディング性能ですね。

ただし、元々のWordPressのスタイルが崩れるので、bodyと.containerのCSSの一部は、以下のようにコメントアウトしています(グレー部分)。

        body {
            font-family: 'Arial', sans-serif;
            background-color: #f3f4f6;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            margin: 0;
            /*padding: 20px;*/
        }
        .container {
            background-color: white;
            border-radius: 8px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            /*padding: 30px;*/
            /*max-width: 900px;*/
            width: 100%;
        }

日本の人口ピラミッド

次に、以下のプロンプトで日本の人口ピラミッドのグラフを作ってみます。

日本の人口ピラミッドのグラフをJavaScriptで作って欲しい。

  • グラフライブラリーはChart.jsを使う。
  • 5歳刻みで年齢階級を表示する。
  • 0-4歳が一番下に配置され、上に向かって高齢にする。
  • 左側に男性(青色)、右側に女性(ピンク色)を表示する。
  • 男性と女性のバーを同じ高さで揃える。

「Claude Sonnet 4.5」は、日本の人口情報を検索/取得した後、以下のプログラムコードを生成してくれました。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>日本の人口ピラミッド 2024</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/chart.min.js"></script>
    <style>
        body {
            font-family: 'Helvetica Neue', Arial, sans-serif;
            margin: 0;
            padding: 20px;
            background: #f5f5f5;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
        }
        .container {
            background: white;
            border-radius: 12px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
            padding: 30px;
            max-width: 1200px;
            width: 100%;
        }
        h1 {
            text-align: center;
            color: #333;
            margin-bottom: 10px;
            font-size: 28px;
        }
        .subtitle {
            text-align: center;
            color: #666;
            margin-bottom: 30px;
            font-size: 14px;
        }
        #chartContainer {
            position: relative;
            height: 700px;
            margin: 0 auto;
        }
        .source {
            text-align: center;
            color: #999;
            font-size: 12px;
            margin-top: 20px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>日本の人口ピラミッド</h1>
        <div class="subtitle">2024年10月1日現在(総人口:約1億2,380万人)</div>
        <div id="chartContainer">
            <canvas id="pyramidChart"></canvas>
        </div>
        <div class="source">出典:総務省統計局「人口推計」2024年10月1日現在データに基づく</div>
    </div>

    <script>
        // 2024年の日本の人口データ(5歳刻み、単位:万人)
        // 総人口推計に基づく近似値
        // 0歳を下にするため、配列は逆順(高齢→若年)で定義
        const ageGroups = [
            '90歳以上',
            '85-89歳',
            '80-84歳',
            '75-79歳',
            '70-74歳',
            '65-69歳',
            '60-64歳',
            '55-59歳',
            '50-54歳',
            '45-49歳',
            '40-44歳',
            '35-39歳',
            '30-34歳',
            '25-29歳',
            '20-24歳',
            '15-19歳',
            '10-14歳',
            '5-9歳',
            '0-4歳'
        ];

        // 男性人口(左側、負の値で表示)
        const malePopulation = [
            -85,   // 90+
            -161,  // 85-89
            -279,  // 80-84
            -376,  // 75-79
            -442,  // 70-74
            -489,  // 65-69
            -470,  // 60-64
            -388,  // 55-59
            -413,  // 50-54
            -464,  // 45-49
            -426,  // 40-44
            -375,  // 35-39
            -332,  // 30-34
            -315,  // 25-29
            -299,  // 20-24
            -280,  // 15-19
            -257,  // 10-14
            -239,  // 5-9
            -222   // 0-4
        ];

        // 女性人口(右側、正の値で表示)
        const femalePopulation = [
            187,   // 90+
            249,   // 85-89
            345,   // 80-84
            418,   // 75-79
            463,   // 70-74
            495,   // 65-69
            469,   // 60-64
            384,   // 55-59
            408,   // 50-54
            459,   // 45-49
            422,   // 40-44
            369,   // 35-39
            322,   // 30-34
            303,   // 25-29
            285,   // 20-24
            266,   // 15-19
            244,   // 10-14
            227,   // 5-9
            211    // 0-4
        ];

        const ctx = document.getElementById('pyramidChart').getContext('2d');
        
        const pyramidChart = new Chart(ctx, {
            type: 'bar',
            data: {
                labels: ageGroups,
                datasets: [
                    {
                        label: '男性',
                        data: malePopulation,
                        backgroundColor: 'rgba(54, 162, 235, 0.7)',
                        borderColor: 'rgba(54, 162, 235, 1)',
                        borderWidth: 1
                    },
                    {
                        label: '女性',
                        data: femalePopulation,
                        backgroundColor: 'rgba(255, 99, 132, 0.7)',
                        borderColor: 'rgba(255, 99, 132, 1)',
                        borderWidth: 1
                    }
                ]
            },
            options: {
                indexAxis: 'y',
                responsive: true,
                maintainAspectRatio: false,
                plugins: {
                    title: {
                        display: false
                    },
                    legend: {
                        display: true,
                        position: 'top',
                        labels: {
                            font: {
                                size: 14
                            }
                        }
                    },
                    tooltip: {
                        callbacks: {
                            label: function(context) {
                                let label = context.dataset.label || '';
                                if (label) {
                                    label += ': ';
                                }
                                const value = Math.abs(context.parsed.x);
                                label += value.toFixed(0) + '万人';
                                return label;
                            }
                        }
                    }
                },
                scales: {
                    x: {
                        stacked: false,
                        ticks: {
                            callback: function(value) {
                                return Math.abs(value) + '万人';
                            },
                            font: {
                                size: 12
                            }
                        },
                        grid: {
                            color: 'rgba(0, 0, 0, 0.05)'
                        }
                    },
                    y: {
                        stacked: true,
                        position: 'left',
                        ticks: {
                            font: {
                                size: 12
                            }
                        },
                        grid: {
                            display: false
                        }
                    }
                }
            }
        });
    </script>
</body>
</html>

このプログラムコードをWordPressの「カスタムHTML」ブロックに貼り付けてグラフを表示します。

日本の人口ピラミッド 2024

日本の人口ピラミッド

2024年10月1日現在(総人口:約1億2,380万人)
出典:総務省統計局「人口推計」2024年10月1日現在データに基づく

プログラムコードを書くスキルや手間が不要になるだけでなく、必要なデータも探してきてくれるので、自分より賢い「お手伝いさん」に仕事を頼む感じです。

まとめ

世界トップクラスのコーディング性能を誇っている「Claude Sonnet 4.5」を試してみました。
当たり前ですが、私のスキルを圧倒的に超えるコーディング性能でした。

以下の記事で紹介した「ガントチャート」のプログラムコードをデバッグしてもらったところ、いくつかの不具合を指摘して、修正後のプログラムコードを提示してくれました。
早速、以下の記事のプログラムコードも修正後のコードに差し替えました。

前回の「Gemini 3」も、今回紹介した「Claude Sonnet 4.5」も、実際に試して感じたことは、

AIを毛嫌いしているはない。
AIを賢く使いこなす人や組織が、ますます賢くて強くなる。

です。

皆さんも実際に試してみてください。

コメント