GeoGebra――幾何学と代数の学習に役立つ強力な教育支援ツール
GeoGebraはJavaで記述されたクロスプラットフォーム型アプリケーションで、その実行にはJava 1.4.2以降が必要となる。GeoGebraのサイトでは各プラットフォーム別のインストーラがダウンロードできるようになっており、Linux版のインストーラは、JARファイルとライブラリの解凍およびアプリケーションランチャを作成するためのシェルスクリプトという形態で用意されている。管理者権限があれば全システムを対象としたインストールもできるが、一般ユーザの場合、同ソフトウェアは各自のhomeディレクトリだけにインストールされることになる。インストール後のGeoGebraを起動させるにはgeogebraとコマンドを入力すればいい。
GeoGebraのユーザインタフェースは、必要最小限の操作用アイコンの配置されたツールバーおよびメニューバーをメインにまとめられた、非常にシンプルな構成となっている。GeoGebraを本格的に使いこなす気があるのならば、これらメニューおよびツールバーに用意されているすべてのオプションを実際に確認してみた方がいいだろう。
GeoGebraの作業用スペースは、Algebra(代数)ウィンドウとGeometry(幾何)ウィンドウという2つの縦型フレームに分かれており、これら2つのフレームの下部には小さなコマンド入力用フィールドが設けられている。このうち描画した幾何学図形が表示されるのがGeometryウィンドウであり、各種オブジェクトを配置する際のガイドとなる座標軸とグリッドは、ユーザによる設定変更に対応している。一方のAlgebraウィンドウには幾何学図形を数式的に表現した情報が表示され、図形として直接表示されない変数などはこのウィンドウで操作することになる。またGeometryウィンドウ側で非表示化した図形も、Algebraウィンドウにはその対応する情報が表示され続ける。最下段にあるコマンド入力用フィールドでは、目に見える形の図形オブジェクトおよび直接表示されない変数などのオブジェクトを作成するためのコマンドを実行することができる。
簡単な実行例
GeoGebraでは具体的に何をどのように操作するのかを確認するため、簡単な図形を描画してみよう。例えば、三角形の頂点にA、B、Cというラベルを付けて頂点Bを直角にするという操作は次のステップで進行する。
- Geometryウィンドウに移動し、ツールバーにあるポイント(point)アイコンを選択してからGeometryウィンドウ上の2つの点をクリックし、それぞれAおよびBという名称のポイント(点)を作成する。
- 2つのポイントを結線するため、ツールバーのライン(line)ドロップダウンにある線分(line-segment)アイコンを選択して、ポイントAとBという順番でクリックする。
- ツールバーにある垂直線(perpendicular line)アイコンを選択してから線分ABをクリックした後、再度ポイントBをクリックして、この線分ABに対する垂直線をポイントBから引き出す。
- ポイント(point)アイコンを選択し直してから、先の垂直線上の任意の部分をクリックし、そのポイントをCという名称にする。
- ライン(line)ドロップダウンにある多角形(polygon)アイコンを選択し、ポイントA、B、Cという順番でクリックすることで、閉じた三角形を完成させる。
- ステップ3で作成しておいた垂直線を右クリックし、Show Objectオプションをオフにすることで、この垂直線をGeometryウィンドウ上で非表示化する。これにより画面上には直角三角形ABCだけが残される。
Geometryウィンドウで作成した図形は、それを数字と変数で表現したものがAlgebraウィンドウにも表示される。GeoGebraでは、これらすべてはオブジェクトとして扱われる。一部のオブジェクト群は独立した存在だが、相互に依存した関係に置かれる従属オブジェクト群も存在している。例えばポイントAとBを作成してからこの2点をつなぐ線分cを作成した場合、AとBは独立オブジェクトだが、cは従属オブジェクトとなる。表示中の独立オブジェクトに関しては、AlgebraおよびGeometryウィンドウ上にてユーザによる変更ができる。一方の従属オブジェクトについては、依存先のオブジェクトの変更に応じて自動的に変化することになる。
代数および幾何オブジェクトとそれらを示す数式表現用の変数は、コマンドライン形式の入力ツールを使って作成することもできる。例えばコマンド操作で1つの線分を描画するには、次の手順を実行すればいい。
- 変数mを宣言してそこに数値5を代入するための操作を、コマンドフィールドにて「m = 5」と入力することで行う。
- 同様に「b = 10」と入力して、変数bの宣言と数値10の代入を行う。
- 次に「y = m * x + b」と入力する。これにより代数的には「y = 5x + 10」と表現される直線がGeometryウィンドウ側に描画される。
この方法で描画された直線を規定しているmとbの値は、Algebraウィンドウ側で制御されている。ここでのmおよびbは独立した変数なのでユーザによる変更が可能であり、そうした変更は、Algebraウィンドウでこれらの変数を示している行をダブルクリックすることで行える。実際にmおよびbの値を変更してみると、これらが示す直線も、そうした変更を反映するように自動的に描き直されることが確認できるはずである。
こうした操作では、より複雑な図形も描画することができる。例えば平行四辺形を描画するには、下記の一連のコマンドをフィールドに入力すればいい。
A = (1,1) B = (4,5) l = line[A,B] C = (7,5) m = line[C,l] n = line[B,C] o = line[A,n] D = intersect[m,o] polygon[A,B,C,D]
その他のオプションと機能の利用法
GeoGebraにはConstruction Protocolというウィンドウが用意されており、そこには現在表示中の図形が作図され終わるまでの各ステップが表示されるようになっている。Construction Protocolウィンドウを表示するには「View」→「Construction Protocol」を選択すればいいが、このウィンドウには作図ステップを確認するためのナビゲーションボタンも表示される。またPlay機能を使うと、各ステップの実行間隔をユーザ指定した上で、当該図形の作図ステップを自動的に再実行させることができる。このConstruction Protocolウィンドウに表示される情報は、HTMLページにエクスポートすることも(画像の有無を指定可能)、作図ステップのサマリーだけを印刷させることも可能である。
GeoGebraは、1つまたは2つの変数で示される関数をプロットする機能も有している。例えば、tan(x)の関数グラフを描画したければ、入力フィールドに「y = tan(x)」とだけ入力すればいい。同様にxおよびyの2変数で表現される関数についても、それを示す数式を入力フィールドに指定するだけであり、例えば「x^2 + y^2 = 25」と指定すると正円が描画される。GeoGebraでは三角関数を始め、一般に使用される算術および微積分用の関数がサポートされている。
GeoGebraで作成した図形については、エクスポート用の様々なオプションが利用できる。その1つは通常の画像ファイルとしてエクスポートする機能である。その他に、構成データも含めてHTMLファイルにエクスポートすることも可能で、その場合は図形の表示と各種操作を行うためのアプレットも作成される。このアプレットにはアプリケーション本体と同等の機能が装備されているが、図形の各種操作といったアプレット固有の機能については、HTMLページ上で使用するかしないかの設定も行える。この機能が特に役立つのは、数学の授業でのインタラクティブな教材として使用するダイナミックワークシートをGeoGebraを利用して作成する場合であろう。ここで言うダイナミックワークシートがどのようなものであるかは、実際のサンプルで確認して頂きたい。
GeoGebraアプレットの挙動はJavaScript APIを介して制御できるが、これを使用するとGeoGebraアプレットで描画されるオブジェクトのプロパティの取得および設定も簡単に行えるようになる。このAPIでは、ダイナミックワークシート、変数操作、幾何学図形のWebベース描画やテスト用モジュールの作成といった処理も行える。その他にもGeoGebraの機能は、カスタマイズしたコマンドシーケンスをユーザ独自のツールやマクロとして追加することで拡張することもできる。
GeoGebraに装備されている機能の充実ぶりは、商用アプリケーションのThe Geometer's Sketchpadに匹敵するレベルに仕上がっている。逆にGeoGebraを基準にして比較すると、同じくGPLライセンス下でリリースされているKigおよびKmPlotなどのアプリケーションにおいて有用な機能の多くが実装されていないことを再確認させられることになるはずだ。
Murthy Rajuは、インドのRishi Valley Schoolにてコンピュータサイエンスを教えるかたわら、Linuxベースの小規模なコンピュータネットワークも管理している。またシステム/ネットワーク管理者およびテクニカルサポートとして、Linux、Unix、Windowsプラットフォームで使用する各種のオープンソースおよび商用製品を扱ってきた7年間の経験も有す。