山梨大学に在籍する大学院生を含む全学生を対象に「山梨大学ソフトウェアコンテスト1999」を開催した.コンテストは,ゲームプレイ,テキスト処理,グラフィックス,初心者の4つの部門に分けて行われた.1999年9月24日に課題を発表し,同年12月3日に結果を発表した.参加者は全体で55名であり,当初の予想を上回る参加者数であった.また,優秀な作品も多く大盛況だった.
キーワード:Software, Contest, Software development, Programming techniques
2000年問題やWebサイトへの不正アクセスなどのソフトウェアに関連する話題が毎日のように聞かれるようになった.2000年問題では大きなトラブルは発生せず問題は起きなかったといえるかもしれないが,ソフトウェアが存在する限り2000年問題と同様な問題は次々とやってくる.また,Webサイトへの不正アクセスからシステムを守るために,セキュリティレベルを高めるようにソフトウェアを修正することが必要となる場合も少なくない.このようにソフトウェアは絶えず進化していく必要があり,急激な変化に柔軟にかつ迅速に対応できる知的高度ソフトウェアが期待されている.保守・運用が容易である高品質のソフトウェアを生産するための技術や生産プロセスの質の向上へのニーズはますます高くなっている.
また,コンピュータ機器の低価格化や高性能化,インターネットの爆発的な普及により,一般家庭で簡単にプログラムを作成できる環境を容易に実現できるようになった.このため,専門家でない一般の人々がプログラムを作る機会が非常に増えた.これは便利なソフトウェアが増えることを間接的に意味しており,大変喜ばしいことである.さらに,山梨大学においては学生の質がますます多様化してきているため,現在のカリキュラムでは自分の持てる力を必ずしも十分に発揮できないような学生の存在が顕在化してきている.このような状況を鑑み,ソフトウェアを作る喜びやソフトウェアの魅力をより多くの学生に伝え,既存のカリキュラムに物足りなさを感じている学生にも充実感を感じてもらうために,ソフトウェアコンテストを開催することとした.コンテストの主催は工学部コンピュータ・メディア工学科であり,後援は(有)シンク情報システム,運営は工学部コンピュータ・メディア工学科内に組織したコンテスト実行委員会という形態で実施した.
全国各地でソフトウェアコンテストは開催されているが,山梨大学で開催する試みははじめてである.一般に見受けられる多くのソフトウェアコンテストでは,ソフトウェアの芸術的側面に重点がおかれている.つまり,作品の見た目の美しさとか華やかさといった視覚的効果の優劣を競っているコンテストが多い.ソフトウェアのそのような側面も大変重要であるが,今回のコンテストでは,これからますます重要になると思われるソフトウェア開発やプログラミング技法などの技術的側面を審査の対象として実施することにした.具体的な目的を以下とした.
山梨大学の大学院生を含む学生全体を対象にしたため,応募してくる学生の技術的レベルの差が大きい場合が考えられる.そのため,課題を一種類にすると低学年の学生は敬遠しがちになり,全学生を対象にした意味が薄れる.また,学年に関わりなく得意とする分野を持っている学生もいる.今年度はこれらのことを考慮し,ゲームプレイ部門,テキスト処理部門,グラフィックス部門,初心者部門の4つの部門を設けてコンテストを実施することにした.それらの各部門の特殊性を考慮し,課題発表と成績発表,表彰式以外の日程は部門ごとに独立に設定することとした.
この部門の課題は,「オセロゲームの盤面情報を入力し,次に打つべき手を返す C 言語の関数(プログラム)を作成すること」である.課題自体は比較的簡単で敷居が低いが,強いゲームを作ることは非常に奥が深く,興味深い課題であった.
この部門は以下のスケジュールで実施した.
課題発表 | 9月24日 |
講習会 | 10月19日 |
事前競技会 | 10月29日,11月9日,11月19日 |
解答締切 | 11月30日 |
競技会 | 12月3日 |
表彰式 | 12月7日 |
講習会では,オセロゲームを作る上で参考になると思われるミニマックス戦略の説明と計算の性能追求に役立つと思われる並列化プログラミング技法の説明が行われた.作品の評価方法としては,参加者の間で対戦し優勝者を決める方式を採用した.作品の質の向上のために,本番の競技会の前に3回の事前競技会を開いた.このことにより,他の参加者に関する情報を知ることができ,参加者の意欲が沸き立てられた.
ゲームプレイ部門の参加者は,大学院工学研究科の学生6名と工学部の学生13名の合計19名であり,成績上位の3名は以下であった.
第1位の作品は,すべての参加者の作品と対戦した結果,全勝である40勝0敗であった.第2位は33勝7敗,第3位は31勝9敗の成績であった.
第1位の作品の特徴および工夫点を以下に述べる.第1位の向山君の作品では,オセロゲームの局盤を序盤,中盤,終盤の前半,終盤の後半の4つの段階に分けて戦略を立てている.各段階の戦略の概要を以下に示す.
この部門では,自然言語処理技術の応用として最近注目されている情報検索に焦点をあてた課題とした.具体的には,「毎日新聞社のご厚意により使用が許可された一年分の新聞記事を題材とし,この記事をあらかじめ設定された分野に分類するプログラムを作成すること(文書の自動分類プログラムの作成)」が課題である.自然言語処理技術の応用に関する課題であり,研究的色合いが濃く,やりがいのある課題であった.
この部門は以下のスケジュールで実施した.
課題発表 | 9月24日 |
講習会 | WWW上で解答の鍵となるヒントを解説した. |
応募期間 | 10月15日〜30日 |
解答締切 | 11月26日 |
審査期間 | 11月26日〜12月3日 |
成績発表 | 12月3日 |
表彰式 | 12月7日 |
テキスト処理部門の参加者は,大学院工学研究科の学生2名と工学部の学生3名の合計5名であり,成績上位の3名は以下であった.
第1位の作品の特徴および工夫点を以下に述べる.第1位の小林君の作品では,新聞記事の中に出てくる単語の出現頻度を数え,その特徴と単語の重要度を考慮しながら,記事を分類している.具体的には,機械学習アルゴリズムの弱学習アルゴリズムを鍛える手法であるAdaboosting手法を決定木に適用し,上手に分類している.彼のアルゴリズムの概要は以下である.
この部門の課題は,コンピュータグラフィックスの重要なアルゴリズムであるレイトレーシング法(視線光線追跡法)をVRML(Virtual Reality Modeling Language)を使って,ポリゴン・ゲーム的な3次元アニメーションのコンテンツとして実現することである.WWWの普及で簡単にコンピュータグラフィックスを作成できるようになっている現状では,ホットな話題であり,自由な発想でプログラミングできる比較的自由度の高い課題であった.
この部門は以下のスケジュールで実施した.
課題発表 | 9月24日 |
応募期間 | 9月24日〜10月21日 |
解答締切 | 11月26日 |
審査期間 | 11月26日〜12月3日 |
成績発表 | 12月3日 |
表彰式 | 12月7日 |
しかし残念ながら,この部門の参加者はいなかった.これは,(1)自由度の高い課題であったため,コンピュータグラフィックスの対象を決定するために多くの時間を要すること,(2)レイトレーシング法を理解する必要があること,(3)Java言語およびVRMLを使えるようになる必要があることなどの原因が考えられるが,課題提出の締切まであまり時間がなかったことが最大の原因であると思われる.
この部門の課題は,与えられたデータから共通性を見つけて分類する問題であるクラスタリングの問題とした.具体的には,「イタリアの同一地方において,3つの異なる生産者によって作られたワインがあります.個々のワインが持つ13種類の化学的特徴をもとに,あるワインがどの生産者によって作られたものかを分類するプログラムを作成して下さい.」という課題であった.
この部門はプログラミング初心者向きであるため,コンピュータ・メディア工学科1年生および2年生を対象とした.課題の内容はテキスト処理部門と似ているが,特徴データが13個の数値で与えられている点がそれに比較して扱い易い.
この部門は以下のスケジュールで実施した.
課題発表 | 9月24日 |
講習会 | WWW上で解答のヒントとなる技術を解説した. |
応募期間 | 9月24日〜10月21日 |
解答締切 | 11月15日 |
審査期間 | 11月15日〜12月3日 |
成績発表 | 12月3日 |
表彰式 | 12月7日 |
WWW上に公開した講習会では,この課題を解くために有益と思われる方法(ニューラルネットワークによる方法,決定木による方法,KNN法)とキーワードを紹介した.初心者部門の参加者は19名であり,成績上位の3名は以下であった.
第1位の作品の特徴および工夫点を以下に述べる.第1位の松井君の作品では,結果が既知のデータから未知のサンプルのクラスを推定する方法として,パターン認識の分野で知られているKNN法(K Nearest Neighbors法)を使った.アルゴリズムの概略は以下である.
本稿では「山梨大学ソフトウェアコンテスト1999」の実施報告を行った.当初予定していた参加者数を大幅に上回り,活気のあるコンテストとなったと思う.コンテストは継続することが非常に重要であり,今後も続けていくことが大切だと思う.また,工学部関連だけではなく,山梨大学学生全体から参加してもらえるように企画することも重要である.さらに,山梨大学だけではなく,山梨県などの募集対象を拡大し,より充実したコンテストにすることも将来の検討課題である.
今回ソフトウェアコンテストを開催するに当たり,後援となり,企画に参加して下さった(有)シンク情報システム様に心よりお礼申し上げます.また,コンテストを円滑に運営して下さったソフトウェアコンテスト1999実行委員会のみなさまに感謝致します.さらに,表彰式においてお世話になった伊藤洋工学部長をはじめ,工学部事務部のみなさん,新藤久和コンピュータ・メディア工学科学科長ならびに工学部コンピュータ・メディア工学科の教職員のみなさんに感謝致します.