今年度の前期は,「情報処理I」(2クラス),「Webアプリケーション構築演習」,「ネットワークセキュリティ」の授業を担当しました.3つの記事に分けて,それぞれ,振り返ります.
「Webアプリケーション構築演習」は,Webアプリケーションの構築を行う演習科目です.第5セメスター(3年前期)の専門選択科目です.月曜3・4限の演習科目で,合格すれば2単位となります.
プログラミング言語はJavaを使用しています.演習室のLinux環境にApache Tomcatを各自伸張し,その中でサーブレットやJSP (JavaServer Pages)のファイルを作成や編集をしてもらいました.またいくつかの課題では,提出前に学生間でレビューをさせて,質の向上を試みました.レビューは紙提出です.動作画面のほかソースコードもレビュー対象です.
評価は課題レポート100点とし,試験は行っていません.評価対象の課題は5つで,それぞれの課題提示時に,配点と提出期限をアナウンスしました.
授業内容ですが,シラバスから順序を変えて実施しています.シラバスでは,初回と第2回が基礎・復習で,第3回から第10回までを「Webアプリケーション基本技術」として,サーバサイドスクリプト,サーブレットとJSP,JavaScript,データベース(DB)操作,Web APIとマッシュアップ,セキュリティ対策などを1回1テーマで並べましたが,各回,そこまで細かく学習内容を分けると,課題設定や採点が煩雑になります.そこで,第3回と第4回は「サーブレット」,第5回と第6回は「JSP」,第7回と第8回は「JSP+DB」,第9回と第10回は「API」とし,2回分で1つの課題提出というスケジュールにしました.
各課題について,タネとなる題材をこちらで用意し,提供しました.サーブレットとJSPに関しては,それぞれ動作させるための最小限のソースファイルです.ファイル配置のディレクトリや,サーブレットのコンパイルコマンドなどは,別途指示しました.JSP+DBの課題では,データベースとセッションを用いたユーザ認証のコードを提供し,SQLインジェクション(正当なパスワードを知らなくてもログインができてしまうこと)とその対策(プリペアドステートメント)を学んでもらいました.API課題では,JavaのプログラムがHTTPのクライアントとなって,HTTPやHTTPSにより他のWebページにアクセスするコードを用意しました.
シラバス・授業計画の後ろ5回(第11〜15回)は「Webアプリケーションの開発」ですが,ここはグループワークとしました.各グループ4人による構成を原則とし,実際には2人や3人のグループも認めました.途中に企画面談と中間提出を入れ,第15回の3限に実演です.実演というのは,グループのLinuxホストと,教師用Linuxホストの両方で授業中にサービスを起動し,起点となるURLより,教員も,受講者もアクセスできるようにしました.授業中に教員が寸評を述べるとともに,学生投票の時間を設けまして,1位と2位のグループは授業中にアナウンスしました.第15回の4限は各自振り返りとし,自分だけでなく同じグループの他の学生のことも記述してもらいました.グループワークは,「グループ点×個人の貢献度」の式で計算し,受講者にメールでフィードバックしました.
さかのぼって第1回と第2回ですが,それぞれの3限には,プログラミングの前にWebサイトやWebアプリケーションがどのように構成され,機能しているかを,分析し,論述してもらう課題を設けました.具体的には,第1回では今年はじめにリニューアルされた学部トップページを,第2回では学内サイトにおけるパスワード変更手続きを,対象としました.
第1回と第2回の授業では,準備運動となるようなプログラミング課題にも取り組んでもらいました.2年後期に「オブジェクト指向プログラミング演習」という科目が開講され,多くの学生が受講していました.その担当の先生によると,WindowsとEclipseで,Javaのプログラミングを行っていたとのことです.そこでこちらでも,第1回は同じ環境を用いました.プログラミング課題は2年の授業の復習ではなく,Cで書かれた曜日計算を,Javaに書き換えることをしてもらいました.Javaでは,クラスの宣言が必要となり,mainの宣言方法も異なりますが,intなどを用いた変数宣言や,計算式・代入文などは,Cと同じものが使えます.あともう一つ,printfは,System.out.printfという書き方で,Javaのあるバージョン以降より使用可能です.Eclipseで設定を行い,動作確認をしました.ただし,printfは「Javaらしくない」ことも伝えています.
第2回のJavaプログラミングは…プログラミングは…用意していたのですが,暴風警報発令のため,授業休止になったのでした.この分の課題は,第3回の3限に実施しました.Linuxのコマンドラインでコンパイルと実行を行い,テキストエディタは任意としました.星型のSVG画像生成を通じて,機械可読可能なファイル生成や,極座標形式と反復を組み合わせた座標計算を学んでもらいました.サーブレット課題は,第3回4限と第4回の3・4限の3コマ(1.5週分)に短縮しました.授業休止分の代替授業は,第15回授業の翌週に実施し,フォワードを用いたサーブレットとJSPの連携を知ってもらいました.
Webアプリケーション構築演習は,昨年度まで開講の「データベース演習」の読み替え科目となっています.担当されていた先生から,それまでのご苦労と,学生サポートやDBMS運営の状況を聞いておりました.自分の科目ではそこまでリソースを費やすことができず,TAはM2の2名で,就職活動その他のためTAなしの授業回もありました.DBMSはSQLiteを採用し,Javaでは接続時にファイル名を指定しました.これにより,JSP+DB課題やグループワークの実演時に,サーバ負荷に起因する不具合はなかったのですが,かわりに,Tomcatを起動するstart.shを実行したディレクトリに基いて,データベースのファイル名(相対パスの場合)が決まることを授業中に知り,急いでトラブル対応のアナウンスをしたこともありました.
ファイル配置やコンパイルなどのコマンド,Javaプログラミングの勘所などは,最終的に1つのテキストファイルに取りまとめ,受講者にも読めるようにしました.研究室活動で,JavaプログラミングやWebアプリケーション構築が必要になったとき,このファイルを参考にして,スムーズに作業をしてくれればと願います.