3.6 高度化への現状と今後

 学校現場でWeb上の教育ソフトウェアを作成するにはどの様な高度化技術や方法があるかを、ここでは部品化、VRMLとの連携、CGIとの連携について論じる。

3.6.1 部品化

 ネットワーク上の教育ソフトウェアの共同作成と共有利用の目的を達成するには、部品化の技術が極めて重要な位置を占める。

(1) ソフトウェア部品とは
 一般的にソフトウェア部品(コンポーネントウェア)には、サブルーチンや、オブジェクト(クラスを実体化したもの)、コントロールがある。サブルーチンでは引数を与えてコールし、サブルーチン内部で何らかの機能を実現すると、その戻り値を返すようになっているが、オブジェクトやコントロールではそれが提供するプロパティ、メソッド、イベントで機能を提供できるようになっている。
また、オブジェクトには、ビジュアルなインタフェースをもつコントロールと、ビジュアルではない単にオブジェクトと呼ばれるものがある。
 このうちコントロールは、ビジュアルなインターフェースをもつため、ビジュアル開発ツールであるGUIビルダーを使ってコントロールをコンテナとなる窓の上に張り付けてプロパティ、メソッド、イベントを設定したり、リサイズなどの操作をビジュアルな環境のもとで行うことができる。
 つまり、あるまとまった機能を内部にカプセル化してもっているプログラムがオブジェクトであり、それが部品化され再利用可能なプログラムがソフトウェア部品である。そのなかで、このソフトウェア部品をGUI部品として可視化したものがコントロールである。

(2) 部品化の必要性
  自作の教育ソフトウェアを他者に配布する場合、ソフトウェアの改変を目的にしない場合には部品化を念頭において開発する必要はない。こうしたソフトウェアは目的の機能さえ発揮すればよいからである。このような自作のソフトウェアは、教員同士が個人的に配布したり、(財)学習ソフトウェア情報研究センターのような公的な機関が仲介して配布しているが、あくまで配布したソフトウェアの改変までを目的にした流通ではない。それに対して本企画のように自作のソフトウェアをインターネットを通して共同作成したり共有作成する場合には、部品化したほうがより多くの人たちに利用されやすいといえる。例えば、部品化しないで作られた関数の学習ソフトウェアは数学でしか利用されないことが多いが、そのなかでグラフを表示する部分を部品化して開発すれば、理科の自然現象や社会科の社会現象のデータをグラフ化する部品として利用できるからである。

(3) ソフトウェア部品の種類と教育における利用上の留意点
  逐次型とよばれるプログラムは、コンピュータに処理させる命令を順番に並べていくプロシージャによって構成されていた。しかしコンピュータの性能の向上とともに複雑で大規模なプログラムが求められるようになってくると、複数の人間が共同で開発することが必要になってきた。
 一人の人間が作成していたのとは異なって、わかりやすく共同作成が可能なかたちでプログラムを設計することが求められるようになった。
 これを解決する手法としてプログラムの全体をいくつかの階層構造をもった機能に分割していき、その過程を下のレベルヘ押し進めていく構造化プログラミングという方法がとられるようになった。
 しかし、プログラム全体を構築してしまうのでその仕様が確認できないことや、一部を修正するために全体を再構築しなければならないなどの問題が残る。
 こうした操作を中心とした手続き型プログラミングに対して、操作の対象となるデータと、振る舞いをひとつのオブジェクトとして定義することで処理するオブジェクト指向プログラミングが考え出された。
 この方法を用いると、同じ種類のものすべてに共通なデータとそれに関するメソッド(振る舞い)をひとつのクラスとして定義し、そのクラスから個々に違いを持った実体(オブジェクト)であるインスタンスを生成し、それをプログラムの中で部品として使用することができる。
 あるクラスを基本にして特殊なクラスを作るときには、基本のクラスとの違いだけを記述すればよい。このようにオブジェクト指向プログラミングでは、物のイメージや機能を中心として扱うのでプログラムを作りやすく保守しやすい注目されている。
 インターネット上の教育ソフトウェアは、インターネットを通して複数の人間が共同で作成したり共有利用するため、オブジェクト指向プログラミングはきわめて有効なソフトウェアの部品化の考え方になる。
 汎用的に利用できるような自作のソフトウェア部品をインターネット上に公開すれば、他者が作った部品を組み合わせて、新しいプログラムを作成することができる。
 このようなインターネット上に登録したソフトウェア部品を多くの人に利用してもらうには、次の点を考慮すべきである。
 共同作成のためには、他人が作ったソースを命令ごとに把握する必要はない。
 内部の構造よりは、どういう引数を受け取って、どのような振る舞いをするか、結果としてどのような戻り値を持つのか、などの情報を記述しておけば、その中で何が行なわれているか知らない他者でも容易に再利用でき、開発効率を高めることができる。さらにコントロール部品では、その内部はカプセル化されていていわばブラックボックスになっていても、利用者にとっては、その部品が提供する外観や状態に関する属性情報であるプロパティや、部品内部で発生した事象を外部に伝えるためのメカニズムであるイベント、部品が提供する動作であるメソッドさえ分かればよいことになる。
 命令ごとの注釈よりも、自作した部品のメンバであるプロパティ、メソッドオブジェクトの情報や、その部品を利用して教育ソフトウェア作る上でどう使えば良いか、などの注釈をまとめてその部分の先頭に書いておく必要がある。

(4) コントロール作成上の留意点
  コントロールには、次のような形式が考えられる。

1) ユーザー作成コントロールのみ
  すべてコーディングによって作成するコントロールであり、システムに内蔵されたコントロールや市販のコントロールをいっさい使わないで開発する。コーディングが大がかりになるが、既存のコントロールを使わないため、独自のコントロールが作成できる。例えば円形のボタンや円形のスクロールバーなども作成できる。
 このタイプのコントロールで教育利用できる例として、次に示す方位ベクトルポインターと空間用スクロールバーが考えられる。
 方位ベクトルポインターは、GIFの画像の上で方位を示すベクトルを描くためのツールであり、いろいろな教科で利用できる。方位ベクトルから見た風景をGIFやJPEGの画像データと連携して表示すれば、その方向から眺めているようにできる。外観を望遠鏡のような絵にすれば実感がわく。
 また、空間用スクロールバーは円形状または直線上に配置した空間指示用のスクロールバーであり、空間用スクロールバーを動かしながら方位ベクトルポインターを指示できる。
 例えばこのようなコントロールは、地学や地理における地形の画像データと組み合わせれば、複数の方向から見た地形の画像を取り出すのに視覚的に優れたGUI部品となる。

2) ユーザー作成コントロール+システム内蔵のコントロール
 システムに内蔵されているボタンや、スクロールバー、ラベル、チェックボックス、チョイス、リスト、テキストフィールドなどのコントロールを用いて独自のプロパティ、メソッド、およびイベントを実装したコントロールである。システムに内蔵されているコントロールの既存のプロパティ、メソッド、イベントの機能の変更も可能である。このタイプのコントロールを使うことが最も多いと考えられる。

3) システム内蔵のコントロール+市販のカスタムコントロール
 システムに内蔵されているコントロールと市販のカスタムコントロールを組み合わせて新たな機能と外観を持たせたコントロールを作成する。ほとんどコーディングする必要がなく高機能なものが容易に開発できるが、著作権の問題から再配布ができないので、開発した本人しか使用できない。このため、共同作成と共同利用を目的にした本企画には不適合なコントロールになる。

(5) どこまで部品化が可能か。
 部品をどのような教科にも適用するような汎用的なものにするほど部品内部のコーディング量が多くなり、逆にある教科のある単元に特化するほどコーディング量は減るが、汎用性がなくなる。
 つまり教科のある単元に特化するような部分は部品化が難しいといえる。
前述のようにグラフ表示のような部品は、いろいろな教科にも汎用的に利用できるので部品化しやすいといえる。
 現在部品化を進めていくには、JavaBeansの開発ツールであるBDKやJBuilderなどがあり、ActiveXコントロールの開発ツールであるVB5.OやVC++5.Oなどがあるが、部品化の技術はまだ発展途上の状態であり、公的機関での研究と試行が必要である。

(6) 教育に必要とされるコントロールの例
 教育用に必要と思われるコントロールの例を以下に示す。

1) 教育用のグラフ表示コントロール
 折れ線グラフ、棒グラフ、円グラフを表示するコントロールである。
プロパティ :横軸や縦軸の項目数、グラフの種類(たとえば温度計のような絵の棒グラフや建物の形をした棒グラフなど教育に特化したグラフ)、目盛りの種類、データの値、グラフの色、文字の名文字の大きさなど
メソッド :データ入力用のダイヤログボックスの表示、URLで指定されたデータをダウンロード、指定した部分を点滅表示など
イベント :指定したグラフ部分をクリックするとき、データ入力後に確定ボタンをクリックしたときなど

2) アニメーション表示コントロール
  教材の中でアニメーションを表示するコントロールである。
プロパティ :アニメーションの種類、アニメーションの表示位置、表示時間、
メソッド :アニメーションの表示、アニメーションの非表示
イベント :回答と正解が一致した状態でボタンをクリックしたとき、回答と正解が一致しない状態でボタンをクリックしたときなど

3) 検索コントロール
 学習者が入力した答えと正解を照合し、正答・誤答に応じてメッセージを表示するコントロールである。
プロパティ :学習者の答えのデータ、一正答時のメッセージ、誤答時のメッセージ、正解用データベースファイルの名前と格納場所
メソッド :答えの入力用のダイヤログボックスの表示、正答・誤答メッセージの表示
イベント :答えを入力した状態でボタンをクリックしたとき、

3.6.2 VRML技術との連携

 従来の教育ソフトウェアは、文字、画像、動画などの2次元のコンテンツが中心であった。しかし、インターネット上に3次元グラフィックスのコンテンツを実現する技術としてVRML(VirtualRealityModelimgLanguage)が利用されるようになってきたVRMLは、3次元空間のデータを記述するための言語であり、最近のブラウザはVRMLに対応したものになっている。
 VRMLは、背景やモデルのデータを記述するための言語であるため、背景やモデルの形状や色などを表わす数値や文字の羅列にすぎないため、VRMLだけでは複雑な動作やユーザーインターフェースを実現することができない。
 VRMLには、スグリプディングのための特別な要素が用意されているため、JavaやJavaScriPtなどの開発言語と組み合わせることにより動的でイン。
 VRML技術を用いて理科の自然現象や社会科の社会現象のコンテンツを3次元のオブジェクトに表せば、より現実に近いリアルな学習環境を提供することができるので、ゲームの手法と組み合わせることにより、エデュティンメントソフトウェアの開発も容易に行うことができる。
 VRMLとJavaによる3次元グラフィックスを用いた教育用ソフトウェアの例を以下に示す。

(1) 3次元立体放物運動シミュレーション
 投射する物体の初速度と投射する角度を入力すると、物体が放物運動するが、マウスの操作によって3次元のあらゆる方向から運動のようすを眺めることができる。
 ニュートンの運動の法則にしたがって物体の動きをJavaで記述すれば、放物運動に限らず2次元で表現してきた運動を3次元空間で立体的に見ることができる。また、運動物体だけでなくまわりの風景画も立体のオブジェクトになっているので、空間的感覚を効果的に育成することができる。

(2) 図形の学習シミュレーション
 3次元の立体的な空間から眺めることにより、よりリアルな図形の学習が可能である。様々な形の立体を画面上で簡単に作れるので、創造力を育成する上で非常に効果的なツールになる。

3.6.3 CGI技術との連携

 Javaは、クライアント側に必要なソフトウェアをすべてサーバー側から送り込んで、クライアント側で実行させるため、サーバーにかかる負担が少なくなり、クライアント側からクラスやデータの送信要求が行われた際に送信を行うだけであるから、サーバーにかかる負担が少なくなる。
 しかし通信速度の問題からサーバー側からクライアント側に送られる情報の量を小さくしなければならない。そのため、データベースのような大容量の情報をまるごとクライアント側に転送して、そこから必要な情報を検索して取り出すことは現実的ではない。
 そこでデーターべースのような大きな容量をもつ情報をサーバー側に置いたままで、クライアント側で必要な情報を検索することができるような仕組みを持たせる必要がある。
 このためには、サーバー側で動作するCGIプログラムとクライアント側で動作するプログラムの連携が必要になる。
 このようにサーバーとクライアントの連携により、大容量の教育用のデータベースにアクセスすることができる。
 さらにクライアントから得られた1次情報をサーバー側で集計して加工処理して2次情報にすることにより、その2次情報をクライアント側で検索することができるので、Web上でインタラクティブな教育環境を構築することができる。
 このようにサーバー側にもプログラムを置き、サーバーとクライアントの連携による教育ソフトウェアが開発できれば、インターネット上で全国の学校を結んだ双方向性の教育を展開することができる。

(1) インターネット版CAIソフトウェア
 サーバー側のCGIプログラム(Perl,c,Javaなどで記述)と、クライアント側のJavaプログラムを組み合わせて、インターネット上でドリル型のCAIを行うことができる。
 サーバー上に問題と正解のデータを置いておき、クライアントで発生させた乱数に対応した問題と正解をサーバーから取り寄せる。クライアント側では、送られてきた問題を提示し、学習者が入力した解答とサーバーから送られてきた正解を照合し、正答・誤答に応じてメッセージを表示するとともに、正答・誤答の結果のデータをサーバーに送り、サーバー側では、問題ごとの受検者数、正答者数・誤答者数のデータを蓄積し、過去の累積データから、正解率を計算する。クライアント側からそれらの値をグラフなどにして閲覧できる。
いろいろな教科に利用できる。

(2) インターネット版教育用検索ソフトウェア
 サーバー側に置かれたCGIプログラムや教科に関するデータベースと、クライアント側のJavaプログラムを組み合わせて、インターネット上で検索を行うことができる。
 例えば、サーバ側に植物の映像ファイルや各種の情報を置いておくと、インターネット版教育用植物検索システムが構築できる。

[目次へ戻る] [次のページへ]