Web ブラウザを用いた C 言語学習支援システム

Web ブラウザを用いた C 言語学習支援システム
中尾
剛、境
僚太、遠藤貴大
いわき明星大学科学技術学部電子情報学科
福島県いわき市中央台飯野 5-5-1
TEL 0246-29-5111
Fax 0246-29-0577
3.本システムの流れ
1.はじめに
コンピュータプログラミング言語を学習する上で、実
際にパソコン上でプログラミングを行い、コンパイルお
ユーザは、本システムにログインし、プログラムの作
成、編集を行う。図2にプログラム入力画面を示す。
よび実行して、プログラムの動作を確認することは非常
に重要である。また、最近は、学生がプログラミング学
習を行えるようプログラム開発環境が無料で提供されて
いる。しかし、これまでのプログラミング開発環境はパ
ソコンにインストール必要があり、それを面倒に思う学
生も多い。
本学電子情報学科の学生にアンケートをしたところ、
自宅でも C 言語の勉強をしたいと考えている学生が半数
以上いるものの、実際にコンパイラなどの開発環境をイ
ンストールしている学生は3割強にとどまっている。ま
た、開発環境などをインストールしなくても、手軽に学
習できるのであれば学習したいと考えている学生も多い。
そこで、インターネットを用いて、Web ブラウザのみ
で C 言語が学習できるシステムを構築できれば、自宅で
もプログラミングの学習をする学生が増えるのではない
かと考えた。
2.本システムの概要
本システムは、ユーザが Web ブラウザで利用できるよ
うにするため Web サーバ上に構築した。また、サーバ
図2 プログラム入力画面
OS の Lunix(Fedora 11)に用意されている C 言語コンパ
イラ「gcc」を利用して、ユーザが作成したプログラムを
本システムでは、パソコン上での実行と異なり、サー
コンパイルしている。それにより、ユーザはコンパイル
バ上で実行するため、実行途中でキーボードからの入力
環境を用意しなくても、ソースのコンパイルおよび実行
ができない。そこで、図2に示す通り、scanf をプログラ
を可能とした。なお、スクリプト言語として PHP を、デ
ム中に記述した場合、
「scanf 入力」のフォームにあらか
ータベースエンジンとして MySQL を使用している。図
じめ代入する値を入力する。プログラムの入力が終わる
1に本システムの大まかな構成を示す。
と「実行」ボタンをクリックしてサーバに入力フォーム
の内容を引き渡す。
ソースファイル
ソース、ユーザ管理
実行結果
DB
コンパイル
き換え、実際にコンパイルするプログラムソースの生成
実行
「scanf」で始まるかを調べているため、一行に複数の文
サーバ(Linux)
図1 本システムの構成
社団法人 私立大学情報教育協会
平成22年度 教育改革ICT戦略大会
サーバ側では、前述の理由から scanf 部を代入式の置
を行う。この際に、プログラムの左端(空白を除く)が
が書かれている場合は、置換漏れや誤置換を行う危険性
がある。
コンパイルするプログラムソースを生成すると、デー
れている。
タベースにオリジナルソース、コンパイルソース、scanf
ハードウェアは Core2 Quad 2.66GHz、
メモリ 4GByte
部の置換データなどを記録する。これにより、後ほどソ
を用いた。1度に数人の学生が永久ルールに入ったが、
ースの修正が可能となる。また、学習履歴を残し、教員
その他の処理には影響することなく、全体として問題な
が確認することができる。
く動作した。
データベースへ記録した後、コンパイルを行う。コン
利用者の評価は、使いやすさの観点から 78%の学生が
パイルは、scanf 部の置換前のソースと置換後のソースの
本システムは使いやすいと回答した。また、VC と比較し
両方を行う。これにより、コンパイルエラーが発生した
てどちらが使いやすいかという質問についても、57%が
場合、元々のソースに起因するエラーか、scanf の置換に
本システムの方が使いやすい(VC は 36%)と回答があ
起因するエラーなのかを識別する。
った。理由としては、コンパイル・ビルドの作業が簡単
正常にコンパイルできた場合は、実行結果をユーザの
に行えることを挙げた学生が多かった。逆に使いづらい
Web ブラウザに表示するまた、コンパイルエラーが発生
点として、TAB キーでインデントがとれない、scanf 関
した場合は、エラーメッセージを Web ブラウザに表示す
数の使い方がわかりにくい、など Web ブラウザを使用し
る。図3に実行結果画面を示す。
ているために使いづらくなっている部分が挙げられ、今
後改善する必要がある。しかし、アンケート調査の結果
では、既存のシステム(VC)より使いやすいなど、概ね
良好な結果を得た。
5.今後の課題
本システムは、Web サーバ上でプログラムを実行して
いるため、実行途中でのキーボード入力を行うことがで
きない。現在は、scanf で入力を求めるプログラムについ
ては、代入値を予め設定してコンパイル時に置換する手
法を取っている。しかし、この方法では、ループなどに
図3 実行結果画面
図3右側は、
図2のソースにおいて printf の前の scnaf
よって不定回実行される scanf については対応できない。
また、getc や gets などには対応していない。これらにつ
でセミコロンを入力していない場合のエラー表示である。 いて改良する方法を検討する必要がある。
ここでエラーチェックボタンをクリックすると、プログ
また、現在 scanf の検索は、行の先頭の文字列を調べ
ラムソースを表示し、エラーメッセージに示されている
ることで行っているため、1行に複文が記述されている
行を赤色で目立つように表示される。
と検索漏れの危険性がある。そのため、正規表現などを
文法的に誤りがない場合は実行されるが、ループ文な
どを使ったプログラムを作成した場合、条件式を間違え
使った scanf の検索および置換を検討する必要がある。
プログラムの記述で TAB キーによるインデントが入
て設定すると無限ループに入る危険性がある。この場合、
力できないことについては、JavaScript を用いて、TAB
Windows などのパソコン上で実行している場合は、タス
キーが押された場合、インデントの処理を行う。
クマネージャなどと使ってユーザがプロセスを停止され
永久ループに入った場合、ユーザはプロセスを停止す
ることができる。しかし、サーバ側で実行している本シ
ることができない。それどころか、Web ブラウザがハン
ステムの場合、ユーザは停止させることができない。そ
グアップしてしまう。最悪の場合、タスクマネージャで
こで、プロセスを監視するページを作り、永久ループに
も停止できず、パソコンをハード的に強制終了しなけれ
入っていると思われるプロセスを手動で停止させる Web
ばならない事態に陥る。さらに、永久ループなどの不適
フォームを用意している。
切なプログラムを多く実行するとサーバが停止してしま
う危険性がある。それを防ぐため、不適切なプロセスを
4.評価
自動的に検出し、該当プロセスを停止させる仕組みが必
本システムを本学電子情報学科2年生 55 名に利用し
要である。これについては、一定時間ごとにプロセスを
てもらい評価を行った。なお、対象の学生は半年の間、
監視し、基準時間以上プロセスが実行されている場合、
Microsoft 社の Visual Studio で C 言語(以下、単に「VC」
自動的にそのプロセスを停止する仕組みを検討している。
と略す)の実習を行い、最終回で本システムを始めて触
社団法人 私立大学情報教育協会
平成22年度 教育改革ICT戦略大会