株式会社空想科学テクノロジー

AI にコードを書かせる時代の *C++

人が読んで確かめる量を、言語の側で減らします。

バイブコーディングとは

AI にコードを書かせ、人が確かめる作り方です。書く速さは AI が決め、生産性は人が確かめる量で決まります。 AI が書いたコードを人が 1 行ずつ読んでいたら、AI がどれだけ速く書いても意味がありません。

人が確かめることは、2 つ

仕様どおりに動くかは、走らせれば判ります。テストで確かめられ、AI 自身が回せます。

メモリが安全かは、走らせても判りません。通ったテストの外で壊れます。 解放した後に使う、確保した外へ書く、2 つのスレッドが同じ値を同時に触る。 人がコードを 1 行ずつ読んできたのは、このためです。

*C++ が消すのは、2 つ目

*C++ で書いた部分では、検査を全部効かせた姿で、メモリの安全は言語の側が保証します。 危ない書き方は書けず、寿命の問題は起きず、不正な操作はその場で理由を出して止まります(= 安全性)。

*C++ で書いた部分では、人がコードを読んで確かめる理由が無くなります。 残るのは仕様どおりかの確認で、それは走らせて確かめられます。人のレビューは「読む」から「走らせる」に置き換わります。もちろん、耐久性のテストは AI が得意とするところです。

AI の直し方に合う

AI の得意なやり方は、書く → 走らせる → 止まった理由で直す、の繰り返しです。*C++ は、このやり方に 3 つの点で合います。

止まる時に、理由が出る前処理の検査と実行時の検査が、何がどこで違反したかを出します。黙って壊れることがありません。
直しが、その場所で済む制約は 4 つで、違反した行を直せば通ります。設計を組み直す要はありません。
AI は、もう知っている*C++ は C++ です。新しく覚えるのは、制約 4 つと書き方だけです(= トレードオフ)。

Java や C# に足すもの

Java や C# も、メモリの安全を言語の側が持つ言語です。直しがその場所で済む点でも、AI と相性の良い言語です。 *C++ がそこに足すものは 2 つです。

1 つは、囲い忘れた競合を見つけることです。Java と C# にも synchronized や lock があり、正しく囲えば競合は起きません。 ただし、囲い忘れた所を言語は見つけません。気づかないまま値が壊れます。 *C++ で書いた部分では、囲い忘れに遭遇するたびに、その場で止めます。

もう 1 つは、ネイティブで動くので処理が速く、さらに速さが要る所では、いまの C++ のまま書けることです。実行環境を挟まず、要らない管理と検査は外せます。

他の言語との比較

AI に書かせるときに効く 5 つの点で、Java・C#・Rust・いまの C++ と *C++ を比較します。

言語 止まる時に理由が出るか 直しはその場所で済むか メモリの安全 囲い忘れた競合 AI が学習した量
Java(JVM)実行環境が回収する 出ます(例外) 済みます 言語が持ちます 見つけません 多い
C#(.NET)実行環境が回収する 出ます(例外) 済みます 言語が持ちます 見つけません 多い
Rust所有権を型で書く 出ます(コンパイル時) 済まないことがあります(借用の検査は通るまで動かず、直しが組み直しになります) 言語が持ちます コンパイル時に排除します あります
いまの C++確保と解放を自分で書く 出ません(黙って壊れます) 済みます 持ちません 見つけません 最も多い
*C++C++ に制約 4 つ 出ます(前処理と実行時) 済みます(違反した行を直せば通ります) 言語が持ちます(検査を全部効かせた姿) 見つけます(実行時) まだ無い(C++ の知識で書けます)

※ 当社が調べた範囲です(= 2026 年 9 月 13 日時点。公開されている資料に基づきます)。

AI は *C++ を知りません

いまの AI は、*C++ を知りません。学習した文章が、まだ無いためです。 ただし *C++ は C++ ですので、仕様書を文脈に入れれば書けます。そして、前処理のエラーと変換ツールが、教師になります。

まず向いているのは、ネイティブで動く速さが要る所(= ゲーム・モバイル・組み込み)です。 サーバー側のように実行環境の上で足りる所は、Java や C# のままで良い場面が多いと考えています。