AIにスクリプトを書かせてみたら…
戯れにAIのGoogle Geminiに動かないCGIを最新の規格で書き直してもらったら、なんとあっさり一発で決められてしまった。
一発と言っても厳密にはPerlのパスが異なり通らなかった。他、二か所日本語が文字化けした箇所があったくらい。人工無能として問題なく稼働するという点では完璧だと思う。
追加で補正してもらった点は次の3つ。
一秒かからず最新の正しいコードを目の前に出してくる。更に人工無能に関する様々な機能、例えば時刻に合わせたあいさつやニュースなどの話題を発言させる、なんてことを提案してくる。なんてことだなんてことだ…。動くようになって嬉しいはずが悔しい。敗北感。惨敗。脱力するようななんとも言えない気分。それはたぶん自分の中に〝AIなんて〟という多少の蔑みがあるからに他ならない。
ChatGPTに同じことをさせたら何度繰り返してもエラーだらけのものしか返してこなかった。
Google Geminiによる「人工無能少女まりちゃん」
※まりちゃんは人工無能高麗川金子に変更(2026年1月13日)
なんてことだ!
一発と言っても厳密にはPerlのパスが異なり通らなかった。他、二か所日本語が文字化けした箇所があったくらい。人工無能として問題なく稼働するという点では完璧だと思う。
追加で補正してもらった点は次の3つ。
- リロードで2重送信させない
- 名前入力はcookieを使い一定期間保持
- スマホ対応表示
一秒かからず最新の正しいコードを目の前に出してくる。更に人工無能に関する様々な機能、例えば時刻に合わせたあいさつやニュースなどの話題を発言させる、なんてことを提案してくる。なんてことだなんてことだ…。動くようになって嬉しいはずが悔しい。敗北感。惨敗。脱力するようななんとも言えない気分。それはたぶん自分の中に〝AIなんて〟という多少の蔑みがあるからに他ならない。
ChatGPTに同じことをさせたら何度繰り返してもエラーだらけのものしか返してこなかった。
CGI製作者へ質問するべきか
動かないCGIについて作者の方へ助けを求めるべきか。内心、さっさと尋ねてサクッと解決したいのが本音だ。しかし質問をするにはそれなりの準備が要る。まず自分でできることは自分でやる。調べられることは調べる。それでも解らないときに初めて質問を送ることができる、というスタンスに自分は立っている。これは学生の時分に身についたことで、先生に何か質問する場合は十分な下調べを行い論文や著書その他を読み込んだ上で知識を蓄えたところに満を持して初めて質問に至るというもの。
この習慣を無くすことはできない。学問でなくともインターネットの世界でも同じことだと思う。毎日調べものをすると少しずつ理解が深まる。私が人工無能の作者の方に質問することがあるとすればPerlやCGIのことを熟知して、それでも疑問が残った時だと思う。私はPerlやCGIの知識が乏しすぎるので質問をする資格がないのだ。
参考:「偉人ググレカス」について
弱音を吐くとしたら…作者の方のサイトが今年度2026年3月末に閉鎖されてしまうのが辛い。
CGI RESCUE「当サイトは2026年3月末をもちまして終了します!」
この習慣を無くすことはできない。学問でなくともインターネットの世界でも同じことだと思う。毎日調べものをすると少しずつ理解が深まる。私が人工無能の作者の方に質問することがあるとすればPerlやCGIのことを熟知して、それでも疑問が残った時だと思う。私はPerlやCGIの知識が乏しすぎるので質問をする資格がないのだ。
参考:「偉人ググレカス」について
弱音を吐くとしたら…作者の方のサイトが今年度2026年3月末に閉鎖されてしまうのが辛い。
CGI RESCUE「当サイトは2026年3月末をもちまして終了します!」
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」を追加するのが正解だった。
これで懸念が一つクリアできた。
CGIで〝入力して表示する〟ができた
初めてのCGI「(いつか)人工無能(になるかもしれない)BonoBOROT」が少し進歩した。テキストの表示だけから環境変数の表示、そして小さな掲示板をつけた。大変有難いお手本は次の二つのページ。
・CGIその他-とほほのWWW入門
・掲示板をつくる-とほほのWWW入門
このページを見つけて飛びついてそのままコピーして使ってしまったが、本来は初歩から一通り学んだ上での復習や実践として扱うのがセオリーだろう。コピー&ペーストしただけで解らないと悩んでいても上達しない。
・Perl/CGI 300の技-とほほのWWW入門
ここを良く読むこととする。
フォームに入力したテキストをHTML上に表示する、ここが人工無能の第一歩だと思う。お手本にしたソースはその基本となるシンプルな作りで、これがしっかり身につけば目的に近づくのではないか。
・CGIその他-とほほのWWW入門
・掲示板をつくる-とほほのWWW入門
このページを見つけて飛びついてそのままコピーして使ってしまったが、本来は初歩から一通り学んだ上での復習や実践として扱うのがセオリーだろう。コピー&ペーストしただけで解らないと悩んでいても上達しない。
・Perl/CGI 300の技-とほほのWWW入門
ここを良く読むこととする。
フォームに入力したテキストをHTML上に表示する、ここが人工無能の第一歩だと思う。お手本にしたソースはその基本となるシンプルな作りで、これがしっかり身につけば目的に近づくのではないか。
初めて作ったCGIと文字コード
サーバーをロリポップにしたら故障してしまった人工無能の解決策としてイチから自分で作るという無謀なことを始めた。始めたと言ってもまだまだ全然足をつっこむことさえできていない。見様見真似で簡単なHTMLを出力することはできた。
初めての自作CGI「(いつか)人工無能(になるかもしれない)BonoBOROT」
たったこれだけでもやれ文字化けだのやれ500エラーだの大騒ぎである。ダブルクォーテーションの直前にバックスラッシュを入れることをよく忘れる。文字化けの原因やなぜ直せたかがよく分からない。定番のファイル送信時のASCIIモードの確認やファイル保存や改行などいろいろ試すうちに直るのだが、どのタイミングで直ったか把握できていない。よく観察する習慣をつけたい。
文字コードの扱いは本当に分からない。ファイルを開くとき、記述するとき、保存するとき、いつどこでどうなるのかさっぱり見当がつかない。コードの中で文字コードを指定してもその通りにならない。
CGIのコードの貼り付けはCarbonというサービスを利用した。内容はともかくソレっぽくなって嬉しい。このブログにはどうしてもコードを貼り付けられない。コードを張り付ける作法を色々試してみても403エラーになってしまう。
私が人工無能に拘る理由は、やはり昔の個人ホームページに付き物のイメージがあってどうしても設置したい。いま話題のAIとも違うところが面白い。それから、とんでもない身の程知らずだと十分承知の上での話になるが、設置した人工無能のCGIは一つのファイルで動いていてソースもあまり長くない、だから内容を理解すれば自分でも作れるのでは…などと生意気なことを考えている。ソースが短くまとまっているのは技術力による賜物だろうとは思う。その方面のことは疎いがそう思う。それでも何だかゼロから挑戦してみたいのだ。
【文字コードの疑問】UTF-8で保存されたファイルをUTF-8を基本とするエディタでUTF-8として開くときに「このファイルはUTF-8であるがShift-jisに変換できない文字を?として置き換えた」と表示される。さっぱり理解できない。辛い。

【追記】「Vimで文字コードを指定する」 ここを読んで少し知恵がついた。
初めての自作CGI「(いつか)人工無能(になるかもしれない)BonoBOROT」
たったこれだけでもやれ文字化けだのやれ500エラーだの大騒ぎである。ダブルクォーテーションの直前にバックスラッシュを入れることをよく忘れる。文字化けの原因やなぜ直せたかがよく分からない。定番のファイル送信時のASCIIモードの確認やファイル保存や改行などいろいろ試すうちに直るのだが、どのタイミングで直ったか把握できていない。よく観察する習慣をつけたい。
文字コードの扱いは本当に分からない。ファイルを開くとき、記述するとき、保存するとき、いつどこでどうなるのかさっぱり見当がつかない。コードの中で文字コードを指定してもその通りにならない。
私が人工無能に拘る理由は、やはり昔の個人ホームページに付き物のイメージがあってどうしても設置したい。いま話題のAIとも違うところが面白い。それから、とんでもない身の程知らずだと十分承知の上での話になるが、設置した人工無能のCGIは一つのファイルで動いていてソースもあまり長くない、だから内容を理解すれば自分でも作れるのでは…などと生意気なことを考えている。ソースが短くまとまっているのは技術力による賜物だろうとは思う。その方面のことは疎いがそう思う。それでも何だかゼロから挑戦してみたいのだ。
【文字コードの疑問】UTF-8で保存されたファイルをUTF-8を基本とするエディタでUTF-8として開くときに「このファイルはUTF-8であるがShift-jisに変換できない文字を?として置き換えた」と表示される。さっぱり理解できない。辛い。

【追記】「Vimで文字コードを指定する」 ここを読んで少し知恵がついた。
sendmailとGmail
sendmailが使えるかどうか。試しにここにコメントがあったときにメールで通知される設定をした。宛先はGmail。ところがメールが来ない。と思ったら迷惑メールに振り分けられていた。しかもMail Delivery Systemからのメッセージ付き。ここのドメインのsendmailが認証されていないのでエラーだという(英文)。受信できないというのにコメント内容は含まれている。コメントがあったことが判ればそれで用は足りるが、まあ、改善しておく。
このエラーを解決するにはSPFやDKIMの設定が必要と書かれている。難しそう。ドメインのDNS TXTレコードを更新する作業は経験あるが全然理解していないのだ。うーん…。これはやめて他の手段を試すことにした。
sendmail専用のメールアドレスを一つ作ることにした。それをGmailではない他のメールアプリで受信させる。スマホで通知を受け取りたいのでスマホのOutlookにPOP3で追加した。このブログからコメントを投稿。メールが届かない。sendmailの設定に間違いは無い。試しにメールフォームのCGIのcheck.cgiをインストールしてチェックするとパスは通っている。何度やっても届かない。またしても迷惑メールに振り分けられていた。なんだ、ケアレスミスか。迷惑メールから外して再度挑戦。コメント通知メールは届くがOutlookの受信通知が鳴らない。通知の許可はオンなのに鳴らない。Outlookが指定している〝デフォルトの通知音〟という音声ファイルが無くて(?)無音だった。音が鳴らなくても通知ドットくらい出てくれてもいいのにそれも表示されない。難しいなあ。通知音を指定しなおしてやっとコメント投稿のメールをスマホで通知させるという目的を果たせた。
簡単なことのようでいても色々躓いてしまう。
このエラーを解決するにはSPFやDKIMの設定が必要と書かれている。難しそう。ドメインのDNS TXTレコードを更新する作業は経験あるが全然理解していないのだ。うーん…。これはやめて他の手段を試すことにした。
sendmail専用のメールアドレスを一つ作ることにした。それをGmailではない他のメールアプリで受信させる。スマホで通知を受け取りたいのでスマホのOutlookにPOP3で追加した。このブログからコメントを投稿。メールが届かない。sendmailの設定に間違いは無い。試しにメールフォームのCGIのcheck.cgiをインストールしてチェックするとパスは通っている。何度やっても届かない。またしても迷惑メールに振り分けられていた。なんだ、ケアレスミスか。迷惑メールから外して再度挑戦。コメント通知メールは届くがOutlookの受信通知が鳴らない。通知の許可はオンなのに鳴らない。Outlookが指定している〝デフォルトの通知音〟という音声ファイルが無くて(?)無音だった。音が鳴らなくても通知ドットくらい出てくれてもいいのにそれも表示されない。難しいなあ。通知音を指定しなおしてやっとコメント投稿のメールをスマホで通知させるという目的を果たせた。
簡単なことのようでいても色々躓いてしまう。
ホームページとレンタルサーバ
このホームページをつくろうと思った切っ掛けはVDSLの終了に伴うものだった。プロバイダの契約変更のために契約内容を確認していたら個人ホームページ向けのサーバーレンタルオプションを見つけた。無料。無料ならということですぐに簡単なHTMLファイルをつくってアップしてみた。ちゃんと表示される。懐かしい!非常に懐かしい!!これに火がついてHTML手打ちの素朴な昔ながらのページを作りたくてうずうずした。胸がいっぱいになった。ふと、スマホで作れないか気になってFTPアプリやHTMLエディタアプリを検索するとスマホ向けにある。折しも機種変更で画面が大きくなったことだし…ということでスマホでホームページ作成を始めた。というのがそもそも。
慣れ親しんだSNSが不穏な様子もあるし個人ホームページがあっても面白いかもしれない。そこに根を張るのもいいかもしれない。そんな気分でこつこつやることに。内容がとくに思いつかず、とりあえず〝スマホで昔のホームページを再現する〟をコンセプトにした。ここに拍車がかかったのはインターネットアーカイブで昔のヤフージャパンを見て懐かしいホームページを目にしたことだった。

興奮した。やるしかない。テキストを表示して背景に壁紙を設定して中央ぞろえだのテーブルだのやるのが頗る楽しい。拙いながらも個人ホームページの形になった。
ここで再度、ホームページ作成に火が入る。私は手芸用の糸通しを若い頃からコレクションしている。最近はどこの店もだいたい同じ柄なので熱が冷めていた。ところがSNSで糸通しの話題がバズっていたのを目撃。手芸用品メーカーも一役買っている。そんなところから糸通しのページを作ることにした。そんなわけで「ぼのちょの巣穴」と「糸通しの小部屋」の誕生となった。
作っていくうちに欲が出てくる。プロバイダの無料サービスは100MBバイトまでしか借りられない。100GBでなく100メガバイト。すでに8MBを使っている。どこか有料のサーバを借りるか。サーバ借りるならドメインを取るか。どうする?サーバ借りると言っても知識の無い自分には良し悪しもわからない。古巣のロリポップとムームードメインで草鞋を脱ぐことにした。当初は「ドメインずっと無料」の高額プランの広告バナーに釣られたが年々のコストを計算してランクが一番低いコースをお試し替わりに契約した。ドメインは取得費用と更新費用に大きく開きがあって悩んだ。取得費用が数百円で済むのに更新費用が高かったりするのだ。取得費用は安くないが更新費用が控えめな〝.net〟を選んだ。
・ムームードメイン bonocho.net
.net 取得 1,848円
.net 1年更新 1,848円
・サーバ ロリポップ
エコノミープラン(120GB)
37か月 3,564円(1か月96円)
これがここの家賃。ロリポップの価格は今年2026年1月5日から値上げで、決済が4日だったので値上げ前の価格。容量が120GBもあれば御の字。すごい。データベースが使えないプランだけどこれで十分。1か月96円てタダ同然か。ありがたい。
慣れ親しんだSNSが不穏な様子もあるし個人ホームページがあっても面白いかもしれない。そこに根を張るのもいいかもしれない。そんな気分でこつこつやることに。内容がとくに思いつかず、とりあえず〝スマホで昔のホームページを再現する〟をコンセプトにした。ここに拍車がかかったのはインターネットアーカイブで昔のヤフージャパンを見て懐かしいホームページを目にしたことだった。

興奮した。やるしかない。テキストを表示して背景に壁紙を設定して中央ぞろえだのテーブルだのやるのが頗る楽しい。拙いながらも個人ホームページの形になった。
ここで再度、ホームページ作成に火が入る。私は手芸用の糸通しを若い頃からコレクションしている。最近はどこの店もだいたい同じ柄なので熱が冷めていた。ところがSNSで糸通しの話題がバズっていたのを目撃。手芸用品メーカーも一役買っている。そんなところから糸通しのページを作ることにした。そんなわけで「ぼのちょの巣穴」と「糸通しの小部屋」の誕生となった。
作っていくうちに欲が出てくる。プロバイダの無料サービスは100MBバイトまでしか借りられない。100GBでなく100メガバイト。すでに8MBを使っている。どこか有料のサーバを借りるか。サーバ借りるならドメインを取るか。どうする?サーバ借りると言っても知識の無い自分には良し悪しもわからない。古巣のロリポップとムームードメインで草鞋を脱ぐことにした。当初は「ドメインずっと無料」の高額プランの広告バナーに釣られたが年々のコストを計算してランクが一番低いコースをお試し替わりに契約した。ドメインは取得費用と更新費用に大きく開きがあって悩んだ。取得費用が数百円で済むのに更新費用が高かったりするのだ。取得費用は安くないが更新費用が控えめな〝.net〟を選んだ。
・ムームードメイン bonocho.net
.net 取得 1,848円
.net 1年更新 1,848円
・サーバ ロリポップ
エコノミープラン(120GB)
37か月 3,564円(1か月96円)
これがここの家賃。ロリポップの価格は今年2026年1月5日から値上げで、決済が4日だったので値上げ前の価格。容量が120GBもあれば御の字。すごい。データベースが使えないプランだけどこれで十分。1か月96円てタダ同然か。ありがたい。

