40年前のIBM PCでChatGPTと会話可能な「DOS用のChatGPTクライアント」が開発される
OpenAIの対話型AI・ChatGPTは、テキストを入力するだけで人間並みの自然な文章で回答してくれるAIです。このChatGPTのAPIを利用して、DOS向けのクライアントを開発し、およそ40年前のPCであるIBM PC5155で動作させることに成功したとエンジニアのYeo Kheng Meng氏が報告しています。
Building a DOS ChatGPT client in 2023 - YKM's Corner on the Web
https://yeokhengmeng.com/2023/03/building-a-dos-chatgpt-client-in-2023/
GitHub - yeokm1/doschgpt: A proof-of-concept ChatGPT client for DOS.
https://github.com/yeokm1/doschgpt
Yeo氏が所有している最も古いDOSマシンが、1984年製のIBM PC5155でした。「このIBM PC5155でChatGPTが実行できれば、他のほぼすべてのDOSマシンで実行できるはずです」とYeo氏は述べています。
IBM PC5155のスペックは以下の通り
・Intel 8088 4.77Mhz CPU
・640KB コンベンショナル メモリ (アップグレード キットを使用)
・CGA ISA グラフィックス
・NE2000互換ISAイーサネットアダプタ
・XT-IDE ISA ドライブ コントローラ
・MS-DOS 6.22
当然のことながら、16bitのDOSでは、64bit版Windowsがデフォルトで実行できません。そのため、開発はDOS 6.22を実行する仮想マシンをセットアップして行われました。
そして、コーディングの上での最大の問題はネットワークAPIでした。これはDOSにはネットワークAPIがネイティブに付属していないためです。しかし、以前にTCP/IPネットワークに対応したDOS用プログラムを作成した経験があったため、Yeo氏は技術的に可能だと判断。
調査の結果、Yeo氏は1983年に開発されたPacket Driver APIと呼ばれるネットワーク標準に注目。このPacket Driver APIを利用して古いPCをTCP/IPネットワークに対応させるオープンソースのネットワークライブラリ「mTCP」が見つかったそうです。
mTCPライブラリの概要は以下の通り。mTCPライブラリはアプリケーションに統合される必要があり、Terminate-and-Stay-Resident(TSR)プログラムとして実行されているメーカー提供のパケットドライバーと通信を行います。TSRプログラムは、アプリケーションから呼び出されるまでバックグラウンドでスリープ状態にあり、ネットワークカードと直接通信を行います。
次に、通信プロトコルの問題がありました。Yeo氏は過去にWindows 3.1上でも動作するSlackクライアントを開発したことがあり、このSlackと同様にChatGPT APIもHTTPS経由で暗号化されていました。
Windows 3.1上で動作するSlackクライアントを開発した猛者が登場 - GIGAZINE
この通信プロトコルの問題を解決するため、Windows 3.1版Slackの時に開発した、HTTPS要求を行えないシステムのHTTP接続をHTTPS接続にアップグレードするプロキシ「http-to-https-proxy」を使ったとのこと。つまり、OpenAIのサーバーとPC 5155が直接通信を行うのではなく、「http-to-https-proxy」を動作させている現代のPCを経由して通信を行わせるというやり方です。
Yeo氏は「純粋主義者はこの解決策を好まないかもしれませんが、これが私の能力で合理的な時間で解決できるベストな方法です」とコメントしています。
さらに一連のネットワークスタックはシングルタスクのDOSアプリで管理されるため、ユーザー入力を待機している間にネットワークスタックも停止してしまうことになります。そのため、mTCPライブラリのサンプルコードを参考に、キーボード入力をローカルバッファに保存してコンソールに出力することで、プログラムを一時停止しないという工夫を取ったとのこと。
実際にPC 5155上でChatGPTと会話する様子は以下のムービーで見ることができます。
DOS ChatGPT client on a 1984 IBM Portable PC 5155 - YouTube
Yeo氏は「今回の開発では、mTCPライブラリがなければ実現しなかったと思います。mTCPライブラリとサンプルコードがなければ、Packet Driver APIをどうすればいいのかを考えて、TCP/IPスタックを実装するのが非常に難しかったでしょう」と述べています。
なお、Yeo氏がChatGPTに「DOSマシン用のChatGPTクライアントをコーディングできますか?」と尋ねたところ、「DOS は時代遅れのオペレーティング システムであり、最新のアプリケーションを開発するために必要なツールやリソースがない可能性があるため、DOS ChatGPT クライアントを作成するのは難しい場合があることに注意してください」という回答が返ってきたとのこと。Yeo氏は「このチャレンジはすでに達成され、勝利しています」とコメントしました。
・関連記事
MS-DOS用Mastodonクライアント「DOStodon」が登場 - GIGAZINE
オープンソース化されたMS-DOSのソースコードがGitHubで公開される - GIGAZINE
ブラウザで動作するマルチタスク対応DOSを自作した猛者が現れる - GIGAZINE
無料で昔のIBM・DOS・グラボなどのフォントがダウンロードできる「The Ultimate Oldschool PC Font Pack」 - GIGAZINE
3000枚のフロッピーに入っていた歴史的に貴重なDOS用ソフトを配布中 - GIGAZINE
Apple IIのDOSソースコードが30年以上の時を経て公開される - GIGAZINE
・関連コンテンツ