第27回国際情報オリンピック(IOI 2015) カザフスタン大会 参加報告

日本選手団 副団長 村井翔悟

  1. 概要
  2.  第 27 回国際情報オリンピックカザフスタン大会 (IOI 2015) は 2015 年 7 月 26 日から 8 月 2 日まで,カザフスタンのアルマトイ市で開催された.
     開会式,競技,閉会式 (表彰式) を行う会場は Al-Farabi Kazakh National University であった.選手は会場となる大学の学生寮に宿泊し,副団長および随行員は会場から徒歩 30 分程度の場所に位置する Atakent Park Hotel に宿泊した.
     IOI 2015 には 83ヶ国・地域から 322 名の選手が参加した (公式参加者数).競技は 7 月 28 日と 30 日の 2 日間にかけて行われた.各競技日の競技時間は 5 時間であり,出題された課題数はそれぞれ 3 題(2 日間で合計 6 題)である.競技結果に基づき上位者には金・銀・銅のメダルが授与された.全参加者の約半数にメダルが授与され,金・銀・銅の割合はおよそ 1:2:3 と定められている.今年は金メダルが 27 名(全参加者の約 8 %)に,銀メダルが 55 名(全参加者の約 17 %)に,銅メダルが 79 名(全参加者の約 25 %)に与えられた.
     IOI 2015 における日本代表選手の成績は,金メダル 3 個,銅メダル 1 個であった.全員がメダルを受賞したことに加え,日本では歴代最多の金メダル 3 個獲得という素晴らしい成績をおさめることができた.
     
    IOI 2015 日本選手団
     日本代表選手
    金メダル  井上卓哉 開成高等学校2年
      金メダル 髙谷悠太 開成高等学校1年
      金メダル 増田隆宏 筑波大学附属駒場高等学校2年
      銅メダル 松崎照央 明石工業高等専門学校3年
     日本選手団役員
      団長 保坂和宏 東京大学大学院修士課程1年(IOI 2008, IOI 2009 選手)
      副団長 村井翔悟東京大学理学部情報科学科3年(IOI 2010, IOI 2011, IOI 2012 選手)
      随行員 二階堂建人 慶応義塾大学環境情報学部3年
      随行員 秀郁未 東京大学農学部獣医学過程獣医学専修3年(IOI 2012 選手)

     ※ IOI 2015 には団長が不参加となりましたので,副団長が団長を代行しました.

     IOI は個人戦であり公式データとしての国別順位は存在しない.公表された成績に基づいて算出したところ,メダル獲得数による日本の国別順位は 5 位である.総得点による日本の国別順位も 5 位である.



  3. 競技について
  4.  今日では様々なプログラミングコンテストが行われているが,IOI の特徴としては中高生を中心とした大会であること (国によって教育制度は若干異なるが),世界各国から代表選手が集うオンサイトの国際大会であることが挙げられる.IOI で出題される課題の特徴としては,競技時間が長いこと (1 日 5 時間の競技を計 2 日間行う),個人戦であること,そして,アルゴリズムに関する数理的思考力を問う課題が多く出題されることが挙げられる.
     競技では,与えられた開発環境を用いてプログラム (C/C++, Java または Pascal) を作成してソースファイルを競技サーバから提出する.提出したプログラムは競技サーバ上でコンパイル・実行され,その実行結果に基づき得点が与えられる (過去の IOI ではこれ以外の採点方式の課題が出題されることもあったが,IOI 2015 では出題されなかった).実行時の時間・メモリに制限があるため,効率の良いアルゴリズムの設計が重要となる.早く提出することへのボーナス点は無く,また,誤った解答を提出した場合のペナルティも無い.選手には,高度な課題に対して,5 時間の競技中にじっくりと取り組むことが要求される.競技時間内であれば解答の再提出も可能である (提出回数の制限は各課題ごとに 100 回であるが,通常この制限を超えて解答を提出することはあり得ず,実質的に提出回数は無制限と言える).
     IOI 2015 で出題された課題は以下の 6 題である.
               
    IOI 2015 競技課題
     競技 1 日目    お土産の箱 (Boxes)
      秤 (Scales)
      チーム (Teams)
     競技 2 日目 馬 (Horses)
      ソート (Sorting)
      町 (Towns)

     いずれも数理的思考力が問われる良問である.各課題はいくつかの小課題に分割されている.小課題の中には,単純な実装で得点が得られるものから,高度なアルゴリズムを実装しないと得点が得られないものまで含まれている.従って 1 つの課題を丸ごと落として 0 点になってしまう可能性は少ないが,満点を取るのは難しい.
     IOI はプログラムの作成技術を競う大会ではない.技術力があるに越したことはないが,それよりも IOI で重視されるのは数理的な思考力・洞察力である.競技では課題の本質を見抜く力が問われ,(気づけばそこまで難しくはないものの) 一見して何をしたらいいか分かりづらいような問題も出題された.

     (1) 競技規則の変更 : IOI の競技規則は毎年少しずつ改訂されている.IOI 2015 における大きな変更点は以下のとおりである.
      ・今回の IOI から,選手が Java 言語で解答を提出することができるようになった.
      ・それに伴って (Java が実行時に複数スレッドを使う可能性があるので),プログラムが複数のスレッドを利用することが許されるようになった.(もっとも,すべてのスレッドの実行時間の合計が制限を超えてはならない,という制限があるので,あえて複数のスレッドを用いる意味はほとんどない.)
     これらの変更は去年の規則に比べて選手に制約を課すようなものではなかったので,選手への影響はほとんど無かった.ちなみに,Java 言語が使えるようになったが,実際に Java 言語を使用した選手は全体でも数名だったようである.
     選手は,昨年までと同様に,競技サーバより問題文の PDF ファイル(英語版と各国語版)をダウンロードして競技 PC 上で読むこともできる.

     (2) 競技実施方式 : 去年に引き続き,IOI 2015 で出題された課題の形式は,与えられたデータを処理する関数(プロシージャ)を実装したソースファイルを提出する方式 (プロシージャ方式) である.出力ファイルのみを提出するような特殊な形式の問題は,今年は出題されなかった.
     提出されたソースファイルは競技システム上ですぐにコンパイル・実行される.競技参加者にフィードバックが返され,自分の得点を知ることができる (現在の競技規則では,すべての提出に対して完全なフィードバックがあることが明記されている).満点でなかった場合は,どの小課題で失点したかを知ることができる.
     競技の途中経過はスコアボードとしてリアルタイムに全世界に公開された.日本から観戦した人も多くいたようである.ただし,競技時間中はスコアボードは選手には公開されない.選手が競技時間中に知ることができるのは,自分の得点だけである.
     IOI ではプロシージャ方式をとる関係で,問題文中に「実装の詳細」節があり,プログラム中で実装すべき関数の仕様などを明記していることが多い.しかし,今回の IOI においては,実装の詳細の説明は各選手に配布されるサンプルプログラムに委ね,問題文中には明記されなかった.IOI に参加する選手のレベルを考えると,問題文中にも実装の詳細を記述する必要は少ないと考えられるため,この措置は適切なものと言えるだろう (これにより,若干ながら翻訳の手間も減少した).ただし,選手に与えられる「採点用サンプルプログラムの例」が受理する入力の説明が大雑把すぎないか,という印象は受けた.

     (3) 競技システム :  競技時間中,選手にはノート PC が 1 人 1 台与えられた.選手の PC には開発環境と,競技システムにアクセスするためのウェブブラウザがインストールされている.
     競技システムとしては,最近の IOI と同様,CMS (Contest Management System) が用いられた.日本でも,最近では JOI 本選と春季トレーニング合宿で CMS を使用している.トレーニングにおいて IOI と同一の競技システムを使用することにより,選手は操作方法に戸惑うことなく課題に集中できるというメリットがある.
     競技システムもよく準備されており,初日こそフィードバックが返ってくるまでに時間がかかることもあったが,2 日目にはすべての提出に対してフィードバックが 1 分以内に返ってきたようである.細かいハードウェア,ソフトウェア的な不具合は多少あったようだが,300 人以上が一斉に競技を行うことを考えると,そのような問題を完全になくすことは難しいのではないかと思われる.

     (4) 翻訳 : 競技日の前日の夜には副団長・随行員により問題文の翻訳が行われた.今年の翻訳システムは Wiki 形式のもので,すべての編集がサーバー上に保存され,システム上から印刷を要求できるなど,使いやすいものであった.与えられた翻訳システムを用いると日本語フォントが不適切になるという問題は毎年のように起こっていたようであるが,今回は若干違和感はあるものの問題になるほどではなく,自前で PDF ファイルを作成する必要などもなかった.システムが使いやすかったこと,また問題文がさほど長くなかったこともあってか,翻訳は例年に比べるとかなり早く (遅くとも 2 時 10 分) に終了した.

  5. その他・感想など
  6.  今年の IOI の運営は,総じて良いものであった.競技や式の開始が遅延することは普段の IOI でもよくあるが,今回はこれらが遅延するようなことは極めて少なかった.競技 2 日目の翻訳の前にホテルが停電するというトラブルがあったが,そのような事態にもスタッフの臨機応変な対処があり,翻訳にはさほど支障をきたすことはなかった (日本選手団は,かえって 1 日目より翻訳が早く終了した).また,日本選手団ガイドの Saniya さんが選手たちと流暢な日本語でコミュニケーションをとってくださったこともあり,選手たちもリラックスして競技,交流を行えたようである.
     選手の宿舎の学生寮は,大学のキャンパス内であったので,競技会場などへも徒歩で移動でき,移動の手間が少なく済むようになっていた.なお学生寮の環境も,寮が最近完成した新しいものであったこともあり,比較的良かったようである.GA Meeting や翻訳は,ほとんどがリーダーの宿泊するホテルで行われたため,こちらも移動の手間が少なくなっていた.特に,翻訳の後深夜に翻訳会場からホテルまで戻る手間が無かったのは楽であった.
     唯一悔やまれる点としては,選手の中に体調を崩す人が出てしまったことである (これが競技などが終わってからのことであったのは不幸中の幸いであったが).海外では水や食べ物が体に合わず体調を崩してしまうということはある程度は避けられないと思われるが,そのような場合も想定して適切な対処を行えるよう準備しておくべきだったと感じている.

  7. おわりに
  8.  今年は金メダル3個,銅メダル1個と,すばらしい成績をおさめることができました.今回,IOI 2015 への選手団派遣を無事に終えることができましたのは,日頃より情報オリンピックの活動にご支援をいただいている皆様のお陰です.この場を借りてお礼を申し上げます.どうもありがとうございました.日本は IOI の開催を 3 年後に控えており,今後は今まで以上にお世話になることも多いと思います.今後ともよろしくお願いします.