大学の講義、プロジェクタなどの投影機を用いて授業を行っているが、スクリーンに写されている画面は後ろの席に行けば行くほど見えづらくなる。その問題を画面共有ソフトVNCを用いて、手元のコンピュータに講師の画面を表示することで解決しようと考えた。通常のVNCを用いて多人数が同時に接続するとサーバ側の処理性のが低下し、授業の進行について行かなくなってしまう。本研究では、多人数で使用しても処理性能が低下することない画面共有システムTreeVNCの設計と実装を行い、更にゼミなどで使用しやすいようにUIの提案と実装も行った。Computing)とは、RFBプロトコルというプロトコルを用いて画面共有を実現することのできるアプリケーションである。RFBプロトコルはGUI操作によるリモートアクセス用の通信プロトコルである。ソースコードはオープンソースとして公開されているため、多数の派生ソフトが存在する。派生ソフトには、RealVNCやTightVNCなどがある。ServerへのCPU負荷が高い。Server側の通信網1本への通信負荷が高い。Serverに接続した際、CPU使用率が100%になりスループットが5分の1まで下がってしまう。Serverに一極集中で接続してしまうのが問題であったので、集中している負荷を分散できないか考えた。Serverに負荷が集中しているので、クライントに負荷を分散するようにクライアント同士でのデータをやりとりすることで負荷分散ができる。クライント同士の接続を木構造に行って、データを上から下へと流しすようにすることで、すべてのクライアントへデータを届ける。今後、木構造に接続されたクライアントのことをNodeと呼ぶ。Nodeを木構造に接続させるために、トポロジを管理する特別なNodeが必要になる。Serverに接続し、Nodeの接続に対して木構造にNodeを接続するように命令を出す。TreeVNCでは、接続が分散していて、通信網1本に対する負荷が減少するのでNodeが増えても高いスループットを保つことができる。Nodeから接続するべき場所のIPアドレスをもらう。Nodeは接続してきたNodeのIPアドレスを自身が持つリストに登録し、接続先のIPアドレスを返す。Nodeは指定されたNodeに接続を行う。Nodeが接続される度に、この手順を繰り返すことで、木を構成することができる。NodeとNodeがアプリケーションを立ち上げなおさなければならない。発表者が大勢いると切り替えだけで時間を取られてしまう。そこで、ボタンひとつで画面を切り替えることのできるように実装を行った。画面の切替手順は以下のとおりである。Nodeに対してボタンを押したNodeのIPアドレスが渡される。Nodeは受け取ったIPアドレスのNodeに対して、接続要求を出す。Nodeは現在使用しているストリームを閉じて、すべてのNodeに対して画面が切り替わったことを知らせる。Nodeは切り替わった画面への接続を行う。マルチディスプレイを使用してTreeVNCを使用する場合、Nodeにすべてのディスプレイのデータが送られてしまう。実際、発表する際には一つのディスプレイしか使用しない場合が多いので、無駄なデータが流れていることになる。Node側も見たい画面へとスクロールする手間が出てくる。一つのディスプレイのデータを送ることができるように実装を行った。RFBプロトコルの中ではFrameBufferUpdateで、画像データの送信を行っている。画像のやりとりの手順は以下の表である。流れてきたx-position,y-position,width,heightで画像の位置と大きさがわかる。2つディスプレイがある場合は、2つのディスプレイにまたがった画像のデータが来ることはない。Nodeでフィルタリングしてやることで一つのディスプレイの情報を送ることができる。上の図で左側の画面の画像を送信したい場合は、x-positionが1920以下の画像だけを、Nodeに送ることでひとつのディスプレイデータを送ることが実現できる。TreeVNCでは、TCPコネクションを用いて、通信を行っているので、クライアント数の通信が必要である。BroadcastやMulticastを用いると、データ送信は一回だけで良い。BroadcastとMulticastのは、パケットの確実性は保証していないので、パケットが消失してしまうことがある。どの程度パケットが消失しているのかをテストしてみた。以下の表は100packetデータを送信してデータのロス率を調べた表である。Multicastを使用しても、4000byteで1000packetを送信して37%のデータをロスしているので、予想以上にロス率が高い。MulticastとBroadcastは、一回のデータ送信で、約64000byteのデータしか送信することができない。1920*1080の画像で送られてくるデータは6220800byteである。データを約100個に分割しなければならない。分割するテストプログラムを書いてみたところ、分割と送信に画面共有に支障をきたすほど処理が遅くなってしまった。TreeVNCを評価するために複数のNodeが必要となる、そこで今回は学科で提供されている並列計算環境を利用して、実験を行った。使用した並列計算環境の性能は以下の図に示す。TreeVNCは木構造で構成されているので、一番上のノードから一番下のノードまで、データが届くのに時間がかかってしまう可能性がある。