AIが出したサンプルコードを貼ったのに動かず、画面を見ながら原因を考えている開発者

AIのサンプルコードが動かない|バージョン違いの切り分け方

「このライブラリで、こういう処理を書くには?」とAIに聞いて、返ってきたサンプルコードをそのまま貼る。

実行すると、いきなりエラー。「そんな関数はありません」「その引数は知りません」。AIに聞き返すと、別の書き方が返ってきて、それもまた動かない。気づけば30分、同じところをぐるぐるしている——そんな夜、ありますよね。

このとき、つい「自分の環境がおかしいのかな」「自分の理解が足りないのかな」と自分を疑いがちです。でも実は、AIのサンプルコードが動かない原因のかなりの部分は、「手元のバージョン」と「AIが想定しているバージョン」がずれていることにあります。あなたの腕の問題ではないことが、けっこう多いんです。

この記事では、動かないサンプルコードを前にしたとき、どこから見ればいいかを順番に整理します。

結論:AIのサンプルコードが動かないときは、次の3ステップで切り分けます。①手元を見る——まず自分の環境で実際に入っているバージョンを確かめる(AIに聞く前に)。②エラーで分ける——「そもそも見つからない」「呼び方が合わない」「動くけど結果が違う」の3つのどれかを見る。③合わせて聞き直す——手元のバージョンと、エラー全文を添えてAIに聞き直し、出てきた書き方は公式ドキュメントの同じバージョンのページで確かめる。

覚え方は 手元を見る → エラーで分ける → 合わせて聞き直す。AIに「動きません」とだけ返すのをやめるのが、いちばんの近道です。

今日は①の「バージョンを1つ確かめる」だけでも大丈夫です。それだけで、AIとのやりとりの往復がぐっと減ります。

何が起きているのか——AIは「いつのバージョンの話か」を言わない

AIのサンプルコードがバージョン違いで動かなくなるのには、いくつか構造的な理由があります。

1つ目は、AIの知識に「止まった時点」があること。学習した時点より後に出たバージョンのことは知りません。逆に、昔のバージョンの書き方もたくさん学んでいるので、新旧の書き方が混ざった答えが出てくることがあります(背景はAIの知識は少し前で止まる|古い情報で最新仕様を扱う注意点で詳しく整理しています)。

2つ目は、AIがバージョンを明示しないこと。人間の書いた技術記事なら「v3系での書き方です」と前置きがあることが多いのですが、AIの答えにはそれがないことがほとんどです。どのバージョン向けのコードか分からないまま、手元に貼っている。ここがずれの入り口です。

3つ目は、こちらもバージョンを伝えていないこと。「このライブラリで〜するには?」という聞き方だと、AIは「どこかのバージョンの、それらしい書き方」で答えるしかありません。質問の側にも、ずれの種があります。

4つ目は、エラーが「バージョン違い」とは教えてくれないこと。エラーメッセージは「この名前は見つからない」とだけ言います。それが「書き間違い」なのか「名前が変わった」なのか「まだ存在しない」なのかは、こちらが見分けるしかありません。だから迷うんです。

裏を返すと、バージョンを先に揃えてしまえば、AIのサンプルコードはかなり頼りになるということでもあります。

具体例——エラーの形で、原因の見当がつく

空っぽの引き出しを開けて探し物が見つからない人、形の合わない差込口にプラグを差そうとしている人、計量カップの目盛りと完成した料理を見比べて首をかしげる人を並べた図
動かないエラーは「見つからない」「合わない」「結果が違う」の3つに分けると、どこを調べればいいか見当がつく

エラーメッセージは言語やライブラリによって表現がちがいますが、だいたい次の3つの形のどれかに入ります。どれに当たるかで、見に行く場所が変わります。

A. 見つからない(名前がない)

このタイプは、関数・クラス・モジュールの名前そのものが、手元のバージョンに存在しないことが多いです。考えられるのは3つ。

  1. 新しいバージョンで追加されたものを、古いバージョンで呼んでいる
  2. 古いバージョンにあったものが、新しいバージョンで改名・移動・削除された
  3. AIがそれらしい名前を作ってしまった(そもそも、どのバージョンにも存在しない)

1と2はバージョンを合わせれば解決します。3だけは別の問題なので、公式ドキュメントで実在を確認するのが早道です(見分け方はAIのハルシネーションの見抜き方|開発現場で気づく型)。

B. 合わない(呼び方が違う)

名前は存在するのに、引数の名前・順番・型・必須かどうかが変わっているパターンです。設定ファイルの項目名や階層が変わった、というのもここに入ります。エラーの行がはっきりしているぶん、実は3つの中ではいちばん直しやすいタイプです。

C. 動くけど結果が違う(エラーが出ない)

いちばん気づきにくいのがこれです。既定値(デフォルト)や戻り値の形がバージョン間で変わっていると、エラーにならずに結果だけずれます。警告が出ていたら、それは大事な手がかりです。読み飛ばさずにメモしておいてください。

影響——「動かない」より、「適当に動いてしまう」ほうが後に響く

動かないコードは、困るけれど、少なくとも気づけます。後から響きやすいのは、こんな形です。

ここは、少し安心していいところでもあります。バージョン違いは、仕組みで減らせる種類の問題です。最初に手元を見て、それを伝える。それだけで、多くのずれは入り口で止まります。

明日からやること(手元を見る・エラーで分ける・合わせて聞き直す)

上から順に、小さく始められます。今日は1だけで十分です。

1. 手元を見る——AIに聞く前に、入っているバージョンを確かめる

まず見るのは、AIではなく自分の環境です。「入れたつもり」のバージョンと、「実際に入っている」バージョンは違うことがあります。

ここで分かったバージョンを、メモ帳に1行書いておきます。次の手順で使います。

2. エラーで分ける——3つのどれに当たるかを見る

エラーメッセージを、上の具体例の A・B・C のどれかに当てはめます。ここで大事なのは、エラーの最後の1行だけでなく、全文をコピーしておくことです。どのファイルの、どの行で止まったかが、後の聞き直しで効いてきます(読み方のコツはAIにビルド・実行エラーの原因を解説させる|検索より速い直し方)。

多くの公式ドキュメントには、ページの上部などにバージョンを切り替える場所があります。検索で開いたページが最新版とは限らないので、手元のバージョンに合わせてから読むのがコツです。

3. 合わせて聞き直す——バージョンとエラー全文を添える

「動きませんでした」の代わりに、こう聞き直してみてください。

先ほどのサンプルコードを実行したところ、下のエラーが出ました。

私の環境のバージョンは次のとおりです。このバージョンで動く書き方に直してください。
・言語/ランタイム:(例:〇〇 x.y)
・ライブラリ:(例:〇〇 x.y.z)

あわせて、次も書いてください。
・このエラーは「名前が存在しない」「呼び方が違う」「その他」のどれだと考えられるか
・修正案がどのバージョン以降/以前を前提にしているか
・確実でない部分は「不明」と書き、推測で埋めないでください

エラー全文:(ここに貼る)

ポイントは、「どのバージョンを前提にしているか」を書かせることです。AIが前提を言葉にすると、こちらは公式ドキュメントのどのページを見に行けばいいかが分かります。前提が手元とずれていれば、その場で気づけます。

さらに確かにしたいときは、手元のバージョンの公式ドキュメントの該当ページを、AIに貼ってしまうのが一番です。記憶で答えさせず、目の前の資料から答えさせる形にすると、ずれはぐっと減ります。

出てきた書き方は、最後にもう一度、公式ドキュメントの同じバージョンのページで実在を確かめてから取り込みます。動いたら、軽く動作確認をして(AI生成コードの動作確認|そのまま使わない最低限の型)、コミットメッセージやメモに「〇〇 x.y 向けの書き方」と1行残しておくと、次にバージョンを上げる人が助かります。

サンプルコードが動かないときのチェックリスト(コピーして使えます)

全部に○が要るわけではありません。気になった行だけ見れば十分です。

① 手元を見る

② エラーで分ける

③ 合わせて聞き直す

この記事のまとめ

AIのサンプルコードが動かないとき、原因はあなたの腕ではなく、手元とAIの想定のバージョンのずれであることが少なくありません。

やることは3つ。①手元を見る——AIに聞く前に、実際に入っているバージョンを確かめる。②エラーで分ける——「見つからない」「合わない」「結果が違う」のどれかを見て、公式ドキュメントを手元のバージョンで開く。③合わせて聞き直す——バージョンとエラー全文を添え、どのバージョン前提の書き方かをAIに言葉にさせる。

この順番にすると、AIとの往復は「当てずっぽうのやり直し」から「条件をそろえた相談」に変わります。

サンプルコードが無事に動き、ほっとした表情で画面から少し身を引いている開発者

サンプルコードが動かない時間は、外から見ると何も進んでいないように見えます。でも、手元のバージョンを確かめて、エラーを分けて、条件をそろえて聞き直す——その一つひとつは、次に同じ場面に出会ったときの自分を確実に楽にしています。

まずは次に「動かない」と思ったとき、AIに聞き返す前に、バージョンを1つ確かめてみてください。それだけで、もう半分は切り分けが済んでいます。

よければ、こちらも

関連用語