「化学教育ジャーナル(CEJ)」第8巻第1号(通巻14号)発行2004年 9月30日/採録番号 8−4/2004年 8月 2日受理
URL = http://www.juen.ac.jp/scien/cssj/cejrnl.html

インターネットを活用した回帰分析と作図の自動サービス −Java Applet形式−

芦田実,五十嵐真由美,田口俊之,務台ひろみ
埼玉大学 教育学部
〒338-8570 埼玉県さいたま市桜区下大久保255
E-mail: ashida@post.saitama-u.ac.jp


Automatic Services of Regression Analysis and Drawing
by Using Internet - Java Applet Type File -


Minoru Ashida*, Mayumi Igarashi, Toshiyuki Taguchi, and Hiromi Mutai
Faculty of Education, Saitama University
255 Shimo-ohkubo, Sakura-ku, Saitama, Saitama, 338-8570 Japan

1.はじめに
 本研究室では,インターネットを利用して学外との双方向の交流を目指し,利用者の立場に立ってそのニーズに応えるためのホームページ[文献1]を試作している.そのために,質問箱を開設したり,回帰分析などの計算・作図サービス[文献2]や溶液の濃度計算と調製方法のサービス[文献3]を開始している.質問箱は最近2ヶ月間で閲覧数(約5000回)や質問数(約40件)が急増して困り果てているが,その他のサービスは利用者がまだ少ない.そこで,多くの人に知ってもらい,また利用してもらうために,本報告で紹介することにした.
 理科の実験(小学校〜大学)中に実験値が変化する様子を見たいことや,実験値が正しいか確認したいことがある.このような場合に,インターネットなどを利用して瞬時に作図できれば非常に便利である.そこで,cgi(perl)/Java Applet(ダウンロード不可)またはJava Appletのみ(ダウンロード可能)を使用して,自動的に直線の回帰分析を行い,作図するプログラムを開発した.コンピュータに弱い人でも何の予備知識もなしに使用できる.また,実験後の計算と作図,夏休みの自由研究などにも使用できる.
 前報[文献2]のExcel形式において,表形式(後述参照)とCSV形式(日本語入力サポート,後述参照)のプログラムを作成した.データ系列は,それぞれ1〜3本線である.本報告では最初に,これと同様な働きをするcgi/Java Applet形式のプログラムを作成した.しかし,これらのプログラムでは横軸データが共通であった.複数のデータ系列を1つの図にまとめる場合,横軸が共通だと都合の悪いことがある.例えば,実験ミスでデータがいくつか欠落した場合に,実験点がずれる恐れがある.また, 3本線では足りないこともあると思われる.さらに,異なる物理・化学量をプロットして,変化の傾向を比較したいことがある.そこで,データ系列を増やして6本線にし,各々の横軸を独立させて縦軸・横軸を6組描くプログラム(CSV形式,Java Appletのみ)も作成することにした.

2.利用者の操作方法
 前報[文献2]のExcel形式と同じく最初に,表形式かCSV形式か,データ系列は何組(何本線)か,Java Applet用の計算メニュー(図1)を選択する.cgi/Java Applet形式を選んだ場合には,初期値(図2図3)が表示されるので,修正・削除して送信する.cgi/Java Appletの表形式を選択した場合,数値は負号,整数部1桁,小数点以下4桁(全部で7文字)まで半角文字(− 0〜9 A〜Z a〜z 空白)で入力できる.数値がない枠は初期値を削除(DEL)する.図の名前,軸名は16文字まで入力できる.最後に送信ボタンをクリックすると,作図画面(図4)が自動的に表示される.作図画面はブラウザのメニューコマンドから印刷が可能である.また,キーボードのPrint Screen (COPY)キーを押せば,画面をコピーできる.画像処理ソフトを起動すれば,それを切り貼り,編集(拡大・縮小)できる.さらにワープロ文章にも挿入できる.
 cgi/Java AppletのCSV形式を選択した場合,数値は半角コンマで区切って,半角英数字で10文字×50値まで入力できる.例えば,5.432E-1や1.234e5のような指数形式での入力も可能である.ただし,半角E(またはe)の後ろに半角空白を入れるとエラーになる.目盛の手動指定を選んだときは,最小値,および間隔を半角5文字以内で入力する.入力した数値が目盛や数値オーダーと合っていない場合には,数値の補正倍率とゼロ調整を半角8文字以内で入力する.補正後の数値=入力数値×補正倍率+ゼロ調整となる.図の名前は全角文字で30文字まで,縦軸と横軸の名前,記号,数値オーダー,単位は,全角文字で20文字まで入力できる.凡例(実験点の説明)は,縦軸用の文字のうち全角コンマよりも前の部分,または最初から全角12文字までを使用している.最後に送信ボタンをクリックすると,作図画面(図5)が自動的に表示される.
 Java Appletのみのプログラムを選択した場合は,zip形式の圧縮ファイルをダウンロードして解凍すると多数のファイルができる.作成されたCaljav6cフォルダ内のjavap100.htmlファイルをダブルクリックして,Java Appletプログラムを実行する.このプログラムはCSV形式で作成した.データ系列は1〜6組(1〜6本線)の範囲で可変できる.すなわち,不要なデータ系列の計算値,実験点,縦・横軸,凡例などを非表示にすればよい.また,[全部消去]ボタンをクリックすれば,図の名前,縦軸・横軸の名前,数値などを一括消去できる.初期値(図6)を修正・削除し,チェックボックスの選択を変更し,[描画実行]ボタンをクリックすると図7が再描画され,回帰分析の結果の傾き,切片が青色で表示される(図6).このプログラムではcgiを使用していないので,字数の制限はcgi/Java Applet形式よりもゆるい.図の名前は全角文字で45文字くらい表示できる.縦軸と横軸の名前,記号,数値オーダー,単位は,字数による位置の調整をしていないので,全角文字で20文字までにするほうが望ましい.凡例はcgi/Java Applet形式と同様,全角12文字で打ち切られる.数値の桁数には,あまり制限がないようであり,倍精度実数や整数の最大桁数まで入力可能と思われる.さらに,1つのテキストエリア当たりCSV形式の実験点が50値を超えるとエラーが発生し,Javaプログラムが停止してしまう.[数値記憶]ボタンをクリックすると,テキストフィールドやテキストエリアに入力されている実験値などを,メモリー(配列変数)に一時的に記憶することができる.その後に,[数値読出]ボタンをクリックすると,メモリーに記憶していた実験値などを,テキストフィールドやテキストエリアに再び読み出すことができる.その他の操作方法は,cgi/Java Applet形式とほぼ同様である.

3.計算例・応用例
 図8にJava Appletのみのプログラムで回帰分析した例を示す.比較のために,同様のデータをExcelで回帰分析した例を図9に示す.Javaの場合には横軸(X0〜X5)が独立しており,縦軸(Y0〜Y5)と組になっている.したがって,実験途中でデータの欠落があっても問題なく計算・作図できる.しかし,市販のExcelソフトウェアの場合は,横軸(X)と縦軸(Y)が共通である.このため,データ(Y)に欠落が生じると,そこでプロットを結ぶ線が切れてしまう.これを防ぐには前報[文献2]のように計算値をわざわざ別行にとるしかない.
 図10にJava Appletのみのプログラムによる応用例を示す.6組のデータをうまく利用すれば,このような曲線を描くことも可能である.また,1組のデータではプロットを50点しか描けないが,6組を連結すれば50点/組×6組=300点のプロットを描くことも可能である.ただし,回帰分析は各組ごとに実行するので,その部分の傾きや切片を求めることが可能である.

4.プログラムの開発方法
4.1 プログラムの概要
 最初に,cgi/Java Applet形式のプログラムの作成方法,利用者の操作方法およびサーバーによる実行内容について簡単に述べる(図11,CSV形式).ここで使われた用語や作成方法等の詳細については,後述を参照されたい.前報[文献2]と同様に,パソコンでJavaプログラムを作成する(基本ファイル).これを解読し,データ(数値も全て文字として定義)を特殊タグ(文字)に置換する(ダミーファイル).別に,cgiプログラムを作成し,ダミーファイルとともにサーバーにアップロードする.サーバー上でcgiプログラムが,利用者のブラウザ(Internet ExplorerやNetscape Navigator)からデータを文字として受信し,数字に変換して回帰分析し,計算値等を文字に再び変換する.さらに,ダミーファイルを読み込み,特殊タグを文字データで再置換し,再生させたJavaプログラムをサーバーのハードディスクに保存し,ブラウザに返信する.Javaプログラムは,ブラウザに返信された後に,自動的にプログラム中のデータを読み込み作図する.
 Java Appletのみの形式では,パソコンで作成したJavaプログラム(多数の基本ファイル,HTMLファイル)を一つにまとめて圧縮し,サーバーにアップロードする(図12).この圧縮ファイルを利用者がダウンロードし,解凍すると多数のファイルができる.作成されたフォルダ内のjavap100.htmlファイルをダブルクリックして,Javaプログラムを実行する.

4.2 使用したソフトウェア
 使用したOSはMicrosoft社のWindows 98,2000 Professional,ME,XP home editionである.Java Appletは多くの書籍[文献4−9]を参考にして,Borland社のJBuilder5 Personalまたは6 Professionalで作成した.実行形式のバイナリーファイルの解読・編集にはフリーソフトウェアStirling 1.31 [文献10]を使用した.cgi(perl)プログラムは種々の書籍[文献11-13]を参考にして開発し,(株)ジャストシステムの一太郎12やWindowsに付属のメモ帳で作成した.フリーソフトウェアFFFTP 1.88 [文献14]で種々のファイルをサーバーにアップロードした.日本語の処理にはフリーソフトウェアjcode.pl 2.13 [文献15]と自作の辞書ファイル[文献16]を使用した.HTMLファイルはIBM社のホームページ・ビルダー2001[文献17,18],またはマクロメディア(株)のDreamweaver MX[文献19]で作成した.縦軸の半角英数字用の画像やその他の種々の画像は,Adobe社のPhotoshop 4で作成した.多数のJavaファイルの圧縮にはフリ−ソフトウェア +Lhaca 1.18 [文献20]を使用した.

4.3 数値データの入力形式
 前報[文献2]のExcel形式と同様に,cgi/Java Applet形式のプログラムでも最初に,利用者が数値データを1つずつ枠内に入力する表形式で作成した(図2).多数のデータを入力するのは大変なので,データ数を19組までとした.さらに,横軸,縦軸に異なるデータ系列を1〜3本入力できるプログラムを作成した.なお,サーバー上のcgiプログラムは,利用者のブラウザから数値データを半角文字(Ascii code)として受け取り,cgiプログラム中で数字(倍精度実数や整数)に変換している(次のCSV形式も同様).
 次に,数値データを半角コンマで区切って(CSV形式),切り貼りで入力できるように改良した(図3).ディスクに保存した多数のデータ(コンマを除いて半角数字で10文字×50値×3本線まで)も容易に入力できる.また,数値の補正倍率とゼロ調整の入力欄を追加した.入力した数値が目盛や数値オーダーと合っていない場合に,これらを半角数字で入力すると,補正後の数値=入力数値×補正倍率+ゼロ調整の式で補正できる.これにより,回帰分析の前に圧力や温度等の単位の変換,AD変換値の物理量への換算等を可能にした.さらに,縦軸・横軸の目盛を自動か,または手動で設定できるように改良した.自動は前述の表形式のときと同じ方法であり,Javaプログラム中で実験値の最大値と最小値を調べて,実験点を全て表示するように目盛を設定する.手動では目盛の最小値と間隔を指定でき,図を縮小したり,図の一部分を拡大したりすることができる.
 Java AppletのみのプログラムはCSV形式で作成した(図6).横軸データを独立させ,縦軸データと対(組)になるように改良した.コンマを除いて半角数字で約9文字×50値×6組まで入力できる.この改良でデータ量(8kB以上)が非常に増加したため,Excel [文献2]や cgi/Java Applet方式では実行不可能になった.そこで, ダウンロード専用の方式に変更した.

4.4 文字データの入力形式
 前報[文献2]のExcel形式と同様に,表形式のcgi/Java Appletプログラムでは,利用者が図名や軸名等の文字を半角英数字(Ascii code)のみで入力するように作成した.CSV形式のプログラムでは,全角文字(JIS第1・2水準,NEC特殊文字,NECとIBMの拡張文字)のみを使用するように変更した.利用者が種々の文字code(JIS,シフトJIS,EUC等)で入力する可能性があるので,cgiプログラムで受け取った全角文字codeを,インクルードしたjcode.pl[文献15]で最初にシフトJIS codeに統一(変換)する.その後,自作の辞書ファイル(表1)を使用してJavaの実行ファイルの保存形式(1〜3byteのUTF-8前進code[文献16])に変換した.数千個の全角文字codeの中から目的の文字codeを短時間で捜せるように,自作の辞書ファイルを2つに分けた.最初に使用する辞書には記号,英数字,ひらがな,カタカナ,ギリシャ文字,良く使用する物理・化学量に関する漢字が含まれている.見つからない場合,次に使用する辞書にはMS IME 2000やATOK 15から入力できる全ての漢字codeが含まれている.さらに,見つかった漢字を最初の辞書に自動的にコピー(自己学習機能)して,処理速度を向上させた.なお,1つの入力場所に全角文字と半角文字を混ぜて入力するとエラーを生じると思われるが,これを処理するサブルーチンは作成していない.また,日本語の漢字codeにない全角文字(自作の外字やUnicodeの外国文字)は図中で中点(・)に変わる.
 Java AppletのみのプログラムはCSV形式で作成した.後述のようにダウンロード専用としたので,文字の入力はJavaがサポートしている.それゆえ,全角文字と半角文字を混ぜて入力することも可能である.また文字codeの変換なども必要ない.

4.5 数値データの処理
 JBuilderでJava Appletプログラムを作成すると,ソースファイル(拡張子java),バイナリー形式の実行ファイル(拡張子class,基本ファイル),実行ファイルを呼び出すためのHTMLファイル(拡張子html)等ができる.数値データはソースファイル中で全て半角文字(Ascii code)で定義しておき,利用者のブラウザでJavaプログラムを実行中にこれを読み込んで数値(倍精度実数,整数)に変換するようにした.この方法だと,基本ファイル中でも数値データがAscii codeで保存されているので,Stirling [文献10]で簡単に捜すことができ,特殊タグで容易に置換(ダミーファイルを作成)することができた(図13).また,専用の置換プログラムをcgiで作成すれば,データを特殊タグで自動的に置換することも可能である.開発中は,Javaおよびcgiプログラムの動作確認を何度も行う必要があり,そのたびにダミーファイルを作成し直す必要があるので,専用の置換プログラムを作成しておくと非常に便利である.なお,ここでいう特殊タグとは,cgiプログラムが利用者から受け取ったデータや計算値等で再置換するときの目印となる記号(半角文字を<>で囲んだもの)である.
 回帰分析の方法(y=ax+b形式の最小二乗法で傾きaと切片bを決定する)は,多くの書籍[文献21,22]に詳しく載っているので,本報告では説明を省略する.回帰分析はcgiプログラムで行っている.しかし,開発時には動作確認のため,Javaプログラムでも実行した.
 Java Appletのみのプログラムではcgiを使用していないので,特殊タグなどの置換処理は必要ない.テキストフィールドに入力されたCSV形式の半角文字をコンマの位置で切り分けて,数値(倍数度実数)に変換するようにしている.

4.6 縦軸,横軸,凡例の作図
 Javaでは縦軸用の半角英数字を,反時計回りに90度回転させて表示することができない.そこで,photoshopの画面に色を指定してテキスト(半角英数字)を入力し,画面を回転させて文字画像(図14)を作成した.表形式のcgi/Java Appletプログラム中で1文字ずつ対応する半角文字の画像部分を切り張りして縦軸名を描いた(図4).横軸の半角文字はそのまま表示し,凡例(実験点の説明)は図枠の上外に表示した.
 CSV形式のプログラム中では,全角文字を1文字ずつ上から下に表示して縦軸名を描いた(図5).数千個の全角文字(×3本線(3色))の画像を作成して,切り張りすることは不可能なためである.縦軸の名前(記号を含む)とその単位(数値オーダーを含む)は,全角コンマで区切って入力するように指定している.
 このプログラムではコンマも表示したが,見難いのでJava Appletのみのプログラムでは全角空白に置き換えた.さらに,全角コンマよりも前の部分を用いて,実験点と重ならないように図枠の上外(cgi/Java Appletプログラム)または下外(Java Appletのみのプログラム)に凡例を表示した.
 Java Appletのみのプログラムでは,縦軸のうち最初の3つを左側に,残り3つを右側に描画した(図7).さらに,縦軸ごとに表示・非表示を指定できるようにした.数値オーダー(10±X)は軸の上方にE±Xの形式で表示した.横軸についても最初の3つを下側に,残り3つを上側に描画した.さらに,横軸ごとに表示・非表示を指定できるようにした.数値オーダーも軸の右方にE±Xの形式で表示した.

4.7 計算値と実験点の作図
 先に,回帰分析した計算値をグラフィック命令(直線)で結んで全部作図した.次に,実験点(cgi/Java Appletプログラムでは●,▲,■を用い,Java Appletのみのプログラムではさらに○,▼,◆を追加した)をグラフィック命令(だ円,多角形,長方形など)で作図した.この作図順序ならば,実験点の上に直線が描かれて,体裁が悪くなる心配がない.
 Java Appletのみのプログラムでは,計算値と実験点の表示・非表示を指定できるように,さらに実験点の図形と色を指定できるように改良した(図6図7).色についてはカラー(彩色)とモノクロ(白黒)も指定できる.さらに,これらの色指定は縦・横軸と凡例にも連動している.なお,縦軸・横軸の目盛を手動で指定した場合には,直線や実験点が図枠からはみだすことがある.しかし,そこに実験点があることを明示したほうが良い場合もある.cgi/Java Appletプログラムでは,これについて対策をとっていなかったが,Java Appletのみのプログラムでは表示・非表示を指定できるように改良した.

4.8 Javaプログラムの実行方法
 最初にサーバーでcgiプログラムを実行中に,Javaプログラムを呼び出して利用者のブラウザに実行させるというcgi/Java Appletプログラムの方法を述べる.Java Appletプログラムを作成したときに,JBuilderで付加的に作られたHTMLファイル(拡張子html)の一部(実行ファイルを呼び出すタグ)をcgiプログラムに組み込んで(フォルダアドレスとファイル名を変更),ブラウザに送信する方法である.
 Java Appletのみのプログラムでは,サーバーからパソコンのハードディスクの適当なフォルダに,圧縮されたJavaプログラムを利用者がダウンロードする.これを解凍し,作成されたjavap100.htmlファイルをダブルクリックすれば,パソコン内でJavaプログラムが実行できる.

5.おわりに
 教育学部のサーバーだけでなく,学外のサーバーにも計算・作図プログラムを載せてサービスを開始した[文献1].学校の授業や自由研究等でも利用できよう.今後は利用者の希望を調査し,それに基づいたサービスも提供する予定である.なお,Java Appletのみのプログラムで次のような欠点があった.プロットを非表示にしてグラフを作成すると計算値の直線が滑らかにつながらない.入力した数値をファイルに保存できない.目盛り設定を自動にすると,目盛り間隔が同じ大きさでも原点の位置がずれて,直線が比較し難いことがある.これらについては今後できるだけ改良していきたい.

参考文献など(URLは全て2004年8月2日時点のものです)
[文献1]トップページ http://www.e-sensei.ne.jp/~ashida/index.htm
および http://www1.edu.saitama-u.ac.jp/users/ashida/index.htm
および http://www.saitama-u.ac.jp/ashida/index.htm
[文献2] 芦田実ほか『インターネットを活用した回帰分析と作図の自動サービス-Excel形式-』化学教育ジャ−ナル(CEJ),第7巻第1号(通巻12号),採録番号7-4(2003)
[文献3] 芦田実ほか『溶液の濃度計算と調製方法のインターネットによる自動サービス −塩化ナトリウム水溶液−』化学教育ジャーナル(CEJ),第7巻第1号(通巻12号),採録番号7-5(2003)
[文献4] 高橋和也ほか『Java逆引き大全500の極意』(株)秀和システム
[文献5] 田中秀治『Jbuilder5で入門!Javaプログラミング』ソーテック社
[文献6] 松浦健一郎,司ゆき『はじめてのJBuilder6』ソフトバンク(株)
[文献7] 赤間世紀『Java2による数値計算』技報堂出版(株)
[文献8] 青野雅樹『Javaで学ぶコンピュータグラフィックス』(株)オーム社
[文献9] 中山茂『Java2グラフィックスプログラミング入門』技報堂出版(株)
[文献10] http://www.vector.co.jp/soft/win95/util/se079072.html
[文献11] 藤田郁,三島俊司『CGI&Perlポケットリファレンス』(株)技術評論社
[文献12] 結城浩『Perlで作るCGI入門 応用編』ソフトバンク(株) http://www.hyuki.com/
[文献13] 笹木望,藤崎真美『最新HTML&CGI入門』エーアイ出版(株)
[文献14] http://www2.biglobe.ne.jp/~sota/
[文献15] ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
[文献16] http://ash.jp/ash/src/codetbl/ (unitbl21.htm,unitbl22.htm)
[文献17] 『ホームページ・ビルダー2001 ユーザーズ・ガイド』日本アイ・ビー・エム(株)
[文献18] アンク『HTMLタグ辞典』翔泳社
[文献19] 『Dreamweaver Mxファーストステップガイド』マクロメディア(株)
[文献20] http://www.vector.co.jp/soft/dl/win95/util/se166893.html
[文献21] 国井利康ほか『FORTRAN数値計算とプログラミング』共立出版(株)
[文献22] 中村明子,伊藤文子『詳解BASIC演習』共立出版(株)          元の本文位置に戻る

トップへ  CEJ, v8n1目次へ