「化学教育ジャーナル(CEJ)」第7巻第1号(通巻12号)発行2003年 9月20日/採録番号 7-4/2003年 7月19日受理
URL = http://www.juen.ac.jp/scien/cssj/cejrnl.html



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

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


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


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

1.はじめに
 本研究室では,インターネットを利用して学外との双方向の交流を目指し,利用者の立場に立ってそのニーズに応えるためのホームページ[文献1]を試作している.その目的の1つとして,ホームページの中に質問箱(掲示板)を開設している.しかし,難しい質問がくると調査や回答の作成に時間がかかる.また,質問がくるたびに回答しなければならないので,質問箱の維持にはかなりの労力と忍耐を要する.そこで質問箱とは別に,もっと簡単にできるサービス方法を考えた.それは,ホームページを載せているサーバーに自動的に実行させる方法である.
 理科の実験(小学校〜大学)では,時間的に変化する現象を測定することがある.このような場合,実験中に測定値が変化する様子をできるだけ早く図にして見たいことが多い.また,測定値が正しいか否か,図にして確認したいことがある.しかし,リアルタイムに図を描いたり,目盛が足りなくなって図を描き直すには時間が足りないことが多い.このような場合に,インターネットを利用して瞬時に作図できれば非常に便利である.そこで,CGI(perl)を使用して,自動的に直線の回帰分析を行い,作図(Excel形式のファイル)するプログラムを開発した.忙しい現場教師やコンピュータに弱い人でも何の予備知識もなしに使用できる.また,Excelの使い方を知らなくても,それを意識する必要もなく使用でき,データを送れば直ちに図が返送される.また,実験後の計算と作図,夏休みの自由研究などにも,いつでも(夜中でも)必要なときに使用できる.
 インターネットから一度パソコンに読み込んだ後は,Excelのファイルとしてデータや軸名等を編集したり,ディスクに保存することも可能である.また,保存したファイルをExcelに読み込めば,2度目からはパソコンの中だけ(オフライン)でもExcelファイルとして使用できる.さらに,ここで紹介するような方法は,Excelだけでなく,Java言語で作成されたアプリケーション等にも応用できる.それゆえ,応用範囲が広く,回帰分析以外にも様々な利用方法があると考えられる.
 本研究室のホームページ[文献1]で,このサービスをすでに開始している.しかし,あまり知られていないためか,利用者は少ない.そこで,多くの人に知ってもらい,また利用してもらうために,本報告で紹介することにした.なお,インターネットで検索したが,ここで紹介するような自動サービスは他には見つからなかった.

2.利用者の操作方法
 データの入力形式には,数値を1つずつ枠内に入力する表形式と数値を半角コンマで区切って入力するCSV形式(切り貼り可)がある.一連の実験点(データ系列)を結んだ線は1枚の図中に1本,2本または3本描くことができる.なお,これらの詳細については後述の3.3以降を参照されたい.表形式かCSV形式か,データ系列は何組(何本線)かについて,Excel用の計算メニュー(図1)を選択する.初期値(図2図3)が表示されるので,修正・削除して送信する.表形式を選択した場合,数値は負号,整数部1桁,小数点,小数点以下4桁(全部で7文字)まで半角英数字(− 0〜9 E e 空白)で入力できる.例えば,-6.543E-21や1.234e5のような指数形式での入力も可能である.ただし,10の?乗用の半角E(またはe)の直後に半角空白を入れるとエラーになる.数値がない枠は初期値を削除(DEL)する.図の名前,軸名は16文字まで半角文字(− 0〜9 A〜Z a〜z 空白など)で入力できる.
 CSV形式を選択した場合,数値は半角コンマで区切って入力する.コンマを除いて半角英数字で10文字×50値まで入力できる(指数形式可).実験点が図枠からはみ出すような場合には,目盛を手動設定で変更できる.目盛の手動設定を選んだときは,最小目盛,最大目盛および目盛間隔を半角5文字以内で入力する.入力した数値が目盛や数値オーダーと合っていない場合には,数値の補正倍率とゼロ調整を半角8文字以内で入力する.補正後の数値=入力数値×補正倍率+ゼロ調整となる.例えば,温度をセルシウス温度(℃)で入力して,絶対温度(K)に変換してから計算・作図したい場合には,補正倍率に1,ゼロ調製に273(または273.15)を入力する.図の名前は全角文字で30文字まで入力できる.縦軸と横軸の名前(記号,数値オーダー,単位を含む)は全角文字で20文字まで入力できる.凡例(実験点の説明であり,変数名を含む)は全角文字で12文字まで入力できる.なお,図の名前,軸の名前,凡例の書き方は利用者の自由である.
 データを入力した後に,送信ボタンをクリックすると,操作メニュー(図4)が表示される.Internet ExplorerとExcelが両方ともインストールされている場合には,「ファイル(読込/ダウンロード)」を左クリックすると,Internet Explorer上にExcel形式の作図画面(図5図6)が自動的に表示される(文字化けする場合は,次のInternet Explorerのみの場合を実行する).ここでは,Excelの命令がそのまま使用できる.例えば,Excelのファイルメニューから印刷や保存ができる.編集メニューも使用できる.必要なら,縦軸・横軸の名前,タイトルや凡例をクリックすれば,全角文字(日本語,英数字)に変更できる.縦軸・横軸の目盛の値もクリックすれば変更できる.また,ドラッグ・ドロップすれば凡例の位置も変更できる.何か変更したら必要に応じて保存する.なお,ブラウザのボタン[←]で入力画面に戻れば,一度入力した値を再利用できる.
 Internet Explorerのみの(文字化けする)場合には,「ファイル(読込/ダウンロード)」を「右クリック」する.次に,表示されたメニューの中から「対象をファイルに保存(リンクをディスクにダウンロード)」をクリックする.この場合は,後からExcelを入手すれば(起動して読み込めば),Excelのファイルとして使用できる.
 Netscape NavigatorとExcelが両方ともインストールされている場合には,「ファイル(読込/ダウンロード)」を「右クリック」する.次に,「リンク(ターゲット)に名前を付けて保存」をクリックする.その後にNetscape Navigatorの「ファイル」からExcelを使用して開けば(またはExcelを起動して読み込めば),Excelのファイルとして使用できる.
 Netscape Navigatorのみの場合には上と同様に,「ファイル(読込/ダウンロード)」を「右クリック」する.次に,「リンク(ターゲット)に名前を付けて保存」をクリックする.後からExcelを入手すれば,Excelのファイルとして使用できる.
 作図画面はブラウザのメニューコマンドから印刷が可能である.また,キーボードのPrint Screen(COPY)キーを押せば,画面を作業用のクリップボードにコピーできる.画像処理ソフトを起動すれば,それを貼り付け,編集(拡大・縮小),保存できる.さらに,ワープロ文章にも挿入できる.
 再生ファイルはサーバーで複数のものをローテーションして使用(上書き保存)している.自動サービスを多数回使用していると,再生ファイルの名前が同じになって,新しい図が見えないことがある.これは利用者のパソコンのハードディスクに同名の古いファイルが保存されているためである.このようなときは,ツール→インターネットオプション→ファイルを削除(編集→設定→キッシュをクリア)して再読み込みする必要がある.
 普通の使い方では他人の計算・作図画面を読めないようにしている.しかし,パソコンやインターネットに少し詳しい人なら,簡単に他人のExcelファイルを読めると思われる.そこで,重要なデータを計算・作図する場合には,パソコンに読み込んだ(ダウンロードした)Excelファイルをパソコンの中(オフライン)だけで再利用することを,利用者にお願いする.

3.プログラムの開発方法
 以下,本報告と類似のプログラムを作成するときに参考になりそうなことを述べる.ただし,ソースリストが載せられないので,極端に詳しいことは省略する.主に作成の方法(考え方)について述べる.本報告に述べられている以上に詳しいことを知りたい人はE-mailで連絡されたい.できるだけ相談に応じるつもりである.
3.1 プログラムの概要
 最初に,プログラム(CGI)の作成方法,サーバーによる実行内容と利用者の操作方法の関係について簡単に述べる(図7).ここで使われた用語や作成方法等の詳細については,後述を参照されたい.
 パソコンでExcelファイルを作成する(基本ファイルと呼ぶ).基本ファイル中のデータは,半角文字がアスキーコード,数値がIEEE後退コード,漢字等の全角文字がUTF-16後退コードになっていると推定される.これらを解読し,データを特殊タグ(半角文字)に置換する(ダミーファイルと呼ぶ).別に,漢字コード辞書ファイルとCGIプログラムを作成し,ダミーファイルとともにサーバーにアップロードする.サーバー上でCGIプログラムが,利用者のブラウザ(Internet ExplorerやNetscape Navigator)からデータを文字として受信する.これを数字に変換して回帰分析し,その結果や数字をIEEEコードに変換する.また,図の名前や縦軸・横軸の名前が全角文字ならば,漢字コード辞書を用いてそれをUTF-16後退コードに変換する.さらに,ダミーファイルを読み込み,特殊タグをデータで再置換する.これにより再生したExcelファイルをサーバーのハードディスクに保存する.利用者のブラウザの違いとExcelソフトウェアの有無によって異なる操作メニューをブラウザに送信する.メニューが選択されたらExcel再生ファイルをブラウザに返信する.

3.2 使用したソフトウェア
 使用したOSはMicrosoft社のWindows 98,2000 Professional,ME,XP home editionである.Excelの基本ファイルはMicrosoft社のExcel 2000で作成した.基本ファイル(バイナリーファイル)の解読・編集にはフリーソフトウェアStirling 1.31 [文献2]を使用した.CGI(perl)プログラムは種々の書籍[文献3〜5]を参考にして開発した.(株)ジャストシステムの一太郎12やWindowsに付属のメモ帳で作成し,フリーソフトウェアFFFTP 1.88 [文献6]でサーバーにアップロードした.日本語の処理にはフリーソフトウェアjcode.pl 2.13 [文献7]と漢字コード変換用の辞書ファイル[文献8]を使用した.HTMLファイルはIBM社のホームページ・ビルダー2001で作成した[文献9,10].富士通(株)のF-BASIC6.3 [文献11]を使用してIEEE後退コード表を作成した.

3.3 数値データの入力形式(CGIプログラム)
 最初は,利用者が数値データを1つずつ枠内に入力する表形式で作成した(図2).多数のデータを入力するのは大変なので,データ数を19組までとした.さらに,横軸を共通として,縦軸に異なるデータ系列を2本または3本入力できるプログラムも作成した.なお,サーバー上のCGIプログラムは,利用者のブラウザから数値データを半角文字(アスキーコード)として受け取る.そして,CGIプログラム中で数字(倍精度実数や整数)に変換している(次のCSV形式も同様).
 次に,数値データを半角コンマで区切って(CSV形式),切り貼りで入力できるように改良した(図3).ディスクに保存した多数のデータも容易に入力できる.コンマを除いて,半角数字で10文字×50値×3本線まで可能である.また,数値の補正倍率とゼロ調整の入力欄を追加した.入力した数値が目盛や数値オーダーと合っていない場合に,これらを半角数字で入力する.補正後の数値=入力数値×補正倍率+ゼロ調整の式で補正できる.これにより,回帰分析の前に圧力や温度等の単位の変換,AD変換値の物理量への換算等を可能にした.さらに,縦軸・横軸の目盛を自動か,手動で設定できるように改良した.自動は初期値のままExcelファイルを再生する.必要ならば利用者が,インターネットから読み込んだ後にExcelソフトウェアを操作して,縦軸・横軸の目盛を変更する.またはブラウザのボタン[←]で戻って指定し直す.手動では最小目盛,最大目盛および目盛間隔を指定できる.これにより実験点の分布する範囲を縮小したり,一部分を拡大することができる.

3.4 文字データの入力形式(CGIプログラム)
 表形式のプログラムでは,利用者が図名や軸名等の文字を半角英数字(アスキーコード)のみで入力するように作成した.CSV形式のプログラムでは,全角文字(JIS第1,第2水準,NEC特殊文字,NECとIBMの拡張文字)のみを使用するように変更した.利用者が種々の文字コード(JIS,シフトJIS,EUC等)で入力する可能性がある.そこで,受け取った全角文字コードを,CGIプログラムにインクルードしたjcode.pl [文献7]で最初にシフトJISコードに統一(変換)する.その後,漢字コード辞書ファイル(表1文献8])を使用してExcelファイルの保存形式(2バイトのUTF-16後退コード)に変換した.すなわち,Excelファイルと表1ではUTF-16コードの上下バイトが逆転している.数千個の全角文字コードの中から目的の文字コードを短時間で捜せるように,辞書ファイルを2つに分けた.最初に使用する辞書には記号,英数字,ひらがな,カタカナ,ギリシャ文字,良く使用する物理・化学量に関する漢字が含まれている.見つからない場合,次に使用する辞書にはMS IME 2000やATOK 15から入力できる全ての漢字コードが含まれている.さらに,見つかった漢字を最初の辞書に自動的にコピー(自己学習機能)して,処理速度を向上させた.なお,日本語の漢字コードにない全角文字(自作の外字やUnicodeの外国文字)は図中で中点(・)に変わる.また,1つの入力場所に全角文字と半角文字を混ぜて入力するとエラーを生じる.この原因は,全て全角文字と見なして2バイトずつ処理するためである.特に,奇数個の半角文字を挿入すると,その後ろの全角文字まで中点(・)に変わってしまう.しかし,これを処理するサブルーチンはまだ作成していない.

3.5 数値データの処理(CGIプログラム/Excelファイル)
 Excelの基本ファイル中では数値がIEEE後退コードになっているため,解読が難しい.そこで,F-BASIC 6.3 [文献11]を使用(MKDV$関数,HEX$関数等)して,Excelに入力した数値とIEEE後退コードの変換表を作成した(表2).これを用いて,Stirling [文献2]で検索し,特殊タグで置換(バイナリー編集)してダミーファイルを作成した(図8).ここでいう特殊タグとは,CGIプログラムが利用者から受け取ったデータや計算値等で再置換するときの目印となる記号(半角文字を半角<>で囲んだもの)である.例えば,ダミーファイル中で<X0*-00>は横軸の数値用の特殊タグである(ここで,*印は0〜9の数字を表す).<M0*-00>は,後ろのバイト数,Excelの表の行位置,列位置等のデータを含むと思われる(表3).実際の実験では実験点に欠落が生じることがある.例えば,縦軸の系列が複数の場合に,測定ミスや測定の時間的ズレによって生ずる.実験点が1個欠落するか,連続して複数個欠落するかによって,Excelのファイル構造とサイズが異なる変化をする.したがって,これに対処する必要がある(後述の3.7参照).その他,縦軸・横軸を拡大・縮小するための目盛用の特殊タグを図9に示す.
 回帰分析の方法(y=ax+b形式の最小二乗法で傾きaと切片bを決定する)は,多くの書籍[文献12,13]に詳しく載っているので,本報告では説明を省略する.回帰分析はCGIプログラムで行っている.さらに,利用者のブラウザ(Internet Explorer)上でExcelファイルの数値データが変更されても正常に動く必要がある.そこで,Excelのワークシート関数のSLOPEとINTERCEPTおよび四則計算を使用して,Excelファイルでも回帰分析を行っている.

3.6 文字データの処理(CGIプログラム/Excelファイル)
 表形式の場合には,文字データが半角英数字(アスキーコード)である.そこで,ブラウザから受け取った文字数が不足していれば半角空白を追加してから,特殊タグを置換する.CSV形式の場合には,文字データを最初にシフトJISコードに統一(変換)する.ここで,文字数が不足していれば全角空白を追加する.次に,UTF-16後退コードに変換する.さらに,縦軸・横軸の名前用の特殊タグ(図9),図の名前や凡例用の特殊タグ(図10)を置換する.

3.7 Excelファイルのサイズ変更処理
 Excelは512バイト単位でファイルサイズを管理していると推定される.実験点が多数欠落した場合には,ファイルの途中が抜ける形で,512バイト単位でファイルサイズが小さくなる.そこで,ダミーファイルを2つに分割して,これに対処した.前半のダミーファイル中の特殊タグを文字データ(アスキーコード,UTF-16後退コード)と数字データ(IEEE後退コード)で再置換する.次に,実験点の欠落を処理する.その後に,ファイルサイズ(バイト数)を512で除した余りを求める.余りが0でない場合は,512になるようにヌルコード(00)を追加してから,後半のダミーファイルを連結する.さらに,ファイルサイズ等に関する多数の特殊タグ(図11)がファイルの最初と最後にあるので,これらを置換する.これでExcelファイルとして再生する.再生したファイルは実用上は使用可能である.しかし,動いているだけで,サイズ管理方法を完全に解読できたわけではない.したがって,これらの特殊タグに関する詳細な説明は差し控える.

4.おわりに
 教育学部のサーバーだけでなく,学外のサーバーにも計算・作図プログラムを載せてサービスを開始した[文献1].学校の授業や自由研究等でも利用できよう.今後は,利用者の希望を調査し,それに基づいたサービスも提供する予定である.なお,インターネットなので多数の人が利用する場合を考慮し,同時に利用できる人数を制限している.しかし,簡単に設定を変更できるので,利用者が増加すればそれに対処する予定である.
 本研究で行ったことは,Excelソフトウェアを使用して自作したExcelの文書ファイル(基本ファイル)の中身を少し部分的に解読しただけである.決してExcelソフトウェア(アプリケーション)そのものを解読したわけではない.また,それは素人には不可能である.自作した基本ファイルと中身の文章(データ)が少し異なる文書ファイル(再生ファイル)を複製し,それを無料で他人(利用者)に提供するだけである.サーバーで自動的に実行するので極短時間で作成できる.しかし,パソコンを使用して手動でExcelの文書ファイルを作成して,それを提供することと,実質的には何ら変わらない.利用者のパソコンにExcelソフトウェアがインストールされていなければ,提供した文書ファイルを再利用(編集)することはできない.ただし,Microsoft社から無料配布されているExcel Viewer[文献14]を入手すれば,ファイルを開いて図を見たり,印刷することはできる.
 以上,サーバーによる自動サービスの方法(Excel形式)を簡単に紹介した.今後,このようなサービスを行うホームページが増加することを期待する.

参考文献など(URLは全て2003年7月15日時点のものです)
[文献1] トップページ http://www.e-sensei.ne.jp/~ashida/index.htm および http://www1.edu.saitama-u.ac.jp/users/ashida/index.htm
[文献2] http://www.vector.co.jp/soft/win95/util/se079072.html
[文献3] 藤田郁,三島俊司『CGI&Perlポケットリファレンス』(株)技術評論社
[文献4] 結城浩『Perlで作るCGI入門応用編』ソフトバンク(株) http://www.hyuki.com/
[文献5] 笹木望,藤崎真美『最新HTML&CGI入門』エーアイ出版(株)
[文献6] http://www2.biglobe.ne.jp/~sota/
[文献7] ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
[文献8] http://ash.jp/ash/src/codetbl/ (unitbl21.htm,unitbl22.htm)
[文献9] 『ホームページ・ビルダー2001ユーザーズ・ガイド』日本アイ・ビー・エム(株)
[文献10] アンク『HTMLタグ辞典』翔泳社
[文献11] 『F-BASIC 6.3ヘルプ』富士通(株)
[文献12] 国井利康ほか『FORTRAN数値計算とプログラミング』共立出版(株)
[文献13] 中村明子,伊藤文子『詳解BASIC演習』共立出版(株)
[文献14] http://www.microsoft.com/downloads/details.aspx?FamilyID=4eb83149-91da-4110-8595-4a960d3e1c7c&DisplayLang=ja


トップへ  CEJ, v7n1目次へ