国際情報オリンピック

化学オリンピック&地学オリンピックで金メダル、情報オリンピック銀メダルの達人が語る、サイエンスの極意!

坂部圭哉さん 東京大学教養学部理科I類1年(出場時:海陽中等教育学校6年)

■プログラミングを始めたきっかけと、情報オリンピックに出場しようと思ったきっかけを教えてください。

プログラミングのきっかけは、中学の時、学校のロボット部に入ったことでした。プログラミングをしてみたいと思ったわけではなく、「なんだか面白そうだな」という動機で入ったのですが、入ってから、ロボットを制御するためにはプログラミングをする必要があることがわかったため、プログラミングを始めました。

 

情報オリンピックに参加しようと思ったのは、確か中学3年生くらいだったと思います。数学オリンピックをやっていた学校の友人から、「情報オリンピックというものがあって、頭を使うプログラミングのコンテストだ。参加してみてはどうか」といった旨のことを言われ、興味を持ちました。過去問を見ると面白そうだったので、早速その年に参加しました。パソコンがあれば、家からでも無料で参加することができる等、参加のハードルが低かったことも良かったと思います。

 

■ふだんの生活の中で、プログラミングのトレーニングのために何か心掛けていることはありますか。

 

高校生の頃は、情報オリンピック以外にも、様々な競技プログラミングの大会がインターネット上で開催されているので、それに参加することで、プログラミングの練習をしていました。また、よく使われるアルゴリズムがたくさんあり、それは自分では思いつけないので、本を買って勉強しました。本を読んで新しいアルゴリズムを学ぶ時に、それをプログラムに書く練習もすると、アルゴリズムを覚えやすくなる上、プログラムを書く練習にもなるので、良いと思います。また、最新のアルゴリズムやテクニックなどは、本には載っていないので、インターネットで調べたりして知識をつけたりもしました。

 

さらに、情報オリンピックの本選などでは、自分と同じく競技プログラミングをしている高校生たちとたくさん出会えます。そういう場で話をすることで、刺激を受けたり、良い本の情報を手に入れたりすることが多かった気がします。

 

■世界の強豪を押さえて銀メダルを取ることができたのは、どこがポイントだったと思いますか。日頃のどんなトレーニングや心掛けが役立ったと思いますか。

まず、当日焦りすぎたりすることなく、適度な緊張感をもって試験を受けられたことが大きかったと思います。それから頭がよく回るように、テスト前日などは、いつもよりしっかり寝るようにしていました。

 

ふだんの練習がどれほど役に立ったのかは自分でもよくわかりませんが、練習によって着実に実力が付いていたのは確かだと思います。また、テストの難易度だったり、パソコンを使うなど形式が少し特殊だったりするので、予め国内選抜等でその難易度・形式に慣れていたことは大きかったと思います。

 

■坂部さんは化学オリンピックや地学オリンピックでもすばらしい成績をおさめていますが、それぞれのオリンピックの共通点があるとしたら、どんなところでしょうか。

 

抽象的な話になってしまいますが、これらのオリンピックの共通点としては、すでにわかっている知識を組み合わせて、自分の頭で考えて、自分の納得できる答えを作り出すことだと考えています。知識を覚えるだけでは不十分で、でも基礎となる知識くらいは持っていないといけない、そういったところではないでしょうか。

 

でも、最も重要な共通点は、「面白いと思えること」だったように思います。どれも高校ではあまり扱わないようなことが必要になってくるのですが、そういう深いことを自ら学ぶことが面白かったのを覚えています。やっぱり面白いと思えないとなかなか続かないので。

 

それから、これは共通点ではありませんが、将来例えば研究をすること等になった時に、様々な分野の知識がふと役立ったりすることがあるのではないかと感じています。わかりやすい例としては、化学の研究をする時に、コンピュータでシミュレーションする、などのことが挙げられます。

 

■「プログラミングの醍醐味」はどんなところですか。

 

プログラミングを学ぶことで、自分のできることが広がったと実感できたことが、純粋に嬉しかったです。また、人間にはとても大変な計算を、コンピュータがすぐに正確にやってくれる点が素晴らしいと思っています。複雑な計算の答えが瞬時に表示されるのを見ると、今でもちょっとした感動を覚えます。

 

競技プログラミングは、一種ゲームのような感覚で楽しむことができると個人的には思っています。例えば、問題が解けるとすぐにスコアが上がり、嬉しくなるのは、ゲームに通じる点があると感じています。

 

■将来の進路・夢を教えてください

 

科学系の知識を活かした仕事をしたいと考えていますが、具体的には決められていません。

 

■これからプログラミングを学ぶ初心者の方へ、アドバイスやメッセージをお願いします。

 

プログラミングは、最初はとっつきにくく、難しいと感じると思います。なぜなら、最初にたくさんのことを覚えなければいけないからです。しかし、一旦覚えると、自由自在にプログラムを書くことができるようになります。自分の好きなようにプログラムが書けて、パソコンでできることが広がることは、とても楽しいことです。だから、プログラミングを始めたばかりの時に「覚えることが多くて大変だな」と思っても、数週間だけ我慢してください。そのうち「面白い」と思えるようになるはずです。また、周りがみんなやっていなかったり、学校の授業が少なかったりする時でも、自分で本を買ったりして、自分でどんどん先に進んでしまって大丈夫です。

 

■プログラミングを授業で教える時に、どんな工夫をすれば生徒が興味を持ったり、逆についていけなくて困ったりすることなく学べると思いますか。坂部さんだったらどうすると思うか、という観点で教えてください。

 

プログラミングは、最初は覚えることが多かったり、プログラミング特有の「癖」に慣れなかったりと、大変なことが数多くあると思います。ですから、そういう癖が比較的少ない言語(Pythonなど)を使ったり、ブロックを組み立てて疑似プログラミングを行ったりすることで、比較的容易に、プログラミングの重要な概念(変数・配列・繰り返し 等)を学ぶことができると思います。

 

コンピュータの最も得意とすることは、「単純作業を、速く正しく」行うことです。ですから、少ない数のデータで計算するよりも、大量のデータを計算させて、計算が瞬時に終わることを見せることで、コンピュータの真髄を実感してもらえるのではないかと、個人的には思います。

 

また、授業でプログラミングを行うのですから、できる人と、できない人が、どうしても出てきてしまうと予測されます。授業なのでできない側の人に合わせるべきなのかもしれません。しかし、できる人にしても、私が情報オリンピックのことを友人から聞くまで知らなかったように、独学用の良い本や、競技プログラミングなどの良い練習環境のことを知らないことが多々あると思います。ですから、例えば独学用の本を紹介してあげたり、競技プログラミングのことを紹介してあげたり等、自ら学ぶきっかけとなる何かをちょっと提示してあげると、できる人も伸びる環境ができるのではないかと思います。