第24回国際情報オリンピック イタリア大会 参加報告

日本選手団 団長 伊藤哲史

  1. 概要
  2. 第24回国際情報オリンピック イタリア大会 (IOI2012) は,2012年9月23日から9月30日まで,イタリアのシルミオーネとモンティキアーリで行われた.選手団はシルミオーネの Garda Village に宿泊した.開会式と競技はシルミオーネからバスで 30 分ほど離れたモンティキアーリの Centro Fiera del Garda (ガルダ展示センター) で行われた.
     IOI2012 には 81ヶ国・地域から 310 名の選手が参加し,9月25日と27日の 2 日間にかけて競技が行われた.各競技日の競技時間は 5 時間であり,出題された課題数はそれぞれ 3 題(2 日間で合計 6 題)である.競技結果に基づき上位者には金・銀・銅のメダルが授与された.全参加者の約半数にメダルが授与され,金・銀・銅の割合はおよそ 1:2:3 である.今年は金メダルが 26 名(全参加者の 8 %)に,銀メダルが 52 名(全参加者の 17 %)に,銅メダルが 77 名(全参加者の 25 %)に授与された.
     IOI2012 において日本代表選手は全員がメダル獲得(金1,銀3)という素晴らしい成績を収めることができた.村井君は 3 年連続の金メダル受賞で,今年は総合 4 位というすばらしい成績であった.また,笠浦君,秀君,劉君も IOI は初参加ながら,銀メダル受賞者内でも上位の得点であった.
     
    IOI2012 日本選手団
    日本代表選手
    金メダル  村井翔悟  開成高等学校 3年
      銀メダル 笠浦一海 開成高等学校 3年
      銀メダル 秀郁未 開成高等学校 3年
      銀メダル 劉鴻志 栄光学園高等学校 2年
    日本選手団役員
      団長 伊藤哲史  京都大学准教授(IOI 1994, IOI 1995 選手)
      副団長 谷聖一 情報オリンピック日本委員会専務理事,日本大学教授
      随行役員  副島真 東京大学理学部数学科 3 年(IOI 2008, IOI 2009 選手)
      随行役員 滝聞太基 東京大学理学部数学科 3 年(IOI 2008, IOI 2009 選手)
      随行役員 保坂和宏 東京大学理学部数学科 3 年(IOI 2008, IOI 2009 選手)

     IOI は個人戦であり公式データとしての国別順位は存在しない.公表された成績に基づいて算出したところ,メダル獲得数による国別順位は 7 位タイである(1位中国・ロシア(金4),3位ルーマニア・アメリカ(金3,銅1),5位イラン(金2,銀2),6位ベラルーシ(金2,銀1,銅1),7位日本・クロアチア・ポーランド(金1,銀3),10位ブルガリア(金1,銀2),11 位韓国・ウクライナ(金1,銀1,銅2)). また,総得点による国別順位は 4 位であり(1位中国,2位ロシア,3位アメリカ,4位日本,5位ベラルーシ,6位ポーランド,7位ルーマニア,8位イラン,9位クロアチア,10位ベトナム,11位台湾,12位韓国).IOI2011 タイ大会(金1個・銀3個,メダル数は 8 位タイ,総得点は 6 位)よりも成績を上げることができ,IOI2010 カナダ大会(金2個・銀2個,メダル数は 2 位タイ,総得点は 4 位) に匹敵する成績であった.

  3. 競技について
  4.  今日では様々なプログラミングコンテストが行われている.情報オリンピック日本委員会は,Supercomputing Contest,全国高等学校パソコンコンクール,全国高等専門学校プログラミングコンテストといった中高生・高専生対象のコンテストとも提携して諸事業を実施している.IOI の特徴としては,中高生を対象とした大会であること,そして,何と言っても世界各国から代表選手が集うオンサイトの国際大会であることが挙げられる.若い選手にとって,世界中の同年代の選手と直接交流することにより得られる刺激は何物にも代え難い.
     IOI で出題される課題の特徴としては,競技時間が比較的長いこと(1 日 5 時間の競技を 2 日間行う),個人戦であること,そして,アルゴリズムに関する高度な思考力を問う課題が多く出題されることが挙げられる.単なる知識やプログラミング技術だけを競う大会ではない(とは言うものの,好成績を収めるためには知識・技術力があった方が有利なことは言うまでもない).制限時間は各競技日ともに 5 時間であり,提出したプログラムを実行した結果(「出力のみの課題」の場合は出力ファイルの内容)に基づき得点が与えられる.早く提出することへのボーナス点は無く,制限時間内であれば解答の再提出が可能である(今年は提出回数は 64 回までという制限があったが,これが問題となったケースはとても少ないだろう).また,誤った解答を提出した場合のペナルティも無い.高度な課題にじっくりと取り組むことが要求されている
     IOI2012 で出題された課題は以下の 6 題である.
               
    IOI2012 競技課題
    競技 1 日目    小石オドメーター
      パラシュートリング
      ザリガニの代書
    競技 2 日目 理想の都市
      最後の晩餐
      馬上試合大会

     IOI2012 では,さすが IOI と言える,とてもよく練られた良問が出題された.各課題がいくつかの「小課題」に分けられている.「小課題」の中には,単純な実装で得点が得られるものから,高度なアルゴリズムを実装しないと得点が得られないものまで含まれている.従って,1 つの課題を丸ごと落として 0 点になってしまう可能性は少ないが,満点を取るのは難しい.また,今年は,従来型のバッチ型課題(仕様をみたすプログラムを提出して,その実行結果に基づき得点が与えられる課題)以外にも,「小石オドメーター」といった思考力を問う新傾向の課題も出題された.
     このような良質の課題を準備してくれた HSC (Host Scientific Committee) の努力には敬意を払いたい.その甲斐もあり,IOI2012 では各参加者が自分の実力を発揮して競技に参加できたようだ.競技結果は極めて滑らかな分布となった(詳細は IOI2012 ホームページを参照).2 日間を通しての満点(600点満点)は Johnny Ho さん(アメリカ) 1 人のみである.3 大会連続の IOI 総合 1 位だったベラルーシの Gennady Korotkevich さんは,今年は 2 位(588 点)であり,IOI で通算 6 個目の金メダル(IOI2006 の銀メダルを含めると通算 7 個目のメダル)を獲得した.
     IOI では,伝統的に,2 日間の競技を行い,各競技日には 3 題の課題が出題されている.過去には(IOI2009 ブルガリア大会,IOI2010 カナダ大会) 1 日に 4 題 (2 日間で合計 8 題) が出題されたこともあったが(ただし,4 題のうちの 1 題はとても易しい課題),IOI2011 タイ大会で以前の数に戻り,この変更は IOI2012 でも引き継がれた.
     IOI の問題文には背景となる「ストーリー」が付いていることが多い.今年はイタリアを代表する芸術家レオナルド・ダ・ヴィンチにちなんだ課題が出題された.例えば,2 日目の「最後の晩餐」は絵画を描くレオナルドに対し,助手が効率良く絵の具を届ける戦略を求める課題である(これは本質的には情報量の符号化に関する課題である.課題に取り組む際には,絵画ついての知識はもちろん一切必要ない).
     競技について気づいた点をいくつか述べる.

     (1) スコアボードの公開 : IOI2010 カナダ大会から導入されたスコアボードは今年も継続された.今年のスコアボードサーバへのアクセスは良好で,日本も含めて,世界各地から多くの人々が IOI2012 の競技を臨場感を持って観戦してくれたようである.スポーツのオリンピックと同様,競技の生の様子を伝える試みである.
     スコアボードの公開の影響として,従来は公開されることがなかった下位選手の成績が明らかになっている.この点は競技終了後の GA meeting でも議論になった.IOI では規則ではメダリスト以外の成績を公表しないこととなっている.スコアボードの公開はその規則に反するのではという意見があった.IOI2012 のホームページを見ると,最終的な競技結果("Results")のページには確かにメダリスト以外の成績は公表されていない.しかし,スコアボードを見ると,全員分の成績を(0 点の人も含めて)見ることができてしまう.今後,競技結果の公表のありかたも含めて,議論になっていくものと思われる.

     (2) プロシージャ方式 : IOI2010 カナダ大会から導入された「プロシージャ方式」は今年も継続された.これは,実行可能なプログラム全体ではなく,アルゴリズムの根幹をなす「プロシージャ」のみを提出するものである.選手は入出力インターフェースを実装する必要が無く,入出力の些細なミスで失点することが防げる.一方で,開発環境に慣れていないとデバッグがやりにくいという欠点もある.GA meeting でも特に議論にはならなかったので,「プロシージャ方式」は来年以降も継続される可能性がある.なお,JOI では「プロシージャ方式」を採用しておらず,予選・本選・春合宿ともに旧来の方法(実行可能なプログラム全体を提出する)で行なっているが,特に混乱は無かった.日本選手にとって「プロシージャ方式」であるかどうかはあまり大きな問題ではないようだ.

     (3) CMS (Contest Management System) : IOI2010 カナダ大会・ IOI2011 タイ大会では RunC と呼ばれるプログラミング・テスト環境が導入された.今年は RunC に代わり,CMS (Contest Management System) が導入された.これは,オープンソースのコンテスト実施環境である.

     (4) トークン : IOI2010 で導入された「トークン」は今年も継続された.選手は競技中に「トークン」を使うことによって採点結果を確認できる(ただし使用可能なトークン数に制限がある).以前の IOI では選手は競技中には採点結果が分からず,些細なミスで得点を大きく落とすことがあった.「トークン」が採用された結果,このようなことが起こりにくくなり,選手がより実力を発揮できるようになった.

     (5) 紙を使わないコンテスト : これは今年が初めての試みである.紙資源を節約するため,今年の IOI では問題文は PDF 形式で与えられた.ただし,選手は,必要に応じて競技中に PDF ファイルの印刷をリクエストすることができる.印刷ジョブ数から推測すると全体の 6〜7 割の選手が問題文を印刷したようだ.また,IOI 期間中に発行される Newsletter も,ウェブページを通じて PDF ファイルで配布され,紙媒体では配布されなかった.

     (6) 翻訳 Wiki システム : これも今年が初めての試みである.昨年までは各選手団の団長が翻訳を紙媒体で提出していたが,今年は翻訳 Wiki システム上で翻訳を作成し電子的に提出することになった.これにより印刷や袋詰といった作業が不要になった.効率良く翻訳作業に集中できるはずだったのだが,現実には,Wiki システムのテストが不十分で戸惑うことがあった.また,IOI2012 主催者が用意した環境では PDF ファイルの日本語フォントが綺麗に表示できないことが発覚したが,結局,対策を取ることはできなかった(PDF ファイルを読むことはできたので,競技自体には支障は無かった).競技終了後の GA meeting では,新しいシステムを導入する際には事前のテストを十分に行うべきであるという意見が出た.

     (7) ノートパソコンの利用 : これも今年が初めての試みである.今まで IOI はデスクトップパソコンで行われていたが,今年の競技ではノートパソコン (Acer TravelMate 5744, display 15.6″HD 16:9 WXGA, CPU: Intel i3-380M 2.53 GHz 3 MB L3 cache, OS は Ubuntu 12.04 LTS i386, Gnome Classic) が用いられた.ノートパソコンのキーボードはイタリア仕様のため,外付けキーボード(US キーボード)が全選手に支給された.また,日本選手の中にはキーボードを日本から持参した者もいた(IOI では事前に提出して検査を受けることで,キーボードの持ち込みが認められている).ノートパソコンはデスクトップに比べて画面が狭いが,競技に支障があったという話は特に聞かなかった.なお,JOI では,本選・春合宿ともに,ノートパソコンで行っている.

     (8) 不正行為への対策の強化 : 今年は会場への腕時計の持ち込みが禁止された(昨年まではデータ保存機能の無い腕時計の持ち込みは許可されていた).ただし,現地のスタッフからは財布やパスポート等の貴重品も持ち込み禁止と言われたため,日本選手の中には戸惑う者もいた.現実には,財布やパスポートを(持ち込み禁止と知らずに)持ち込んでしまった選手もいたかもしれない.

     (9) 競技環境にインストールされているソフトウェア : 以前より,競技中に使用できるエディタ・コンパイラは競技規則に明記されていたが,それに加えて今年は python 2.7.3, ruby 1.8.7 が使えることが明記されるようになった.競技実施前は特に気に留めなかったが,後になって考えてみると,「小石オドメーター」のような課題に取り組む際は,C/C++, Pascal だけでなく,必要に応じて python, ruby 等も組み合わせて使った方が便利だったということかもしれない.

     (10) 問題文の長さについて : IOI の問題文は,ストーリーや細かい仕様が書かれていることもあり,長文になってしまうことが多い.このことは HSC (Host Scientific Committee) も認識しており,問題文を短くするように努力したようである.それでも,競技終了後の GA meeting では,問題文が長すぎるという意見が出た.問題文の原文は英語であり,英語から離れた言語を使う国・地域にとって翻訳は大きな負担となっている.日本が翻訳に苦労するのは毎年のことだが,今年は翻訳 Wiki システムに不慣れだったこともあり特に苦労した.2 日とも日本が翻訳作業を終えたのは朝 6 時を過ぎてのことである.翻訳作業は競技前日の夜遅くに開始される(今年はトラブルもあり開始が遅れることがあった).もう少し早い時間に開始できるとよいのだがと毎度のことながら思う.

     IOI では,IOI2010 カナダ大会で大きな改革が行われたが,そのうちのいくつかは今年も(改良され)引き継がれた.また,新たな改革も行われ,それらのうちの多くは成功だったと思う.ただし,変更点の周知に関する連絡不徹底があった感は否めない.
     GA meeting でのオーストラリアからの報告によると,「CMS」「紙を使わないコンテスト」「翻訳 Wiki システム」は来年も継続する予定とのことである.

  5. 大会運営について
  6.  今年の IOI の運営は予想以上にしっかりしたものだった.IOI では予定通りに物事が進まないことも多いが,イタリア大会では大きく遅れることも無く(もちろん多少の遅れはあったが,許容範囲内である),ほぼ順調にスケジュールが進んだ.宿舎・競技環境ともに申し分無く,日本選手団ガイドの Veronica さんが流暢な日本語で選手とコミュニケーションをとってくれたこともあって,選手たちはリラックスした雰囲気の中で競技に参加できた.
     ただ,不満としては,宿舎のインフラが弱く停電が何回か起きたこと,インターネット環境が貧弱だったことが挙げられる.停電復旧後もインターネットが使えないことがあり,日本との連絡には苦労させられた.また,競技前日の翻訳作業中にも停電があり,翻訳サーバが落ちたのには苦労した(急遽,隣の建物からケーブルを引いて電力をまかなったようである).

  7. 観光・国際交流について
  8. 競技の合間の 9 月 26 日には,ガルダランドとミラノに分かれて観光が行われた.ガルダランドは人気のテーマパークであり,選手たちは随行役員(の一部)とともにリラックスし,観光・国際交流を楽しんだようである.団長・副団長と一部の随行役員はミラノに行き,午前中は Young talents & the digital future conference という会議に出席した.この会議には IOI 創始者の Sendov 氏や IOI の元選手もパネリストとして参加した.
     競技終了後の 9 月 28 日にはヴェネツィア観光を行った.ヴェネツィアまでは貸切列車が手配され,注意事項や緊急連絡先を記したプリントが事前に配られるなど,配慮の行き届いたものであった.ヴェネツィアは「水の都」と呼ばれるだけあり,海上交通が発達した美しい街である.水上タクシーでの移動も楽しむことができた.ただ,待ち時間が多く,ヴェネツィア市内を散策する時間やお土産を買う時間は全くと言っていいほど無かったのは個人的には残念だった.
     昨年までと同様,選手が競技を行っている時間帯には,団長たちを対象に IOI Conference が開催された.競技 2 日目の時間帯の IOI Conference では "Teaching and Learning Informatics for school" というパネルディスカッションが行われ,谷聖一副団長が日本の情報科学教育について "CS Unplugged in Japan" という報告を行った.

  9. 感想
  10.  今回の日本代表選手の 4 名は,IOI という舞台で大きな自信を付けたと思う.一方で,世界にはまだまだ上がいるということを実感したことと思う.笠浦君,秀君,村井君は選手としての IOI は今年が最後なので.大学生になってからも,ぜひ,自分の道を切り拓いて,国際的に活躍していってほしい.劉君はまだ高校 2 年生なので,来年の JOI/IOI でもぜひ頑張ってほしいと思う.今回の 4 名の活躍に続き,来年以降も多くの中高生が JOI/IOI に挑戦してくれることを期待したい.
     最後になりましたが,IOI2012 でこのような好成績をおさめることができたのは,選手の皆さんの頑張りはもちろんのこと,随行役員として翻訳や選手のアドバイスにあたった JOI OB の皆さん,日本情報オリンピックの運営・選手団派遣に様々な形でご協力・ご支援していただいた皆様のお陰です.この場を借りてお礼を申し上げます.どうもありがとうございました.