まずは通信部分から

というわけで、ようやくプログラムに関する話の始まりである。用語の細かい説明は省略することが多いので、不明な言葉があれば、調べるなり質問するなりして欲しい。
私は「プログラムの設計」というものをちゃんとやらないというか、頭の中だけでやってしまう人間である(この話については後でもうちょっと詳しくしたい。覚えてれば)。というわけで、とりあえず、いきなりプログラムを書き始めた。
最初に手をつけたのは根幹とでも言うべき通信部分。当然TCP/IPである。最初、便利なコンポーネントは無いか探してみたのだが、あまりいいのが見つからず断念。そういうコンポーネントは結局のところ細かいところが思うようにいかないことが多く、最終的には自分で一からつくった方が楽だったりするという経験もあるし。と言いながら、Delphiに標準でついているコンポーネントを使ったのだが。別にWinSockで組んでも良かったんだけど、せっかくだし、慣れていこうかなあとか思って。
と書きながら「そもそもコンポーネントって何?」という人がいそうな気がしたので、ちょっと解説を。Delphi以外の環境でどうなのかは知らないが、Delphiでは単純に言えば「部品」である。ボタンとかメニューとかも部品になっていて、それをちょっと選んで置けば使えるという感じ。テキストエディタとして使えるものもあったり、リスト表示に使えるものもあったり色々ある。それらを使いこなすのが1つのポイントとも言えるくらい。で、TCP/IPについてもそういう便利なコンポーネントが既に用意されていたというわけ。
TCP/IPそのものは仕事で何回か使ったことがあり、基礎はわかっていた。簡単に解説しておくと、私が使っているのは普通のサーバ・クライアントモデルという奴。接続するときに予め役割を決めておき、一方がサーバとなり、他方がクライアントとなって、サーバが接続待ちになっている状態でクライアントが接続して通信を確立するという方式。で、Delphiにはそれぞれサーバ用のコンポーネントとクライアント用のコンポーネントが用意されていて、サーバの方はポート番号を指定してOpenするだけ、クライアントの方はアドレスとポート番号を指定してOpenするだけで接続完了。簡単簡単。最も接続するだけならWinSockを使ってもさほど難しくはないのだが妙な呪文というか、約束があったりして、昔苦労した記憶があったりするし、これからプログラムをしようという人には「使えるコンポーネントがあれば、それを使っておきなさい」と私からは言っておきたい。
接続ができることを確認してから、とりあえず、チャット機能をつくってみる。通信ができていることを確認するにはわかりやすく、実際に使う機能だから。これはあっさりと成功。通信さえできることが確認できれば、後はコツコツつくっていくだけ。昔、通信関係で苦労したことがあるので一安心。
しかし、この通信関係は後々あれこれ修正することになる。正直なところ、今でも通信部分は完璧とは言えない。ときどき止まってしまうことを経験したことは多いだろう。通信部分の修正内容と、未だに抱える問題については次回に説明することにしたい。