AIにスクリプトを書かせてみたら…
戯れにAIのGoogle Geminiに動かないCGIを最新の規格で書き直してもらったら、なんとあっさり一発で決められてしまった。
一発と言っても厳密にはPerlのパスが異なり通らなかった。他、二か所日本語が文字化けした箇所があったくらい。人工無能として問題なく稼働するという点では完璧だと思う。
追加で補正してもらった点は次の3つ。
一秒かからず最新の正しいコードを目の前に出してくる。更に人工無能に関する様々な機能、例えば時刻に合わせたあいさつやニュースなどの話題を発言させる、なんてことを提案してくる。なんてことだなんてことだ…。動くようになって嬉しいはずが悔しい。敗北感。惨敗。脱力するようななんとも言えない気分。それはたぶん自分の中に〝AIなんて〟という多少の蔑みがあるからに他ならない。
ChatGPTに同じことをさせたら何度繰り返してもエラーだらけのものしか返してこなかった。
Google Geminiによる「人工無能少女まりちゃん」
※まりちゃんは人工無能高麗川金子に変更(2026年1月13日)
なんてことだ!
一発と言っても厳密にはPerlのパスが異なり通らなかった。他、二か所日本語が文字化けした箇所があったくらい。人工無能として問題なく稼働するという点では完璧だと思う。
追加で補正してもらった点は次の3つ。
- リロードで2重送信させない
- 名前入力はcookieを使い一定期間保持
- スマホ対応表示
一秒かからず最新の正しいコードを目の前に出してくる。更に人工無能に関する様々な機能、例えば時刻に合わせたあいさつやニュースなどの話題を発言させる、なんてことを提案してくる。なんてことだなんてことだ…。動くようになって嬉しいはずが悔しい。敗北感。惨敗。脱力するようななんとも言えない気分。それはたぶん自分の中に〝AIなんて〟という多少の蔑みがあるからに他ならない。
ChatGPTに同じことをさせたら何度繰り返してもエラーだらけのものしか返してこなかった。
Name "*****" used only once:のこと
入れて良かったApacheとPerl
人工無能CGIを動かしたい一心で入れたApacheとPerl。これが大正解だった。
・Perlを使えばどこにエラーがあるか自分で確かめることができる。
・エラーログから何が起こったか確認できる
・FTPのアップロード作業が省略される
・パーミッションの設定も省略
色々恩恵を受けている。特にCGIのエラーや注意を調べられるのが助かっている。エラーログの内容を把握することはまだ到底難しいけれど、そこをヒントに唸ることはできるようになった。以前に比べたら雲泥の差である。
ちなみに動かない人工無能はsyntax okの表示なのでどこがいけないのか解らないでいる。そんなわけで動かないCGIの原因究明と自作することを平行して学んでいるという顛末。
〈人工無能が動いていたレンタルサーバ〉ビッグローブ個人ホームページサービス
サーバ仕様
〈人工無能が動かなくなったレンタルサーバ〉ロリポップ
サーバ仕様
※ロリポップでの不具合とローカルのそれは同様


Syntax okなのに動かないこの状況は、例えば〝画像Aを表示せよ〟というソースが実は〝画像Bを表示せよ〟という書き方になっていて文法にエラーは無いけれど目的を果たせていない…というようなことが起きてるのでは。などと考えている。素人考えだが。
・Perlを使えばどこにエラーがあるか自分で確かめることができる。
・エラーログから何が起こったか確認できる
・FTPのアップロード作業が省略される
・パーミッションの設定も省略
色々恩恵を受けている。特にCGIのエラーや注意を調べられるのが助かっている。エラーログの内容を把握することはまだ到底難しいけれど、そこをヒントに唸ることはできるようになった。以前に比べたら雲泥の差である。
ちなみに動かない人工無能はsyntax okの表示なのでどこがいけないのか解らないでいる。そんなわけで動かないCGIの原因究明と自作することを平行して学んでいるという顛末。
〈人工無能が動いていたレンタルサーバ〉ビッグローブ個人ホームページサービス
サーバ仕様
〈人工無能が動かなくなったレンタルサーバ〉ロリポップ
サーバ仕様
※ロリポップでの不具合とローカルのそれは同様


Syntax okなのに動かないこの状況は、例えば〝画像Aを表示せよ〟というソースが実は〝画像Bを表示せよ〟という書き方になっていて文法にエラーは無いけれど目的を果たせていない…というようなことが起きてるのでは。などと考えている。素人考えだが。
動かない人工無能
「CGI RESCUE」さんの「対話型インテリジェント知識ベース簡易システム」いわゆる人工無能CGIが以前は動いていたのにロリポップに引っ越してから動かなくなっている。名前を入力してボタンを押しても発言の表示に切り替わらないのだ。その他にページ上部に〝nickquest1 〟という謎のテキストが表示される。これがなんなのか。最初はHTMLの表示が失敗してソースが漏れているのだと安直に考えていた。でもたぶん違うような気がしてきた。

↑の記述を頑張って読むと、〝CGIが利用するデータファイルのquest.datやnick.datが開けなければ、それぞれnickやquestや1を表示せよ〟と書いてあるように見える。もしそうであれば、CGIに問題があるのでなくデータファイルに問題が発生しているのではないか。と思ってデータファイルの文字コードやパーミッションを確認変更してみたが特に変わりなし。CGI本体をShift-jisからUTF-8に変更したのでそこも揃えてみたが効果なし。
なんだろうなあ。きっとここが直ればうまくいくのではないかな。
【追記】

ここを読むと$nn(チャット参加者が入力した名前)が空白なら「名前を書いて押してください」ボタンを表示せよ、そうでなければ「発言」ボタンを表示せよとなっている。名前を参照するデータファイルはnick.datで、どうやらCGIはそれを開けなくて画面上にnickの文字をprintしている…という状況なのではないか、もしかして。
【追記】ファイルのopenやcloseの説明と実例を調べるとファイル名は拡張子まで記述しシングルコーテーションではくダブルコーテーションで囲うようだ。前述のnickとquestに拡張子.datを追加しダブルコーテーションに書き直したけれど変化無し。念のためにキャッシュもクリアしたが変化無し。文法チェックはSintax okのまま。

↑の記述を頑張って読むと、〝CGIが利用するデータファイルのquest.datやnick.datが開けなければ、それぞれnickやquestや1を表示せよ〟と書いてあるように見える。もしそうであれば、CGIに問題があるのでなくデータファイルに問題が発生しているのではないか。と思ってデータファイルの文字コードやパーミッションを確認変更してみたが特に変わりなし。CGI本体をShift-jisからUTF-8に変更したのでそこも揃えてみたが効果なし。
なんだろうなあ。きっとここが直ればうまくいくのではないかな。
【追記】

ここを読むと$nn(チャット参加者が入力した名前)が空白なら「名前を書いて押してください」ボタンを表示せよ、そうでなければ「発言」ボタンを表示せよとなっている。名前を参照するデータファイルはnick.datで、どうやらCGIはそれを開けなくて画面上にnickの文字をprintしている…という状況なのではないか、もしかして。
【追記】ファイルのopenやcloseの説明と実例を調べるとファイル名は拡張子まで記述しシングルコーテーションではくダブルコーテーションで囲うようだ。前述のnickとquestに拡張子.datを追加しダブルコーテーションに書き直したけれど変化無し。念のためにキャッシュもクリアしたが変化無し。文法チェックはSintax okのまま。
Shift-jisのCGIをUTF-8に置き換える
「旧CGIプログラム(SJIS)をUTF8へ変更する方法」の中の〝Content-type〟についての説明を参考にしたら「故障中の人工無能」の文字化けが直った。この人工無能はShift-jisで書かれていた。理由もなく何となくUtF-8に変更してみたくて四苦八苦していた。
変更前 print "Content-type: text/html\n\n";
変更後 print "Content-type: text/html; charset=utf-8\n\n";
各ファイルの文字コードと改行を確認したりShift-jisの箇所を全てUTF-8に変えるだけでは駄目だったのだ。「charset=utf-8」を追加するのが正解だった。
これで懸念が一つクリアできた。
変更前 print "Content-type: text/html\n\n";
変更後 print "Content-type: text/html; charset=utf-8\n\n";
各ファイルの文字コードと改行を確認したりShift-jisの箇所を全てUTF-8に変えるだけでは駄目だったのだ。「charset=utf-8」を追加するのが正解だった。
これで懸念が一つクリアできた。

