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

写真1 プログラミング部門の競技会場。L字型のテーブル一組が1チームである
[画像のクリックで拡大表示]

写真2 競技会場の前方には大型のスクリーンがある。競技の残り時間や,各チームが現在までに獲得した点数や棒グラフが表示される
[画像のクリックで拡大表示]

写真3 解答プログラム作成中の石川県立金沢泉丘高等学校。近寄りがたい雰囲気と迫力である
[画像のクリックで拡大表示]

 パソコン甲子園,それは若きプログラマたちの夢の舞台です。全国の高校生と,1年生から3年生までの高専生が,情報処理技術における優れたアイデアと表現力,プログラミング能力などを競います。今年で2回目の本イベントは,情報化社会を支える次世代エンジニアの人材のすそ野を広げるのがその目的。このイベントの模様を,わたくし吉田育代がお伝えいたします。たかが高校生だとあなどるなかれ。その実力は予想をはるかに上回るものでした。

1000人を越える応募者が二つの部門でトップを競う

 2004年11月,パソコン甲子園2004の本選大会が行われました。会場は,磐梯山を遠景に紅葉がとても美しかった会津大学です。今回,予選には全国41都道府県から463チーム1129名の応募があったそうです。昨年の応募が36道府県656名だったといいますから,1年で倍近くに増えたことになります。周囲のIT業界人に「パソコン甲子園を取材に行く」といったら,「ああ,あの」という感じで受け止めていました。イベントの認知度も上がってきているようです。

 さて,本選大会に出場するのは予選を勝ち上がってきた30チーム80名の精鋭たち。これらの学生たちが,(1)プログラミング技術部門,(2)CG・コンテンツ部門——の二つの部門に参加します。

 (1)の「プログラミング技術部門」は,出題された50問の問題を,4時間の競技時間中に何問解けるかを競う部門です。個人競技ではなく,3人で一つのチームを組みます。利用できるパソコンは1チームで1台です。

 出題される問題の難易度は3段階あります。比較的やさしい問題が10問。中程度の問題が30問。難しい問題が10問で,合計50問です。配点は難しい問題だけが1問40点で,あとは1問10点。満点は800点です。これらの問題は,どの問題をどういう順番で解いてもかまいません。最終的にもっとも高い得点をマークしたチームが優勝です。また,参考書を持ち込むこともできますし,チームメイトと相談することもできます。

 (2)の「CG・コンテンツ部門」は,あるテーマに基づいた,Webブラウザで閲覧できる作品を創作します。今年のテーマは「もしも、そして未来は」。2人1チームで,コンピュータ・グラフィックス,動画,音楽などの要素を盛り込んだ作品を作り,大会当日に会場の大スクリーンで再生しつつ,その作品に込めた思いや主張などをプレゼンテーションします。審査委員は作品とプレゼンテーションの両方を,企画力,表現力,ユニークな発想などの点から総合的に審査して順位を決めます。

熱く静かなる戦い——プログラミング技術部門

 パソコン甲子園は2日間にわたって開催されます。初日はプログラミング技術部門の本選です。会場となった講堂には,1チーム3人ずつ20チームがずらりと机を並べていました(写真1[拡大表示])。机の上には1台のノートPC。このノートPCで利用できる開発環境は,BASIC,Visual Basic .NET,C/C++,Javaです。参加者も様々な言語の参考書を持ち込んでいます。あっ,なかには数学の教科書を持ち込んでいるチームもありますねえ。公式を確認するためかな。

 出題された問題の解答はフロッピ・ディスクにコピーして,競技場正面に陣取るスタッフのところへ,フロッピを歩いて持っていきます。そのフロッピはスタッフによって別の場所に設けられた採点場所に運ばれ,審査されます。採点の結果,正解なら点数として加算します。不正解の場合は,「求められている答えが出ない」「暴走する」などとその理由が書かれたうえでフロッピがチームに戻されます。

 この繰り返しで4時間を戦い抜くのです。獲得した点数は正面のスクリーンで表示されるので,その時点でのトップチームが把握できます(写真2[拡大表示])。でも,最初は音なしの構えで最後にどんでん返しを狙うチームがあるかもしれません。そんな駆け引きにも注目したいところです。

 13時。本選が始まりました。各チーム,一斉に問題を開き,時間を争うようにノートPCに向かいます。ん? ノートPCには見向きもしないで,問題を見ながらずっと3人で頭を寄せ合っているチームがありますねえ。久留米工業高等専門学校です。彼らのうち二人は高専生向けのイベント「プログラミングコンテスト(以下プロコン)」で競技部門に参加していました。プロコンが開催された愛媛県新居浜市で10月にも会ったばかりなので,なんだか親近感がわきます。

 観覧席から眺めていると,20チームの作戦は,それぞれ異なる感じでした。3人がまったく別の動きをしているチームもあれば,コーディングをしている1人を囲んでそれを見守っているチームもあります。でも,観覧席から見えるのはここまで。実況があるわけでも,会場のノートPCの画面が見えるわけでもないので,本選出場チームがどう問題と格闘しているかまではわかりません。まるで図書館で勉強している学生を観察しているみたい。

 観覧席の片隅では,出題されている50問の一部がPCの液晶モニターに映し出されていました。これらは比較的やさしい問題の部類だそうです(図1[拡大表示])。皆さんにはすぐに,問題を解くためのアルゴリズムやコードが思い浮かぶでしょうか?

 最初に10点を獲得したのは,法政大学第二高等学校でした。その後に,福島県立清陵情報高等学校,福島県立磐城高等学校が続きます。磐城高校はこのあとも着実に得点を重ねたのですが,2時間あまり経過した時点で40点問題を解いた学校が出始めました。名古屋市立工芸高等学校や静岡県立浜松工業高等学校です。気がつくと久留米高専も40点問題を解いていて一気にトップに。と思っていたら,石川県立金沢泉丘高等学校が1時間半を切ったあたりから40点問題をポンポンポンと解いて一気に抜け出していきました(写真3[拡大表示])。

4時間あっても時間が足りない

 大会初日が終わった夜に開催された交流会で,参加チームのいくつかに感想を聞いてみました。まずは顔なじみの久留米高専から。彼らによると,プロコンに比べて圧倒的に時間が足りなかったようです。プロコンが4カ月かけて一つの大きなプログラムを作るのに比べて,こちらは4時間で50問も解くことを求められます。「改良の余地なく最初に思いついたプログラムで勝負しなければならないのが大変でした」と久留米高専の益田くん。しかし,パソコン甲子園は高専,高校の枠を越えて参加できるオープンな大会であるため,「世界の広さが実感できました。参加してよかったです」とは田中くんの発言です。益田くんはこの大会に出たことでプログラミングへの情熱がますますわいてきたみたいですよ。

 次は最後の追い上げが鮮やかだった金沢泉丘高にお話を聞いてみましょう。最後のどんでん返しは作戦だったそうです。得意分野を分担しながら,みんな一問ずつは40点問題を解きました。ACM国際大学対抗プログラミングコンテスト(http://www.acm-japan.org/)の過去問題を解いたり,自分で予想問題を作って準備してきたそうです。どんな問題を予想していたのと聞いたら,「いったら出題されなくなるからいえません」とのことでした(笑)。ただ,3人とも理数科所属で放課後もいろいろ課題をこなすのに忙しく,パソコン甲子園のために時間が割けたのは1週間程度だったんですって。2年生チームなのですが,来年は受験に専念するため出場は難しいかも,とのことでした。

 続いて,前半着実に得点を重ねていた磐城高校です。このチームがすごいのは,全員プログラミングを初めて3カ月しか経っていない1年生だったこと。本選大会は途中で実行時エラーの多発に悩まされて混乱したそうですが,狙いどおりにプログラムが組めたときはうれしいと語っていました。伸び盛りの仲良し3人組,来年も出場する予定だそうです。1年でどこまで成長するんだろう。楽しみです。