生成AIを使って 動かないプログラムコードの原因探しと修正

あなたは 人目の訪問者です。
あなたは 人目の訪問者です。

2026年 9月18日 金曜 曇り 27℃

これは、18日のブログを 1日遅れで 19日に書いています。


朝は、じゃがバターパン、サラダ+スクランブルエッグ、コーヒーでした。


12:00 ~ 13:00 は、アマチュア無線の東京ランチタイムハムグループお昼のミーティングのセンター局をやりました。きょうは、9局参加でした。


お昼は、焼きいも(紅はるか)でした。


夜は、ヤンニョムチキン&旨辛ビビンバでした。


生成AIを使って 動かないプログラムコードの原因探しと修正

ChatGPTやGeminiなどの生成AIを、人間の代わりに話し相手に使っている人が大半と思います。
学校の宿題や、卒論の作成など、学業に活用されている方は、利便性を享受していると思います。
IT企業では、プログラム開発で、コードの生成や、デバッグで間違い探し、コードの書き換えなどに活用して生産性を向上させ、開発費をコストダウンして利益を増やすために活用するなどしています。
そもそも個人の話相手のために大規模なデータセンターでサーバーを動かしているわけではなく、エンタープライズな用途で、提案書の生成や、契約書の不備の発見、業績見通しの予測などで使うためである、生成AIの活用により企業の業績を支える大きな力となることでしょう。

そんなこんなで、最近やっている黒猫サーバー移行作業で、ブログのアクセスカウンターのPHPコードを PHP 7.4バージョンで書いてあるものを、そのままでは、PHP 8.3バージョンでは動かなかったので、Google Geminiで、動かない原因を調べてもらいました。

このプログラムコードをパッと見て、どこが悪くて PHP 7.4バージョンでは動くが、PHP 8.3バージョンバーでは動かないか気づきますか? IT企業のプログラマーでも、10分やそこら考えて、それでも原因を正しく言い当てるには、手間がかかります。
ここで、Google Geminiに、上記の課題をプロンプトで聞くと、3秒で答え(動かない原因)が返ってきます。

原因は PHP 8.0での型キャスト(intval)における挙動変更 です。

count.php ファイルの内容が count=100; のような形式である場合、$fileVal の末尾に改行コードやセミコロンが含まれていると、explode("=", $fileVal) の結果である $countVal[1](例: "100;")に対して PHP 8 系の intval() または数値変換を行った際、末尾の不要な文字の影響を受けたり、PHP 8 の文字列評価ルールによって意図通りに数値に変換されなくなります。

また、$num の型が数値(int)になったことで、後半の strlen($num)substr($num, ...) などの文字列関数に数値(int)をそのまま渡すと、PHP 8.1 / 8.3 では警告(Deprecated)が発生するようになっています。

人間が考えたら、そこそこ時間がかかりそうね

Google Geminiは、動かない原因を 3秒で言い当てただけでなく、PHP 8.3で動くコードにプログラムを書き換えてくれるんですよ。これも 3秒で書き換えが終わり、ちゃんと動くコードを生成してくれます。

主な修正ポイント

  • preg_replace('/[^0-9]/', '', ...) の追加: count=10; から 10; を取り出した際、末尾の ; や改行コードを取り除いてから intval() に渡すように変更しました。これにより $num が正確に +1 されるようになります。
  • ftruncate($file, 0) の追加: 桁数が変わった時などに古いファイルの内容が残って破損するのを防ぐため、書き込み前に内容をクリアします。
  • (string)$num へのキャスト: PHP 8.1 以降、strlen()substr() などの文字列関数に整数(int)を渡すと非推奨警告が出力されるようになったため、明示的に文字列へ変換しています。
  • Undefined Key / Index 警告の回避: PHP 8 では未定義の配列キーやセッション変数($_SESSION['first'])にアクセスした際の警告が厳格化されたため、Null合体演算子(??)等で安全に参照するように調整しています。

Google Geminiすごっ!

これって、プログラム開発の現場では、メチャ便利で、ありがたいわけです。仕事の効率アップ、生産性向上、さらにバグがないコードを書いてくれるので、あとあとテストで時間と余計なコストを減らせます。企業にとっては、大きなメリットです。こういうことなどのための生成AIであり、大きなデータセンターを建設する意義なわけです。

もちろん、Microsoft Copilotでも、同様のことができますし、Visual Codeと連携して快適なプログラム開発ができます。

ぱんぴー
ぱんぴー

「チャッピー
豚肉を使ったきょうの夕食の献立を
5つ考えて」

ダメだこりゃ


ということで、今回は このへんで失礼します。

コメント

  1. それいゆ より:

    nice! です。

  2. 朝と昼に、芋が続きましたね。

  3. kinkin より:

    そこまでやってくれるんだ~~~!!!