プロコン会場となった石川県地場産業振興センター
[画像のクリックで拡大表示]


[画像のクリックで拡大表示]

競技部門の会場は体育館のような広いホール。観客は2F席から応援します
[画像のクリックで拡大表示]

今月の訪問先
[画像のクリックで拡大表示]

あわてず冷静に復号化しなくちゃ
[画像のクリックで拡大表示]

ほら,早くボールを入れろ,入れろ
[画像のクリックで拡大表示]

競技部門で健闘した熊本電波高専の3人
[画像のクリックで拡大表示]

優勝した東京高専のヒーロー・インタビュー
[画像のクリックで拡大表示]

 2002年7月号で宣言した通り,10月12~13日に行われたプロコン(プログラミング・コンテスト)の本選大会に行ってきました。プロコンとは,高等専門学校いわゆる高専(コーセン)の学生を対象に,自作ソフトウエアのアイデアと実現力を競う大会で,今回で13回目になります。

 今年の開催地は石川県金沢市。NHKの大河ドラマの舞台としてスポットライトが当たっているうえ,連休と秋の行楽シーズンが重なって,足も宿も予約が取れなくて…。東京→名古屋経由で金沢まで4時間半もかかっちゃいました。

 しかし,そうまでしても行ってよかった。もう,面白かったのなんのって。IT業界にショーやイベントは数々あれど,近年あれほど体内にアドレナリンがかけめぐった取材はありませんでした。彼らのプログラミング・スキル,アイデア,情熱,そしてユーモア。どれをとってもハンパじゃない。プロコンは若きエンジニアたちの甲子園だ! 今回は,最初から最後まで白熱した第13回プロコンを総力レポートしちゃいます!

競技,課題,自由の三つの部門でしのぎを削る

 プロコンには,競技部門,課題部門,自由部門の三つの部門があります。競技部門は,高専の先生たちが毎年新しく考案するゲームで,ソフトウエアを作って競い合うというもの。今年は56校が参加しました。

 課題部門は,与えられた課題テーマに沿って独創的なソフトウエアを作品として発表します。プレゼンテーション,デモンストレーション,操作マニュアルの適性度,プログラミング・リストの四つの視点で審査され,最優秀賞,準優勝,特別賞などが決められます。自由部門は,課題に制限されることなくまったくフリーに作品を作ってよいという部門で,審査方法は課題部門と同様です。

 課題/自由部門については,6月に設計コンセプトを見る予選審査があって,そこで勝ち残った課題/自由部門それぞれ20校が本選に出場しました。参加校にとっては,三つの部門のいずれにエントリするか,またはどの部門に何年生をどう割り振るかといったことも重要な戦略の一つとなっているようです。

通信の仕組みをゲーム化勝ち抜き戦の競技部門

 今年の競技部門は,ネットワーク通信の仕組みをモデル化したゲームで勝負です。

 1チームは3人。送信側と受信側のブースに分かれます。どう分かれるかはまったく自由で,それぞれのブースは透明なパイプでつながっています。ゲーム開始とともに送信側に日本語の文章が手渡されます。送信側は文章の情報を,青/赤/黄/緑の4色のボールに符号化して,ボールをパイプに流し込みます。受信側は送られてきたボールの情報から復号化して日本語の文章に変え,回答用パソコンに入力します。7分間でどれだけ多くの文字を正しく解読できたかで勝敗が決まります。同じ文字数ならより速く解読できたほうが勝ちです。

 しかし,この送受信には落とし穴があって,競技時間中に何個かのボールがパイプから抜き取られてしまうのです。いかに効率のよい符号化/復号化プログラムを開発するか,また通信エラーをどのように発見して補正するかがポイントというわけです。ボールを効率よくパイプに送ったり,色を自動的に判別するような“装置”を持ち込むのも自由です。

 試合はトーナメント方式で,4~5チーム対戦で上位2チームが勝ち上がります。10文字解読しても次へ進めないハイレベルな戦いがある一方,たった2文字でも決勝進出なんていう場合もあります。予行演習のときには練習と勝手が違ったのか,解答ゼロというチームが結構いました。しかし,本番では解読ゼロのチームは激減。みんな徹夜でリハーサルしたり,プログラムを修正したんでしょう。

勝つためのポイントは三つ

 私が思うに,このゲームで勝つには三つの考慮点があります。

 その1。ボールは直径8cmぐらいの大きさなので,数が多ければそれだけ送信に時間がかかります。したがって,どれだけ少ない数のボールで一つの文字を表現するかはとても重要。符号化のアルゴリズムを綿密に練らなければなりません。

 その2。どれだけ迅速にボールを送り,それをどれだけ迅速に読み取るか。このプロセスを半自動化,あるいは自動化する工夫も,7分という短い試合時間では効いてきます。多かったのは,短い雨どいのような道具を持ち込んだチーム。一文字分のボールを事前に雨どいの中にそろえておいて,パイプに流し込んでしまおうというわけです。明石高専は筒状の網を手作りして,10数個のボールを絞り出すように送っていました。木更津高専は4色のボールを自動的に分別投入できる機械を作って戦いに挑みました。受信側では,鶴岡高専がボールの読み取りにCCDカメラを利用し,パソコンへの入力を自動化していました。

 その3。通信エラーの検出/訂正の仕組みをどう作り上げるか。一番確実なのは,受信したボールをそのまま送信側に戻して,どこにエラーがあるのかをチェックする方法でしょう。同じ文字を2度ずつ送って欠損のない方法を採用したり,ボール1色を文字区切りに使って,欠損があると思われる文字だけを再度送れと送信側に促すチームもあります。うーん,本当にいろいろな戦略が考えられるんですね。

静かに熱く燃えるバトル

 見ていて思ったのは,本番で“装置”をうまく作動させるのは難しいということ。アイデアはすばらしいんだけど,頭で思い描いたとおりに動かなくて,文字解読に結びつかなかったというチームが結構ありました。

 その中にあって緒戦から注目を集めたのは東京高専。20文字解読できれば2回戦進出は確実という水準の中で,競技開始早々に35文字も読んじゃったのです。“おっ,すごい”と思って見守っていると,突然9文字に減ってまたびっくり。せっかくちゃんと解読できていたのに,問題に含まれていた誤植を受信ミスと思い,最後に訂正してしまったのが原因とか。それでも何とか1位通過して2回戦へ。このチームのすごいところは観客に対するパフォーマンスも忘れていないこと。最初の6分間は回答を入力せず,終了直前に一気に入力して大量得点する作戦なんです。スリル満点。

 試合の経過は司会者によって“動きがあった”とか“攻勢をかけているチームがある”とかそれとなくアナウンスされるのですが,試合の当事者たちがそれに反応する余裕はありません。送信側はひたすら文字を符号化してボールを送り,受信側は黙々と解読。競技終了の7分後にようやく自分たちが勝ったか負けたかを知るのです。試合そのものも静かで,内なる戦いって感じ。

 決勝戦は東京高専と1回戦で29文字を読んだ八戸高専,1回戦は2位通過ながら,2回戦を高得点で勝ち上がってきた秋田高専,鈴鹿高専,大会唯一の女性チーム熊本電波高専の戦いとなりました。

 飛び出したのは,解読できた文字から回答する素直な作戦を取っていた熊本電波と秋田高専。5文字,7文字と着実に得点を重ねていきます。ボールの抜き取り数は1回戦,2回戦,決勝の順に多くなっているので,解読もそれにつれて難しくなっているはず。そのせいかどうか東京と八戸は最初からずっと沈黙したままです。残り時間1分を切って,もはや試合はこれまでかと思われたとき,東京高専が一度に17文字を得点して見事優勝しました。「勝因は符号化/復号化のアルゴリズムを考え抜いたことだと思います。プロコンにエントリしてから約3カ月間,メンバーで徹底的に話し合いました。プログラム開発自体は1カ月もかけていません。エラー訂正は,受信側からボールを戻して差をチェックするシンプルな方法を取りました。最初から文字数で勝負すると決めていたので,解読スピードは気にしませんでした。決勝では,問題の文章の中に読めない漢字があってちょっと焦りました(笑)」(東京高専チーム)。

 惜しくも三位となった唯一の女性チーム熊本電波の弁。「一文字,どうしても解読できなくてそこで詰まってしまいました。それを飛ばしてなんとか次を読もうとしたんですが…。でも,このゲームはすごく面白かったです。他のチームの符号化/復号化の考え方を見て,“こんな方法もあるのか”と感心したり。有明高専など他の学校の人と話ができたことも収穫でした」。戦い終えたチャレンジャーたちは,さわやかな笑顔にあふれ,みんないい顔をしていましたよ。