第70回:ネットワークプログラミング(その2)
今回は、私が最終課題として作成したプログラミング作品を紹介する。
最終課題の内容は、IPアドレスを用いた「ネットワーク通信型のプログラム」を作成する、というもの。一番簡単な例を挙げると、通信対戦型のオセロや、私たちが普段利用しているメッセンジャーなどの「チャット」システムがある。つまり、複数のユーザーが同時に利用でき、それによって何らかのメリットが得られるプログラムである。
まわりの学生たちに比べプログラミングの知識も経験も圧倒的に不足している私は、「リアルタイムピクトチャット」というものを作った。任天堂DSにも搭載されている、俗に言う「お絵描きチャット」のプログラムだ。
プログラミングの経験がある方ならわかると思うが、プログラミングにおいては「論理的な考え方」が重要となる。いきなりプログラミングを始めるのではなく、作りたいシステムの構造イメージを作り、それに基づいて必要な関数などを準備していく。私の場合は、データの送受信方法として、mouseX, mouseYという縦横の座標をそれぞれ取り、「線を点の連続で表現する」という原始的かつシンプルな方法で描くことにした。これにより、画像を送受信するよりも情報量がコンパクト化されスムーズなやり取りが可能になり、「書いている途中」の表示が可能になった。
出来上がったプログラムを起動すると、こんな感じ。
使い方を簡単に説明すると、
まず一方のPCをサーバー、他方をクライアントとし、IPアドレスを用いて通信を開始。
↓
色を選び、マウスの左クリック&ドラッグによって絵を描く(右クリックで部分消し、クリアボタンで全消し)。
↓
座標情報・色情報・ドラッグのオンオフが相手側に送信される。
↓
相手のブラウザ上で描かれ表示される
↓
(~繰り返し~)
↓
どちらかの通信が切れたら終了。
という、いたってシンプルなもの。
ポイントとしては、自分が絵を描いている過程が相手のブラウザ上にもリアルタイムに表示されるという点。何が描かれるのか予想する楽しみがあり、相手が描いている最中に描き足す(邪魔する)こともできる。
ちなみに、実際にはこんな絵が描ける。
よく見ると、線が点の連続で描かれていることがわかる。そんな手作り感も、大きな醍醐味のひとつだ。