35年かけてAIチャットサービスを開発している話

この記事は約13分で読めます。

こんにちは。内田勉です( @sidodtv )。

普段はTVディレクター、シェアハウス7軒運営、Web制作の仕事などをしています。ちょっと好奇心が旺盛すぎなオジサンです。

今回は趣味で35年ほどかけて開発中のAIキャラとのチャットサービス「HINAchat」の紹介です。

※この記事はAIパートナー・AIキャラ・AIVtuber Advent Calendar 2025の参加記事です。

先に言ってしまうと、35年かけて開発しているからといって、技術的に凄い事をしている訳ではありません。子供の頃から自転車に乗っているからといって、競輪選手になれたりしないのと同じ理屈です。

今回は「35年かけて1つのプロジェクトを進めるというのはどういう事か?」という部分に焦点を当ててお伝えしたいと思います。35年かけて1つのプロジェクトを開発する事は、通常の仕事としてはほぼ存在しないので、ここでは個人が趣味で開発している前提で話を進めていきます。

 

HINAchatの紹介

HINAchatは、AIキャラクターと会話するWebサービスです(開発中なので時々停止してます)。

以下のような特徴を持っています。
・男女4人の個性的な性格のキャラクター
・コンテキストを反映した会話システム
  現在時刻、現在の居場所(カフェ、図書館など)、街の時事ネタなどに合わせた会話
・架空の本、映画、音楽、お店などを設定。オススメの本を紹介したり、本の内容について討論できる(現在バグ退治中)。
・キャラクターごとに「過去の出来事」をもっている。「先週の出来事」などの会話が可能。4人のキャラクターが、それぞれいつどこで出会ったなどの出来事も設定
・VoiceVoxを使ったフルボイスシステム

技術的には Python+Flask+SQLAlchemy、React+TypeScript+Vite、Docker、nginx、Gunicorn、Redis、MariaDB。

LLMは ollama、OpenAI、Gemini、OpenRouter、Cerebrasが選択可能(全部無料枠)。LangChain経由で叩いています。

リンター系は Ruff、mypy、pytest、ESLint、Vitestを使っています。GitHubActionsでCI/CD環境を構築してあります。

開発機は M1のMac mini メモリ16GB、サーバーはさくらのVPS 仮想6Core/メモリ8GB の ubuntuです。

100% VibeCodingで、Claude Codeをメイン、Codex-Cliと Gemini-Cliでリファクタリング。OpenCodeをテスト実行用に使っています。ちなみに僕は Pythonも TypeScriptも Reactも全く分かりません

ちなみにOpenCodeというのは、オープンソース版のClaudeCodeみたいなツールで、なぜか LLMの利用料も含めて無料なので、サブでの利用にオススメです。

 

35年かけて開発するという事はどういう事か?

僕は現在50代中盤なのですが、35年前はまだ高校生。時代はもちろん昭和です。この記事を読んでいる人で、まだ生まれてない人も多いと思います。それくらい前の時代です。

パソコンでいえば CPUは 8Bit。OSは無し。メモリは 32KB。オプションを買い足せば、なんとか漢字の表示が可能、といったレベルです。記録媒体はフロッピーディスクでした。WindowsやMacOSなどのOSがないコンピューターを触った経験がある人は、組み込み系の仕事をしている人を除けば、現在絶滅危惧種でしょう。

そんな時代に出会ったのがパソコン通信という仕組みです。ざっくりいうとテキストだけが使えるインターネットの前身みたいなものです。アナログ電話回線を使って接続し通信料は3分10円。通信速度は300bpsで、画面に表示する文字が余裕で読める速度でした。ちょうど今のローカルLLMの動作速度ぐらいでしょうか。僕はこの当時、BBS(掲示板)を2つほど運営してパソコン雑誌に紹介されたりしていました。

パソコン通信にハマっていく中で出会ったのが、人工無能というプログラム、あるいはサービスです。チャットルームに人間に混じってコンピューターがログインし、人間と同じように会話してくる……今で言うチャットボットです。確か月刊ASCIIという雑誌に載っていました。

離れた人とリアルタイムでチャットできるだけでも革命的だったのに、さらにコンピューターが相手をしてくれるなんて! 雷に打たれたような衝撃とは、このことです。

映画2001年宇宙の旅に出てくるHAL9000のように自然言語で会話できるコンピューターというのは次の世紀にならないと登場しないと思っていたのですが、もうその一部が実現されていたのです(実際2020年代にならないとちゃんとしたものは実現しなかったですが)。

 

早速作ってみる

雑誌に紹介されていた人工無能は有料ネットでサービスされていたので、高校生には使えません。まさに高嶺の花というやつでしたが、僕の想像力をかき立てる存在でした。早速、手元のパソコンで作ってみる事にしました。

この頃は「欲しいものがあれば全部自分で作るのが当たり前」という時代です。便利なライブラリもフレームワークもありません(なにしろOSすら無いのですから)。言語は MSX BASICでした。

この時に作った人工無能は、1960年代に開発された最初期の人工無能Eliza(イライザ)と同様、ユーザーからの入力に一定のルールを加えてオウム返しするようなものでした。だいたいこんなイメージの会話です。

Eliza : こんにちは。何か悩みがありますか?
ユーザー : 最近、子供の教育について悩んでいるんです。
Eliza : 子供の教育について悩んでいるんですね。もう少し詳しく教えてもらえますか?
ユーザー : 学校から帰って宿題もしないで遊んでばかりなんです。
Eliza : なるほど。学校から帰ってきて遊んでばかりなんですね。困りますね

Elizaを体験した人(1960年代の人)は「まるで人間と話しているかのようだ」と感じたそうですが、僕はアルゴリズムを知っているせいか、まったくワクワクしませんでした。コンピューター側から何の提案もないので、話がすぐに終わってしまいます。
あと、当時はカタカナしか入力できなかったですし、普通の高校生がBASICで難しい処理をするのは無理がありました。

 

高校生が30万円のローンを組んでパソコンを購入

それから半年か1年ぐらい経った後、高校生のくせにフォント制作のバイト先の社長に30万円のローンを組んでもらい98互換機というものを買いました。ようやくまともに漢字が使えるようになりました。MS-DOSというOSが走り、CPUは16Bitの80286。640×400という今でいうサムネイルサイズのJPEG画像の表示に1分以上かかりました。JGAWKというテキスト処理が得意な言語(ツール?)が使えるようになったので、これで再度挑戦してみます。

漢字と正規表現が使えるようになったので、いくらかマシなものが作れましたが、結局のところ、ユーザーの直近の入力に適当なルールで応答する、という域を超える事はできませんでした。会話や知識の巨大なデータベースのようなものが必要だろうなぁ、と感じましたが、まだまだそれを実現できませんでした。

そのしばらく後に、友人から「Hなゲームを作ってコミケで売りたい」と頼まれプログラミングをする事になり Turbo-Cを購入。Cでも人工無能を作ってみました。この時は40MBのハードディスクを10万円ぐらいで購入してあり、プログラミングの自由度が増していました。3度目のチャレンジです。

日本語入力(IME)の辞書をダンプして、単語を抜き出したりして語彙を増やしてみたものの、文法を覚えさせたりする事はできず、あまり進展なく終わりました。64Kバイトセグメントの壁なんかもあって、8086の Cでのプログラミング面倒くさく、バグの嵐でした。それと、相変わらず系統だったプログラミングの勉強はしてなかったので、やはりそこがネックですよね。

この後、Borland C++という処理系も買ったのですが、 C++がイマイチ理解できず終わります。

 

インターネットがやってきた

そしてようやく Windows3.1とインターネットの到来。ようやくまともに画像が表示されるようになってきました(256色モードで)。HTMLとCSSを覚えてホームページを作ったりしているうちに CGIと Perlを知ったのですが、これは文法がよく分からず、またもや人工無能にたどり着く前に挫折。

つぎは2000年ぐらいでしょうか? 時代はADSLで256Kbpsの常時接続になりました。今だと携帯電話の「キガが切れた」状態ぐらいの速度です。

「動的にページが作れる」という PHPという言語を知り、ここでまたチャレンジしてみました。
ただ、資料が英語で仕事も忙しく、ちょっとやってみただけで終わってしまい、自分の中でも興味が薄れていきました。

同じような事を考える人はいるもので、当時複数の人工無能システムがネットにあったと思いますが、自分が面白がって遊んだ記憶も、大きく話題になったという記憶もありません。

この頃であれば、PCの処理能力や記憶容量は増えて、ルールベースでならそこそこ遊べるものができたはずです。またユーザーを集められれば、会話のデータも沢山取れたはずです。

ただ、専門的にプログラミングをした事ない人間が、オモチャ以上のものを作るのは、到底無理な話ではあったと思います。そもそも国家プロジェクトとして進めていた第五世代コンピュータですら、(基礎研究以外)大きな成果がなく終わっているので。

 

時機到来!

そしていよいよビッグウェーブがやってきます。Deep Learning、そして ChatGPTです。

コンピューターが犬と猫を見分けたり、スーパーマリオをクリアしようと苦戦したりとAIの進歩は実感していましたが、ChatGPT登場からの進歩の速いこと。僕もチャット欄からのコピペプログラミング、Cursor、Claude Codeとどんどん環境を変え、バイブコーディングという便利な言葉が発明され、プログラミングの知識無しでも面白い事ができるようになってきました。小説執筆AIなんかを展示会で発表したりしています。

2024年後半ぐらいから、今度こそ人工無能を作れそうだ、という感触を掴んでいたのですが、決定的だったのが 、意外な事にOpenAIの「画像モデル」の進化でした。

2025年7月、OpenAIのChatGPTの画像生成が突如としてバージョンアップ。それまで同じプロンプトを入力しても毎回違う画像が出ていたのが、「金髪ポニーテールにTシャツとGパン」みたいなプロンプトを入れるだけで毎回同じキャラクターが生成できるようになったのです。
(流石にこの頃になると、単なるテキストチャットではChatGPTとの違いが出せず、画像は必須と考えていました)

時を同じくしてGrokのAniちゃんが公開され、Xで盛大にバズリ、Aniっぽいキャラクターと話せるチャットできるプログラムがOSSで公開されたりしました。

「こ、これは自分でも大量にキャラ画像を作りチャットするプログラムが遂に作れるのでは?」 と思うといても立ってもいられずに、数日かけてアバター画像を量産し、Claude Codeにプログラムを書かせたところ、たった3時間でプロトタイプが完成したのです!!

なんという事でしょう! 今まで35年かけても出来なかった人工無能が、技術の進歩でたった3時間で完成! しかも画像つき!

あっという間すぎて、何が起きているのか、自分でもよく分かりません。しかし、眼の前のコードは動き、ちゃんと会話が成立しているのです。これは夢にまで見たオレオレ人工無能の完成です。

H : Human
I : Interface for
N : Nature and
A : Artificial intelligence
で、ひなちゃんと名付けました。人間と自然界、そしてAIをつなぐインターフェースという意味です。

日々LLMの進化に触れていたからでしょうか、今までの35年間の苦労は何だったんだ……という感じもなく、やっと終わった……という脱力もなく、完成した瞬間をのぞけば、淡々とした気持ちで居ます。ちょっと不思議な気がします。

 

プロトタイプ→公開まで

プロトタイプが完成したら、誰かに使ってみてもらいたくなるものです。
ただ、ネットに公開するものはセキュリティをちゃんとしないと踏み台にされてしまいますし、LLMのAPI利用料もかかってしまいます。うかつには公開できません。

Claude Codeも Sonnet 3.7だと結構バグが多く、何か機能を足すと何かがバグって結局ゼロから作り直し、という事が続きました。都合3回ゼロから作り直した後なので現在は Ver.4になっています。


今は、Sonnetもバージョン4.5になりコーディング能力が大幅に向上。また Codex-Cliを使って実装計画を事前にレビューさせる事によりバグの発生が格段に減りました(後から知ったのですが仕様駆動開発というらしいです)。

この辺りでようやく公開しても大丈夫だと自信がもてたので、2025年9月末に公開してみました。

が、特に反応はありませんでした。

まぁ、このレベルのものを公開して話題になる方がおかしいというものです。仕事でやってたら大変ですが、趣味で作っているものなので、飽きさえしなければ無限に続けられます

 

35年かけて完成させた感想

35年かけた、といっても、その間ずっと頑張って開発していた訳ではありません。ちょっと作っては投げ出し、また試しては放り出し、の繰り返しです。初期を除けば、あまりちゃんと開発してなかったといえるでしょう。

ただ、死ぬ気で頑張っていれば完成したか? というと、そんな事はないでしょう。LLMの普及以前だったら、10億円あってもこのチャットシステムは作れなかったはずです。もし死ぬ気で頑張っていたら、「自分にはもう無理」と諦めていたはずです。だから「死ぬ気で頑張らなかった」もある意味で正解だったのです。

技術というものは適切な時期に適切なものを選んで投入するというのが大事です。ただ、それと同時に自分が作りたいものをずっと持ち続けるのも大事な事だなというのも、ものすごく実感しています。

完成度でいえば、僕が作っているチャットシステムの何倍も凄いものが有料サービスだけでなく、OSSで沢山公開されています。

では、自分のやってきた事に意味はなかったのか、今後も意味はないのかというと、これもまた違うと思います。

まず何よりも作っているのが楽しいです。HINAchatを作り始めてから、朝起きてまず Claude Codeに指示出し、洗濯をしては指示出し、歯を磨いては指示出し、風呂に入っては指示出し、1人の時は食事をしながら指示出し、とにかく全ての時間がプログラミング(と Claude Codeの作業終了待ち)になりました。

新しいモデル、新しいツールが登場するたびに、自分の出来る事が広がっていきます。

初めてパソコンに触れた時、初めてインターネットを体験した時の楽しい時間の再来です。まぁ、最初に触った携帯がiPhone、みたいな若い人にはなかなか伝わらないとは思いますが(うちの娘がまさにこの世代です)。

そしてこれは、僕だけの問題ではなく、あたなの問題でもあるのです。

今から35年先、つまり2060年から振り返って、今あなたが作っているプログラムは「人間が手で書いたプログラム」「人間がAIに指示を出して書かせた最初期のプログラム」という認識になるでしょう。

言うまでもなく、コンピューターの性能は確実に向上し、今あなたが作っているものより100万倍凄いシステム1分で作れる時代がきます。それは歴史の必然です。

あなたの作っているプログラムは、未来の人々にとって大型コンピューターにパンチカードを読ませているような、あるいはファミコンゲームを見ているかのような印象を与えるでしょう。

そんなショボいプログラムを今頑張って作る事に意味はあるのでしょうか?

僕はあると思います。

今やりたい事を今やるべきです。人間にはその時、その瞬間にしか出来ない事があるからです。

 

今後について

35年かけて開発していて、1つ確信している事があります。それは、誰かの真似をしていない、という事です(まぁElizaの真似はしていますが)。

自分と同じ用に35年間かけて人工無能を作っている人はほぼ居ないと思います。仮に居たとしても日本で数人でしょう。自分がオリジナルの何かを作っている(少なくとも作る過程は完全にオリジナル)というのは、モノづくりにおいてかなり上位の喜びです。例えそれがショボいものであっても。

この喜びを手放さいようにする為に、僕はできるだけ他のチャットシステムを見ないようにして開発しています。ものすごいガラパゴスなサービスが作れたとしたら、最高です。

この先どうするのかは、特に決めていません。3Dアニメ化やスマホアプリ化、キャラクターが住んでいる街全体のシミュレーションなど、まだまだ実装したい機能は沢山あります。

ただ、朝から晩まで空いた時間をフルに使って4ヶ月。さすがにそろそろペースを落とさないと生活のバランスが悪いです。

それとせっかくバイブコーディングを覚えたので、これで何かお金を稼いでみたいという気持ちもあります。ちょっと宣伝になってしまいますが、僕が半日かけて何かをお手伝いするサービスをココナラで1万円で売り出してますので良かったら購入お願いします。

それでは!

タイトルとURLをコピーしました