第4章 ハッカー”児玉孝一”(1)
孝一と綾は、神奈川県下有数の公立進学校にして、理系専門の中高一貫校に在学している。
今年6月の最終金曜日。
自分は実習時間が終わり晴れやかな気分で帰ろうとしていた。その時、コンピューター実習の担当である塚田先生に、準備室へ綾と共に連行されたのだ。
「2人に来てもらったのは、システム開発のテストと、10月末のシステム開発の発表会についてだ」
打ち合わせ用の丸テーブル傍のワークチェアに塚田は座ると、2人にも座るよう促した。
塚田泰明は40代で、コンピューター実習の専任教諭の1人であり、主に実技面を担当している。
「あー・・・大丈夫です。WBS通りに進捗してますよ。遅延ないです。全然心配ないです」
準備室に連れ込まれた孝一は、塚田の意図が分からないので、適度にいい加減な回答をした。2人の話の間に入りつつ、孝一のフォローのため、綾は補足・・というより、まともな回答をする。
「課題内容も、すべて設計に反映してありますし、実装予定の進捗率は88%まできています。テストはWBS通りに実施できる予定です。それに、テスト結果で見つかった不具合による仕様変更や、バグフィックスに対応する期間もWBSに設けてあります」
WBS・・・Work Breakdown Structureとは、システム完成に必要な作業へと分解し、作業を人に割り当てる。作業には開始終了期間と作業内容、優先順位、作業順序などが定義される。直訳は作業分解構成図だが、作業工程表と呼ぶと方が日本語での馴染みが深い。
簡単なシステムや、少人数短期間のプログラム開発ならWBSだけあれば、進捗管理には充分だ。というより、高校生がシステム開発するのに、WBSを管理するまでが限界だろう。ましてやプロジェクトマネジメントなど不可能である。
「いいかっ。腹を割って話そうか、児玉、藤田」
腹を割って、いったい何を話せと?
全く以て意味不明で、本気で意図がわからない。
「最初は優等生の藤田と、怠惰な児玉の2人だけのチームで大丈夫かと不安だった」
この学校で高校2年次の金曜日は、終日実習となっている。
実習内容は2~5人までのチームで、前期に課題のシステムを1本開発する。そのシステムの仕様/外部設計/内部設計とシステム自体を提出する。
後期にも、もう1本システムを開発し、前期に開発したシステムと連携させる。提出物は前期と同様である。
提出されたシステムが要求仕様を満たしているかをチェックするのは、先生ではない。
テスト専用AIアプリケーションを搭載したコンピューターがテストを実施する。予め要求仕様と非機能要件をインプットしておけばよい。もちろんユーザビリティーも評価対象となる。
毎年開発するシステムの課題内容が異なる。その為、先輩に教しえて貰って役に立つ内容は、授業で教わっている内容と同じになる。
「先生、怠惰という表現はあんまりですよ」
可愛い気のある生徒の態で、自分は抗議できただろうか。
「児玉君が可哀想です。せめて、怠け者にしてあげてください」
悪意のある微笑を浮かべなら、綾がオレを援護してくれた。だが、それはフレンドリーファイアだった。そう、援護射撃が誤射により、味方である自分に命中したのだ。
とりあえず、綾には反論しておくべきだ。
「自分は樹上生活なんてしてない」
怠け者を動物の”ナマケモノ”と解釈しての異議申し立てだったが、揃って2人に無視された。
「まあ、聞け。藤児チームのWBSは、文句の付け所がなかった」
藤児チームとは、孝一と綾のチーム名だ。そしてチーム名は、チームメンバーが決める。当初、2人は”児藤チーム”と名付けようとしていた。
しかし提出の際、茶々が入った。
実習を指導する教師が《優秀な方の名前を前にするのが普通だろう》と宣ったのだ。
「大抵のチームは、タスクの見落としや、タスクの見積もりが甘く、後半にデスマーチが鳴り響く。具体的には、夏休み期間が4分の1になるチーム3割。半分になるチーム5割。優秀な残り2割のチームでも、金曜日は残らないと、納期に間に合わない」
「藤田が優秀で、自分は怠惰でない事が証明されたました。QCD」
「児玉、一応ツッコミんでやるが、そこはQ.E.D.だな。そして、勝手に話を終わらせるんじゃない」
そう、QCDは”Quality”品質、”Cost”コスト、”Delivery”納期。プロジェクト開始時にQCDの目標を設定し、完了時に目標到達度を確認する。プロジェクトが成功したか、失敗したかを判断する重要な要素である。
Q.E.D.は”Quod Erat Demonstrandum”の略でラテン語である。意味は”かく示された”で、数学などに使われていた。今は使用されていないが、豆知識だと塚田先生が以前に授業で紹介していた。
冗談で様子を探った感じでは、いつも通りノリの良い先生で、叱られる訳ではなさそうだが・・・。
「WBSに文句がなくて、進捗遅延がないのに、どこが問題なんでしょうか?」
綾の質問に、塚田は間接的な表現で答えた。
「藤児チーム用仮想サーバーのテンポラリー領域を確認した」
どこまでバレた?
一瞬だけ綾と視線を交わし、自分が塚田先生に対応する意志を示す。
「システム開発が完了してるな。しかも実装だけでなく、提出ドキュメント作成まで終えている。いつも金曜日の実習の終了後、WBSに従って完了タスクの成果物を提出するという偽装工作までして」
とりあえず軽口を叩き、内心の動揺を隠そうとする。
「酷いじゃん、先生。生徒個人のプライバシーを勝手に暴くなんてぇええええ」
だが、どこまでバレてる?
いや、大丈夫・・・なはず。
「前期だけでなく、後期の分の開発も完了してるなっ!」
「あーあーっと、あれですね。とりあえずプログラミングが乗ってきたんで、品質を担保せず適当に実装しちゃいましたぁー」
まだ、まだだ。
最後の砦は、攻略困難なはず。
大丈夫だ。
自分を信じるんだ。
「なあ、児玉。腹を割って話そうな。単体テストどころか、総合テストまで完了してる。そうだよなっ!」
「気の所為ですって、先生。自分たちは”小姑たん”を使ってもないですよ」
”小姑たん”とはテスト専用AIアプリケーションの渾名で、因みに”姑”は先生を指す。
もちろん先生に対して、姑という言葉は使用しない。
何年か前。
姑と口を滑らせた生徒は、微に入り細を穿つように、課題をチェックされたと聞いている。そして生徒を指導するその先生の姿は、まさに意地の悪い姑のようだったと・・・。
「そうだな。確かに使用ログはなかった」
大丈夫じゃないかも・・・。
もしかして全部バレてる?
「藤児チームのサーバーのテンポラリー領域に、自作テストツールがあるようだけどな」
「あの・・・先生。私たち別に不正行為とかしていないです」
優等生らしく先生に敬意を払いながら、綾は不正行為をしていないと情に訴えた。
「システム開発に関しては、そうだな」
「用意されていたOSSを組み合わせただけの簡単なテストツールですよ。テストツールの自作は、別に禁止されてなかったじゃん。だから、セェーーーフって気がするんですけど・・・」
コンピューター実習室には、再配布自由であるOSS”Open Source Software”が多数用意されている。
「確かにOSSを活用しているようだった。しかし、どこを、どうぅーー考えても・・・いや、どう見積もっても、2~3ヶ月で開発できるようなツールじゃなかったんだよなぁあああ!!」
自作テストツールは、使い勝手が悪い上、テンポラリーには使用方法のメモすら置いていない。だから、OSSのテストツールと誤解してもらえるかもと一縷の望みに賭けて、のらりくらりと躱していた。どうやら無駄な足掻きだったらしい。
「あぁあぁああー。酷いじゃん、先生。勝手に自分のツールに悪戯するなんて」
顔を両手をで覆い泣き真似をしてみたら、塚田先生には珍しく厳しい口調で返される。
「すべてを暴いてやろうか? 良いんだな? 児玉孝一」
「すみませんでしたぁー」
孝一は即座に頭を下げた。
「それにな、用意していたOSSより最新のバージョンのソフトウェアが多数あった。いいか、児玉。用意したのは、学校で検証済みのOSSだけだ。そうでないと、OSSの動作が保証できないし、生徒からの質問に回答できない」
塚田先生に、全てバレてると確信した。
「さあ、これが最後通牒だ。ここからは、お互い腹を割って話そうか」
これ以上惚けたりしたら、それこそ停学になりかねない。
学内ネットワークとコンピューター実習室は、ファイアウォールで論理的に分断されている。そのファイアウォールをハッキングして、コンピューター実習室のサーバーに自作テストツールを保管したからだ。
「降参です、塚田先生」
児玉は両手をあげた。
綾は話を先に進める。
「私たちを準備室に呼んだのは、どうしてでしょうか?」
「1つは小姑たんで、テストを実施することだ。テストツールの結果をみると、3回総合テストを実施しているな」
「そうです。改修したので・・・」
システム開発に絶対評価はない。
システム開発の目的とQCDの観点から評価する。それは、プロジェクト開始の時の目標をクリアしているかどうかで成功、失敗と判断するだけだ。
機能は充分に満たしていて、非機能要件がギリギリで、使いづらいユーザーインターフェース。これでも成功プロジェクトと判断される可能性がある。そのようなシステムでは、ユーザーから強烈なクレームと早急な改善改修の要求があがる。
「最後の開発成果物だけでなく、後2つの開発成果物でも、小姑たんでテストをするように!」
小姑たんは、テストを実行するだけなく、全チームの開発成果物のテスト結果を集める。そして指標を作成し、数値化する。どのシステムが優秀かを可視化できるのだ。その為、多くのシステムをテストした方が良い。
また指標を作成し数値化するのには、結構時間がかかる。その上、課題内容は毎年変更されるのだ。そこでコンピューター実習の担当教諭たちも、システム開発をして、生徒より早く小姑たんでテストしている。
例年だと、夏休み前半に開発が完了すると聞いている。つまり塚田先生は、手を抜きたいのだろう。これはギブアンドテイクだと考えて良いのかも・・・。
「もう1つは第一次サイバー世界大戦について研究し、その結果をシステム開発発表会で発表することだ」
テストはすぐに終わるが、第一次サイバー世界大戦の研究は面倒だなぁ。
「テスト結果が悪かったのを最終開発成果物としているようだな。どうしてだ?」
腹を割って話すと決心したのと、第一次サイバー世界大戦研究の段取りを検討していた。そのため、正直に返答した結果がどうなるかを推察することなく、オレは反射的に答える。
「前期でWBS通りに開発が完了し、小姑たんの評価が高くなると、後期に注目されるんで。そうなると、後期は実習中に他の作業ができなくなるかと・・・」
塚田の表情が厳しくなってきていたが、それでも自制しながら孝一に質問する。
「改善ではなく、改悪したと・・・つまりは?」
「偽装工作ですよ」
マジ叱られた・・・。