国際情報オリンピック
友達と話す中から浮かぶインスピレーションが、発想のもとを作ってくれる
河原井 啓さん 東京大学教養学部理科I類1年 (出場時:筑波大学附属駒場高校3年)
■プログラミングを始めたきっかけと、情報オリンピックに出場しようと思ったきっかけを教えてください。
プログラミングをきちんと始めたのは、中学1年生でパソコン研究部に入った時からです。その時は友達に誘われるまま、ただ何となく入部しました。先輩方の作った勧誘のポスターが面白かったのが記憶に残っています。
情報オリンピックに出場したのは、やはり部活で先輩方が参加していたからです。中学1年生の時は全く対策をせず予選で落ちてしまったので、中学2年生以降は、予選出場前に少しでも対策はしておくようにしました。
■ふだんの生活の中で、プログラミングのトレーニングのために何か心掛けていることはありますか。
ふだんの生活でプログラミングをトレーニングしているという感覚は、あまりないです。もちろん、ふだんからプログラミングはしていますが、それはいつの間にかしているという感じではなくて、やる時には、それなりにちゃんとやるぞ、という感じでやるように努めています。
例えば、電車の中でアルゴリズムを考えている時がありますが、その時は特に音楽も聴かず、周りの風景もあまり見ず、できる限り集中して考えるようにしています。それで集中してやった分、他の趣味にも時間を回しています。
ただ、トレーニングということではなく、インスピレーションややる気がわいてくるという点では、仲のいい友達と話しているのが一番いいです。プログラミングをしている友達からは、いろいろな知らないことを教えてもらっているし、プログラミングをしていない友達からも、いろいろな発想のもとの部分を気付かせてもらうことがあります。
■世界の強豪を押さえて金メダルを取ることができたのは、どこがポイントだったと思いますか。日頃のどんなトレーニングや心掛けが役立ったと思いますか。
自分の場合、国際情報オリンピックでは1問の問題が解けたかどうかでメダルの色が変わっていたので、それぞれの問題を完答するまで、できるだけ粘ったことだと思います。そのため、トレーニングでは、問題を解けるまで考え続けていました。わからない問題をずっと考えているのはつらいですが、途中で解くのをやめたことはあまりなかった気がします。
■「プログラミングの醍醐味」はどんなところですか。
自分のできなかったことができるようになっていくことと、世の中のプログラムの仕組みがおぼろげにでもわかっていくことだと思います。前者に関しては、コンピューターというのは結果が基本的にわかりやすいので、他の分野と比べて実感しやすいと思います。後者は、そう思えるまでにある程度時間がかかりますが、実際に自分が使うものの内部が想像できるのは楽しいです。
また、単純にコードというものが美しく感じられてくるということもあります。きれいな数式は眺めているだけで楽しいのと同じように、きれいなコードは見ているとわくわくしたり憧れたりします。そうするともっときれいなコードを書きたいと思って、新しい技術や言語に手を出したくなります。
■将来の進路・夢を教えてください。
もともと様々なことに興味が向く性格だということもあり、まだ将来の進路は決められていません。ただ、大学に入って自分はプログラミングが好きであるということは再確認したので、何かしらプログラムが必要なことをしようとは思っています。
■これからプログラミングを学ぶ初学者の方へ、アドバイスやメッセージをお願いします。
プログラミングを学び続けていくということは、基本的に大変だしつらいものだと思いますが、それに見合った楽しさ・面白さ・感動があります。つらい時でも無理して始めろとは言いません。でも、やる気が十分にあって、実際に始めるのならば、多少わからないこと・つらいことがあっても、その先にある面白さを目指して頑張ってみてください。
■プログラミングを授業で教える時に、どんな工夫をすれば生徒が興味を持ったり、逆についていけなくて困ったりすることなく学べると思いますか。河原井さんだったらどうすると思うか、という観点で教えてください。
どうすれば生徒がプログラミングに興味を持つかについては、「動いた時」と「わかった時」が大切だと思います。動いた時は、なんとなくワクワクしてくるし、わかった時はその先のことをやってみたくなります。でもこの2つを両立させるのは難しくて、動くことを重視しているとなかなかわからないし、わかることを重視しているとなかなか動かせない。結局のところ時間が必要なのだと思います。
生徒がついていけなくなるということについても、やはりどれくらいの速さで進めるかというところによるものが大きいと思います。例えば、1学期かけて条件分岐だけをやっていれば、ついていけなくなる生徒はほとんどいなくなると思います。
ただ、実際には効率もある程度重要なので、そのためにできることはいろいろある気がします。例えば、初心者には開発環境を整えるのは大変なので、事前に用意しておく、30分以上詰まってしまうようなバグは、その都度ヒントを出す・教えるなどしたほうが、効率は上がるはずだと思います。
でも結局のところ、生徒がプログラミングを集中してできるような環境を作るのが一番いい気がします。プログラミングは、ほかの課題があると、なんだかんだ後回しになりがちなものだし、一人でやっていると脱線して他のことをしてしまうこともあります。友達や先生などと集まって、長時間じっくりとプログラミングを勉強できるように特別講座を開いたり、部活の一環として行ったりするのが自分は好きです。