(2018年9月取材)
世界中から集まったプログラミングの達人の高校生・中学生がプログラミングの技を競う「国際情報オリンピック」(International Olympiad in Informatics:IOI)。1989年の第1回ブルガリア大会以降毎年世界各国で開催され、30回目となる日本大会は、87の国と地域から335人が参加して、茨城県つくば市で開催されました(9月2日~8日)。
日本からは、国内予選を勝ち抜いた4人の高校生・高専生と、国内予選で次点となった特別参加(※1)の4人の高校生が出場。8人全員がメダル獲得(特別参加生はメダル相当)という快挙を成し遂げました。
※1 競技には参加するが、公式記録や表彰の対象とはならない
情報オリンピックは、世界各国のプログラミング能力に優れた生徒を見出し、その能力の育成を助けるとともに、優秀な生徒や指導者の国際交流を目指しています。
まさにプログラミングの「頂上決戦」ですから、競技としての様々なユニークなルールがあり、競技中の会場には選手と運営担当のスタッフ以外は入ることができません。しかし、競技が行われない日には、会場となったつくば市近郊のエクスカーションや交流会が開催され、様々な国や地域の選手たちと交流を深めました。
今回は日本代表として出場した皆さんや、会議の運営に当たった方々からお話をうかがいました。
[第30回国際情報オリンピック日本大会 スケジュール]
9月1日(土) 到着&受付
9月2日(日) 開会式、プラクティスセッション
9月3日(月) 競技1
9月4日(火) エクスカーション(@つくば市)
9月5日(水) 競技2、ジャパンステージ
9月6日(木) エクスカーション(@ひたちなか市)
9月7日(金) ナレッジフェア、表彰式・閉会式、サヨナラパーティー
(9月8日(土) 帰国)
第30回国際情報オリンピック日本大会 HPはこちら
開会式はすべて英語!
大会1日目は、つくば国際会議場の大ホールで開会式が行われました。科学技術のトップを競う大会だけに、VR(バーチャル・リアリティ)やサウンドを駆使した華やかな演出です。また、開会式の進行や挨拶もすべて英語で行われ、国際大会であることを改めて感じます。
開会宣言、主催者・共催者・来賓の挨拶に続いて、出場選手全員がスライドで紹介されました。今回は、国際情報オリンピック委員会(IOI)に加盟するすべての国と地域が参加する初めての大会となりました。1か国の代表は4人までですが、1人だけで参加の国もありました。また、政情が不安定な地域からの選手の紹介では、会場からひときわ大きな拍手が送られました。
IOI 2018 JAPAN 実行委員(海外ではAmbassador)のヴァーチャルアーティスト「IA」(イア)。開会式では、彼女のボカロのパフォーマンスもありました。
この開会式には、秋篠宮佳子さまが出席され、英語のスピーチもなさいました。開会式の後には、佳子さまが日本代表選手団のメンバーに励ましの言葉をかけられる機会も設けられました。選手の皆さんは、「競技本番より緊張した!」そうです。
プラクティスセッション~本番の会場でコンピュータの動作確認
開会式の後は、本番の会場に入って、競技で実際に使うコンピュータの動作確認を行う「プラクティスセッション」を行いました。
会場は大きめの体育館くらいの広さで、パソコンの乗った机が互い違いに並んでいます。競技は全員が同じパソコンを使って行うため、本番前に使い勝手や反応の速さに慣れておく必要があります。その意味で、「戦い」はすでに始まっています。
プラクティスセッションは、引率の先生たちも入って、思ったよりもなごやかな雰囲気ですが、競技が始まると、選手と運営スタッフ以外は会場に入ることはできません。ここで大会2日目と4日目に行われる各5時間の競技の得点で順位を競います。
2分でわかる情報オリンピック
情報オリンピックの順位って、どうやって決めるの?と思いますよね。ここでざっくり概要を説明します。
まず出場資格は、「大会開催前年の9月から12月にかけて代表となる国の中等教育機関に在籍し、大会開催年の7月1日に20歳以下であること」とされています。日本代表を専攻する日本情報オリンピック(JOI)では、「国際大会開催年の4月1日時点で20歳未満である高校生以下」を対象としているので、現在の中学校1年生にも出場資格があります。
情報オリンピック日本委員会のホームページはこちら
情報オリンピックで出題される問題では、原則として「与えられた問題を解く、効率がよいアルゴリズムや質のよいアルゴリズムを考え出し(アルゴリズムの設計)、そのアルゴリズムに基づいて正しく動作する解法プログラムを作成すること(アルゴリズムの実装)」の質の良さ(=効率)と速さを競います。
競技日は2日間あって、選手は各競技日に5時間で3問を解きます。問題は、座席の決め方や高速道路の料金計算など、実社会で発生する様々な課題から出題されます。数学的な理解力、分析力、思考力、発想力などが求められます。
具体的には、「こういう条件で問題解決をするためにはどうしたらよいか」という問題を与えられ、それをできるだけ効率よく解決するためのアルゴリズムを考えます。さらに、それに基づいてコンピュータ言語(C++、Pascal、Javaのいずれか)でプログラムを書き、コンピュータに実装します。作成したプログラムが正しい答を出すかどうかをテストするためのデータが問題ごとに数個から20個程度与えられ、これらのデータのうちのいくつに正しい 答を出力したかで成績が決まります。ただし、問題ごとにプログラムの実行時間や使用メモリ量に制限が設定されています。
今大会から、選手にも途中段階の解答率や現在の順位が速報で見られるようになりました。また、いったん提出した後でも、制限時間内であれば再提出ができるので、よりブラッシュアップすることも可能です。
成績は個人に対して付けられ、上位12分の1に入った人に金メダル、その次の12分の2に入った人に銀メダル、その次の12分の3に銅メダルが授与されます。
競技本番ってどんな感じなの? 実行委員の方に聞きました
問題はどのように与えられるのですか。 日本語で出題されるのですか。
問題は競技当日に3問まとめて封筒に入ったプリントの形で各人の机に配布され、スタートと同時に封筒から出して解き始めます。
オリジナルの出題は英語ですが、各国選手団の団長・副団長(日本チームは、過去の情報オリンピックに出場した大学生)が前日夜に母国語に翻訳したものを使います。事前に問題が漏れないようにするため、競技前夜の選手はQuarantine(隔離)といって、ホテルで孤独な時間を過ごすことになります。
競技会場には何を持ち込むことができますか。
持ち込んでよいのは、鉛筆とキーボード(*)、マウス(*)、マスコット(*)、必要であれば紙の辞書はOKです。ペンケースは持ち込むことはできないので、鉛筆を数本にぎって会場入りします。服装は各チームのTシャツやポロシャツとIDカードと決められており、帽子や上着はNGです。
もちろん、スマホも持ち込むことはできません。
マスコットは、けっこうみんな持ち込んでいます。緊張する中での癒しになってくれるし、他の国の人と交流するきっかけにもなります。
(*マークのものは事前に申請して許可を得ることが必要です)
5時間ぶっ続けでプログラムを書くのですか。食事はどうするのですか。
今回の場合だと、9時にスタートして終了が14時で、昼食はその後になります。競技中は、水とバナナと栄養ゼリーが支給されるので、それを飲んだり食べたりすることはできます。水はコンピュータの画面からオーダーすると、スタッフが持ってきてくれます。
競技中は集中しているので、お腹が空いたと感じることはありません。逆に、終わるとみんなぐったりですよ。
超難問揃いだと思いますが、解き方のコツというのは、あるのですか。
まずは問題をざっと読んで自分が解けそうなものから、というのはみんなやっていることですが、そのためにはとにかく過去問をやってみて、「こういう時にはこういうアルゴリズム」というストックを自分の中に持っておくことが大事です。
情報オリンピックの出場者には、普通にシステムを作るとしたら100時間近くかけるレベルの問題を数秒で解いてしまうバケモノのような人もいますから、ペースを乱されないことも大事ですね。上位に行くためには、できるだけ少ない項数のプログラムを書くことがポイントです。満点は難しくても、各問題に設定されている小課題を確実につぶしていくことで、結果的にいいところまで行けることもあります。
過去の問題ですごく変わった問題にはどんなものがありましたか。
毎年いろいろな問題が出ていますが、2012年のイタリア大会では、「オドメーター」という架空の(その場で条件を与えられた)プログラミング言語を使って、指定された動作を作るプログラムを書け、というものがありました。これは、C++とかJavaがそのまま使えるわけではないので、みんな意表を突かれたと思います。
IOI 2012年「小石オドメーター」
https://www.ioi-jp.org/ioi/2012/tasks/odometer-jp.pdf
また、2013年のオーストラリア大会では、ある絵のデジタル画像を与えられ、その特徴から「新構造主義の現代美術」「印象派」「アクション・ペインティング」「カラーフィールド・ペインティング」の4つの様式のどれに属するかを判断するプログラムを、C++かPascalのいずれかで書く、というものでした。「見ればわかるもの」をプログラムに書くことの難しさを象徴するような問題です。
IOI 2013年「美術の授業」
https://www.ioi-jp.org/ioi/2013/tasks/art_class-jp.pdf
競技を終えて、ようやくリラックス
大会日程最終日の7日目の会場に行ってみました。成績はほぼ確定しているので、開会式の時よりもずっとリラックスした雰囲気です。他の国の選手とジェスチャー入りでしゃべったり、真剣にカードゲームをしたり、けん玉で高度な技に挑戦したり、とみんな思い思いに過ごしています。ちょっと意外だったのは、スマホやタブレットでゲームをしている人が思ったより少なかったことです。ブログラミングの練習の時は、一日のほとんどをコンピュータに向かう生活を送っている人たちですから、たまにはデジタルモノから離れる時間も必要なのかもしれません。
日本選手の層の厚さを証明! 特別選手団の皆さんに聞きました
今大会は、主催国である日本から、日本代表選手に加えて特別参加選手4人が参加。全員がメダル獲得(金1、銀2、銅1)というすばらしい成績を修め、日本選手の層の厚さを世界に示しました。
世界の強豪たちを驚かせた “Yoneda Twins”
米田優崚くん(筑波大学附属駒場高校1年)[金メダル相当](写真左)
米田寛崚くん(開成高校1年)[銀メダル相当](写真右)
今回の感想を聞かせてください。
今回は自分に合ったいい問題が出たので、実力以上の力が出せたかなと思います。英語はしゃべれば何とかなるもので、いろいろな国の人と話すことができました。日本は国内予選を通過する方が難しいので、来年はまず予選通過を目指します。まだあと2年出場の機会があるので、頑張ります。(優崚くん)
実力通りだったかなと思います。面白い、いい問題でした。国際オリンピックだからといって、特に変わったことはなかったです。いろいろな国の人と友達になれたのは収穫でした。来年は、まず日本代表になることが目標です。国際オリンピックに出たら、今年以上を目指します。(寛崚くん)
プログラミングが小学校から必修になりますが、どんなふうに勉強したらいいと思いますか。
プログラミングは向き・不向きがあるので、「プログラミング的思考」が楽しいと思えたら、それでいいのではないかと思います。小学生でもプログラミングはできるけど、アルゴリズムを本当に理解するのは低学年では無理なので、早く始めればいいというわけではないと思います。プログラミングにはいろいろなやり方があるので、先生が教えたとおりに作るというのを早くから身に付けてしまうのは、よくないかなと思います。(優崚くん)
僕も、小学校からプログラミングをやっても、オリンピックに出るというのはまた違うと思います。ごく一部の天才が、中1の後半くらいからすごいプログラムを書くことがありますが、小1から目指そうとしてもとても無理です。また、解を考えることと、実装は違うので、本当にやれるようになるのは中2、中3くらいだと思います。その意味で、情報オリンピックって、始めて数年で世界大会に出られるんですよね。
学校でプログラミングを教えるときは、先生が用意した正解以外はダメ、という教え方はしてはいけないと思います。自分でアルゴリズムを考える楽しさがわからなくなってしまいます。今回の1日目に出たコンボの問題は、いろいろな解法があって、どんなやり方がいいか考えるのが面白かったです。(寛崚くん)
平木康傑くん(灘高校1年)[銀メダル相当] (写真左)
今回は特別参加という形でしたが、オリンピックの練習としても、競技プログラミングの本番としても、すごくいい経験になったと思います。来年は、ぜひ世界大会に出場して、今度は金メダルを取りたいと思います。
岸田陸玖くん(京都市立堀川高校3年)[銅メダル相当] (写真右)
僕は高3なので来年はもう出場できませんが、高校最後の夏に最高の経験ができました。プログラミングの醍醐味は、わからないことがわかって、できた時の快感です。本当に「やったぜ!」と思います。そういう気持ちを味わうことができた大会でした。
表彰式・閉会式~華やかに、晴れがましく
表彰式は、開会式と同じつくば国際会議場の大ホールで行われました。アトラクションと実行委員・来賓の挨拶に続いて、いよいよメダルの授与式です。
銅メダルから順に受賞者の名前と国名がコールされ、スクリーンに写真が映し出されると、大きな拍手が起こります。かぶりモノのままで登場する人や国旗を羽織って出てくる人もいます。中には「…ホントに高校生?」と思われるような大人っぽい人もいますが、メダルをもらうときの表情は本当に晴れやかです。
メダル授与の最後に、個人成績トップの表彰がありました。今回の優勝者は、アメリカの高校生でした。
実は、今回トップの成績が600点満点中499点、9位はすでに300点台と、例年になく得点が低かったそうです。最高点が60点にとどまった問題もあり、難問揃いだったことがわかります。
トップ10人の内訳は、アメリカ2人、中国3人、ジョージア、ベラルーシ、日本、トルコ、ベトナムが各1人で、アメリカと中国が目立ちますが、金メダル全体(上位12分の1)を見ると、韓国やイスラエル、ロシア、オーストラリアなどコンピュータ教育に力を入れている国も複数入賞しています。
セレモニーの最後に、次回開催国のアゼルバイジャンに国際情報オリンピック委員会(IOI)の旗が手渡されました。
お疲れさまでした! 日本代表選手団の皆さんに聞きました
閉会式終了後、日本選手団の皆さんにお話をうかがいました。
井上航くん(北九州高等専門学校2年)[金メダル]
何と言っても金メダルが取れたのは嬉しいです。今回は実力の2割増しくらいの力が出せたと感じています。得意な分野の問題が出たのと、あとはひらめきが活かせたことがよかったと思います。
情報オリンピックに出たことで、コミュニケーション力と、集中力はすごく鍛えられたと思います。ここをステップにして、他のコンテストにも出場したいと思っています。将来はまだ具体的には決めていませんが、高専を卒業したら、大学に入ってプログラミングを続けていきたいと思っています。機械学習に興味があるので、企業の研究者になれたらと思っています。
清水郁実くん(N高校2年)[銅メダル]
今回は、1日目で苦手なタイプの問題が出てしまって、2日目で巻き返そうとしましたが今一歩及ばず、とても残念です。かろうじて銅メダルが取れた、という感じです。
将来は、文系で何かすごいことができたらと考えています。これから情報オリンピックを目指す人は、とにかく練習量が必要です。死ぬほど大量の問題を解く覚悟を持った方がいいと思います。そこで頭の良さがあるとラクができるかな、と思います。
行方光一くん(筑波大学附属駒場高校1年)[銅メダル]
僕は1日目で大失敗してしまって、銅メダルに終わってしまいました。大会前に、今回ルーマニア代表で出場している人とネットで知り合っていたので、ブロンズの悲しみを分け合いました。
まだ2回、出場のチャンスがあります。日本にもライバルがたくさんいますので、彼らを倒してリベンジします。
将来は、今回金メダルを取った井上くんを雇って仕事をさせるような、大きいことができたらと思っています(笑)。
細川寛晃くん(灘高校2年)[銀メダル]
プログラミングは小5から始めましたが、競技プログラミングを始めたのは中学で部活に入ってからです。今回は、1日目に部分点の取りこぼしがありましたが、銀メダルを取るために取るべき点を確保できて、ほっとしています。外国の選手と一堂に会して競技するのは、とても刺激を受けました。
あと驚いたのは、母語が英語でなくてもどんどん話しかけていく人が多かったことです。世界中に天才がいるんだなあと感じました。英語の勉強もしなくちゃと思っています。
◆下記から、参加者全員の全体と個々の問題の得点と順位が見られます。また、それぞれ選手の名前の部分をクリックすると大会でどう戦ってきたかの経過も見られます。
https://ranking.ioi18.net/Ranking.html
次回はアゼルバイジャン共和国で開催
次回の国際情報オリンピックは、2019年にアゼルバイジャン共和国で開催されます。日本代表選手を選抜する国内大会、第18回日本情報オリンピック (JOI 2018/2019) は、12月9日にネット上で予選が行われます。参加申し込みは10月9日に始まりました。出場者の皆さんが言われていたように、プログラミングはトレーニングと適性次第で、始めてから数年で世界レベルまで行ける可能性もあります。興味を持った人は、ぜひチャレンジしてみてください!
第18回日本情報オリンピック
https://www.ioi-jp.org/joi/2018/index.html
日本情報オリンピック 過去問と解説はこちら
https://www.ioi-jp.org/joi/problem_archive-light.html
国際情報オリンピック 過去問と解説はこちら
https://www.ioi-jp.org/ioi/problem_archive.html
河合塾 K会のご案内、科学の甲子園も始まる!
◆河合塾 K会
河合塾の東京・本郷にあるK会では、科学オリンピックの出場を競う中高生も集まる日本有数の塾。
国際情報オリンピックの団長の小倉さんなど、科学オリンピック国際大会の金・銀・銅受賞者の先輩、また多くの元出場者も指導する、理数や言語分野の学問の先端の授業が受けられ、最高の知的好奇心が喚起される塾です。
数学の清原くん、情報の清水くんなど、ここで学び大会にで活躍されました。様々な通常講座、冬、春の集中講座がありますので、ぜひのぞいて見てください。
詳しくはこちら→https://www.kawai-juku.ac.jp/kkai/
◆科学の甲子園
日本国内では、来年3月にさいたまスーパーアリーナで行われる「科学の甲子園」本選の各都道府県ごとの予選大会も11月までに向けて、本格化されます。
女子チームも年々増えてきてその活躍は期待されるところ。自分の、そして地元の高校の戦う模様も、ぜひとも、各都道府県大会をチェックし応援しよう!!
第8回大会の案内はこちらから
http://koushien.jst.go.jp/koushien/index.html
都道府県予選の日程
http://koushien.jst.go.jp/koushien/selection/pdf/h30_schedule_180823.pdf
IOI 2018 JAPAN の問題は、クリエイティブ・コモンズ 表示 4.0 国際 (CC BY 4.0) https://creativecommons.org/licenses/by/4.0/deed.ja の元で公開されています。