
[!] この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
当社では学校やPC教室での授業を支援する製品alpha Vclass ⧉を開発しています。 この製品は、1台のPC操作で複数のPCを一斉に操作したり、画面の監視やPC同士のファイルのやり取りといった様々な機能で授業の運営をサポートするソフトウェアです。 主な特徴としてマルチOSに対応していることがあげられ、Windows, Mac, UbuntuといったOSが混在している環境でも利用できます。
alpha Vclassの紹介
alpha Vclassは先生用のPC(以下、教員PC)が学生用のPC(以下、学生PC)を一括で管理する機能を持ちます。 詳細な機能は製品ページ ⧉を御覧ください。
通信システムで起こる一般的な問題点
alpha Vclassは、教員PCと学生PCが通信を行うことで様々な機能を実現しています。 通信システムにおいては、どのようなシステムも通信を行う際にネットワークの輻輳やポートの衝突といったリスクがあります。 この記事では、これらの問題を回避する方法について、alpha Vclassの機能を例にご紹介します。
通信システムにおける独自プロトコルの役割
通信システムでは、必ず通信プロトコルが規定されています。
alpha Vclassも独自のプロトコルをTCP/IP
上に規定しており、マルチなOSの環境下での学生PCの管理を実現しています。
通信プロトコルの規定が必要な理由と、通信に関する問題を避ける工夫について、alpha Vclassの機能を例に簡単に解説します。
プロトコルの必要性
alpha Vclassは教員PCから学生PCにメッセージを送信する機能があり、教員PCが送信したメッセージを学生PCの画面上に自動で表示させます。
今回はこの機能を例に、プロトコルを規定する必要性について、簡単に解説します。
メッセージ送信機能を実現するために、教員PCは学生PCに対して、メッセージを画面に表示する
という処理の命令と表示させたいメッセージ
をまとめて1つのパケットとして送信します。
このパケットを学生PCが読み取るためには、メッセージを画面に表示する
の後に表示させたいメッセージ
の順で格納するというような、どの順番でパケットを構成するかをPC同士で定めておく必要があります。
このような定義がない場合、学生PCは受信したデータの取り扱い方法がわからず処理を行うことができません。
学生PCはパケットの先頭にある命令処理を読み取ることで次に送られるデータの意図を把握します。
パケット内の順番が決まっていない場合は、表示させたいメッセージ
の末尾を教員PCからの命令処理と勘違いし、意図しない動作を行う可能性があります。
そのため、通信を行う上では送信されてくる内容の順番を定め、これをPC同士で共有する必要があります。
受信したデータの処理
プロトコルの必要性
で紹介したように通信するデータの順番を定めたことで、学生PCはメッセージを画面に表示する
命令と表示させたいメッセージ
を受信し、内容を把握できました。
この受信したメッセージと処理命令を基に、学生PCのalpha Vclassが命令を実行し、表示させたいメッセージ
を画面上に表示することが可能になります。
多台数通信時のリスク
alpha Vclass起動後は、教員PCと学生PCが常に通信を続ける状態となります。 教員PCと学生PCが1対1の関係であったり、データ量が少ない場合は通信の問題は発生しません。 しかし、学生PCが1台とは限らず、またalpha Vclassの一部の機能は扱うデータ量が大きくなる場合があります。その状態で多台数と同時に通信を行うことは、ネットワークが輻輳するリスクとなります。
通信を行うタイミングの制御
すべての学生PCが自分の通信を開始するタイミングを把握していて、通信を行う順番を守ることができれば、同時に通信を行うデータ量が制御できていることになります。この場合はネットワークの輻輳のような通信上の問題は発生しません。 ただし、現実は学生PC同士はお互いの通信のタイミングがわからないため、学生PC同士が通信して順番を制御し合うか、特定のPCが通信の順番を制御する必要があります。 alpha Vclassは学生PCをクライアント、教員PCをサーバとしたクライアントサーバモデルであるため、サーバである教員PCが通信の順番を制御するポーリング方式を採用することで、それらの問題を解消しています。
出席票の提出を例とした通信タイミングの制御
タイミング制御をしている機能として「出席票の提出」を例に説明します。 授業が始まると、教員は学生PCに対して出席票の提出要求を行います。 この時、学生PCは教員PCに対してのみ通信を行います。学生PCが、他の学生PCと提出タイミングを調整したり、データを送信したりすることはありません。また、要求されない限り、学生が自ら教員PCへ提出することもできません。 このように、教員PCから一方的に問い合わせや命令を送るポーリング方式を採用することで、教員PCが一手に学生PCの通信タイミングを制御しています。
ポートリソース管理の必要性
alpha Vclassは様々な機能で通信を行っており、その度に通信用のポートが必要となります。 しかし、通信を行うごとに新しいポートを用意しては、いずれポートの衝突が起こる可能性が生まれます。 リスクを発生させないため、alpha Vclassが行うポートの乱立を避ける工夫をご紹介します。
教材の配布機能を例とした通信用ポートの確保
alpha Vclassでは、教員PCが学生PCの状態を確認するために常時通信を行うポートと、機能の実行で一時的に使うポートのように、複数のポートを組み合わせて通信を行う機能があります。 複数のポートを使う機能として、教材の配布機能を例にご紹介します。 複数のポートを使う必要があるこの機能では、常時通信を行うポートを使って教材配布用のポートを学生PCに用意させる必要があります。 以下がこの機能のフローとなります。
また、教材の配布完了後、教材配布用のポートを閉じることで限られたリソースを節約しています。 alpha Vclassでは、教材の配布機能のように、大きなデータ通信が発生する可能性がある場合は複数ポートを用いた処理を行います。 その必要なタイミングでのみポートを用意し、不要になったポートはすぐに閉じることでポートが衝突するリスクを軽減させています。 これは、alpha Vclassの機能が別の機能を阻害しないようにするための工夫でもあります。
まとめ
alpha Vclassは通信を使って様々な機能を実現していますが、ポーリング方式を採用することでネットワークの輻輳を抑制し、ポートを動的に機能に割り当てることでリソース消費を抑えていることをご紹介しました。 この記事で紹介した内容はあくまで一例ですが、通信を必要とするソフトウェア開発の参考になれば幸いです。 もしこの記事でalpha Vclassについて興味を持たれた方は、是非こちらの製品ページ ⧉も御覧ください。