Windows 3.1上で動作するSlackクライアントを開発した猛者が登場
ビジネス向けのチャットアプリであるSlackはさまざまな企業で利用される人気ツールです。エンジニアのYeo Kheng Mengさんは、1993年にリリースされたWindows 3.1でも動くSlackのクライアントを開発し、GitHubで公開しています。
Building a new Win 3.1 app in 2019 Part 1: Slack client | YKM's corner on the web
http://yeokhengmeng.com/2019/12/building-a-new-win-3-1-app-in-2019-part-1-slack-client/
実際にSlackでテキストの送受信を行うところは以下のムービーで見ることができます。
Slack client for Windows 3.1 - YouTube
左側のIBM ThihkPad 390Eのモニターに映っているのがWindows 3.1版、右側に映っているのがmacOS版のSlackクライアントです。
Windows 3.1版に「hi mac from win 3.1」というメッセージを入力して送信すると……
macOS版のSlackクライアントにメッセージが表示されました。
今度はmacOS版からメッセージを送信したところ……
Windows 3.1版での受信に成功しました。
Windows 3.1には標準でネットワーク機能が搭載されていないため、Yeoさんの開発したSlackクライアントは、厳密にはアドオンであるWindows for Workgroups(WfW)3.11環境下で動くようになっているとのこと。また、Windows 3.1版Slackクライアントを開発するため、YeoさんはWindows 3.1向けの16ビットWindowsプログラミングの教本を購入し、勉強したそうです。
言語は標準CのC89。Yeoさんは仕事上C言語をよく使うそうですが、C89は現代の仕様よりも複雑だったため、かなり苦労したとのこと。また、C89はライブラリのサポートがないので、多くの作業を手作業で行わなければならなかったとYeoさんは述べています。
また、使ったコンパイラは16ビットプログラムのVisual C++のバージョン1.52。Yeoさんによると、バージョン1.52はWfW3.11環境をサポートした最後のVisual C++だとのこと。
さらに、Windows 3.1ではプログラムが利用できるメモリ領域(ヒープ領域)が「グローバルヒープ」と「ローカルヒープ」に分かれていました。SlackクライアントをWindows 3.1で動かすためにはグローバルヒープにアクセスする必要があったとYeoさんは語っています。
そして、WfW3.11では、Windows Sockets API1.1が標準となっていますが、HTTPSを介したセキュアなRest APIの通信はサポートされていません。Slackを利用できるようにするため、YeoさんはHTTPS要求を行えないシステムのHTTP接続をHTTPS接続にアップグレードするプロキシ「http-to-https-proxy」を開発し、Slackのサーバーとの通信を仲介させたそうです。
Yeoさんによれば、WfW3.11は非常に不安定でクラッシュしやすく、ソケットプログラミング、JSON解析、UIデザインをすべてコーディングするのは並大抵のことではなかったそうです。Yeoさんは「Windows 3.1環境で動くプログラムを開発するにはネット上に正しいマニュアルや情報が少ないため、当時の書籍を読みながら昔ながらの方法で作業をする必要がありました。検索エンジンの恩恵を受けずにコーディングしなければならなかった昔のプログラマーの苦しみを共感できました」と、その開発の苦労を語りました。
・関連記事
Windows 95ではマウスカーソルをぐるぐると動かすと処理速度が早くなることがあった - GIGAZINE
「Windows 95の画期的なユーザーインターフェースはどのようにして開発されたのか」を詳細にまとめた論文 - GIGAZINE
Windowsのスタートメニューはどうやって誕生したのか? - GIGAZINE
Windows 3.1のゲームが無料でブラウザからプレイ可能に - GIGAZINE
・関連コンテンツ