「中高生国際Rubyプログラミングコンテスト2022 in Mitaka」で最優秀賞を受賞した学生が、ENECHANGEでのインターンシップを選んだ理由
ENECHANGE株式会社では、学生を対象とした長期インターンシップを実施しています。このインターンシップは学生の強みや意向に応じて取り組みをカスタマイズするのが特徴です。個々人に大きな裁量が与えられ、アイデアを形にする機会が豊富に用意されています。
エネルギークラウド事業部のEVユニットでサーバーサイドエンジニアとしてインターンシップに参加しているのが山田直生。彼は小学2年生からRubyに触れ、2022年には「中高生国際Rubyプログラミングコンテスト2022 in Mitaka*」で最優秀賞を獲得した実力者です。
今回は山田が最優秀賞を受賞するまでの道のりと、ENECHANGEのインターンシップに参加することを決めた理由などを聞きました。
長く使い続けているRubyは、自分の手になじむ言語
――初めに、数あるプログラミング言語のなかで、山田さんがRubyを特に好む理由についてお聞きしたいです。
山田:最初に触れたプログラミング言語がRubyだったのが大きいです。父親がソフトウェアエンジニアでして、その影響もあって小学2年生でプログラミングを始め、プログラミング教室に通うようになりました。当時から高校生までは、ほぼRubyしか使っていませんでした。
大学生になってからは、大学の授業や他社でのインターンシップで他の言語も経験しましたが、それらと比較することで余計に「Rubyは書きやすい」と再認識しました。すごく手になじんでおり、好きな言語です。
――今回のインタビューでは、「中高生国際Rubyプログラミングコンテスト」について聞いていきます。どのような経緯で応募したのですか?
山田:最優秀賞を受賞したのは2022年ですが、その前の2020年と2021年のコンテストにも応募していました。このコンテストの存在を知ったのは、小学生の頃にプログラミング教室でパンフレットを見たことがきっかけですね。ただ、存在自体は知っていたものの、中学生の頃は応募するまでには至りませんでした。転機になったのはコロナ禍で、部活がなくなったんです。空いている時間が急に増えたので、コンテストに出てみることにしました。
2020年・2021年のコンテストではアプリの完成度に課題があった
――それでは、2020年のコンテストのことから聞かせていただけますか。
山田:この年に作ったのは写真投稿ができるSNSで、奨励賞をいただきました。一般的なSNSでは、投稿した写真はデジタルデータですから半永久的にそのままの状態で残ります。「もしデジタルデータの写真が劣化したら面白いんじゃないか」と考えて、投稿してから時間が経つにつれて、画像があせていくSNSを作りました。アイデアには自信がありましたが、当時はまだRuby on Rails初心者だったこともあり、完成度が低かったです。
――翌年はどのようなアプリケーションを作りましたか?
山田:参加者が謎解きを通してエリアを周遊する「周遊型謎解きゲーム」で遊べるようなアプリを作りました。このゲームでは、参加者自身が謎解きゲームの作問をして、他の人たちに出題することができます。
私は体験型の謎解きゲームが好きなんですが、「クイズなどと比べると初心者がゲームを作って遊び始めるハードルは高い」と感じています。クイズは道具や施設が不要ですし誰でも作問者になれますが、体験型謎解きゲームに取り組むには会場の準備が必要で運営するにも手間がかかります。そこで、Google Mapと連動させて「参加者がこの場所に来たらこの謎を出題する」という仕様のアプリを作ることで、体験型謎解きゲームを誰でも楽しめるようにしたいと考えました。
ただ、これも100%の完成度で提出できませんでした。参加者がゲームを楽しむには、Webアプリだけではなくスマホアプリも用意する必要があったんですね。スマホアプリを開発するだけのスキルが当時の自分にはなく、Webアプリと問題の情報を扱うAPIのみを作ってコンテストに出しました。このアプリも奨励賞はいただいたものの、やはり「もっと完成度を上げられるはず」という旨のフィードバックを審査員の方々からいただきましたね。
――2020年・2021年のコンテストの経験をしたことで、プログラミングへの取り組み方に変化はありましたか?
山田:審査員の方々にコードを見てもらう経験をしたことで、「他の人が読んでもわかりやすいコードを書こう」と意識するようになりました。それから、私はRuby on Railsを独学で学んでいたこともあって、知らない機能がたくさんあったんですね。それもあり、審査員の方々から「この機能を使うと、もっと便利になるよ」という類のフィードバックをいくつかいただいたのですが、そうした指摘を次からの開発に必ず反映させるようにしました。
――たとえば、どのような機能でしょうか?
山田:例を挙げると、データベースの初期データや動作確認用のテストデータなどを投入できるseedの機能ですね。審査員の方々から「テストデータなどが何もない状態だと、どういう使い方を想定しているのかわからないから、seedでデータを投入できるようにしておくと良いですよ」という旨のフィードバックを受けて、確かにそうだと思いました。
奨励賞の悔しさをバネにして改善。ついに最優秀賞を獲得
――2022年のコンテストではどのようなアプリを作ったのでしょうか?
山田:2022年は、自分にとってコンテストに参加できる最後の年だったので、なんとしても最優秀賞を獲得したいと思ったんですよね。そこで、上位に入賞するための作戦を自分なりに考えました。2022年はコロナ禍も落ち着いて学校のイベントが増えることが見えていたのと、大学受験の年でもあったためアプリ開発にそれほどたくさんの時間を割けないだろうと思いました。
そんななかWebサイトでコンテストの過去の受賞者情報を眺めていると、「チームで参加している人が多いな」と感じたんですね。私は2020年・2021年とも個人で参加しましたが、チームで参加するとメンバー同士でノウハウを共有できますし開発に割けるトータルの時間は多くなります。「チームを組むと利点が大きいな」と思うようになりました。
ただ、私の通っていた高校では同じ学年に趣味でプログラミングをやっている人が私の他に2人しかおらず、そのうちRubyをやっている人は0人。仲間を見つけようにも仲間がいないという状況だったんです。チームを組みたかったのですが、結局は2022年も1人でコンテストに参加することにしました。
こうした経験をしたことで「プログラミングコンテストに出る他の学生たちも、同じように時間が取れないとか仲間が見つからないといった課題を抱えているはず。ならば、そんな課題を解決できるようなアプリを作ってはどうだろうか」と思い付きました。
そこで、学生同士がつながることのできる「StudentGuild」というマッチングサイトを開発しました。このサイトではプログラミングに限らず、何かのプロジェクトを一緒に進める学生を募集してマッチングさせる機能とSNS機能、チャット機能がひとつになっています。仲間を探している学生同士を結びつけることを目的としています。
審査員の方々からは「ユーザーが必要とする機能がすべてアプリに実装されており、それを1人で作り上げているのが素晴らしい」とか「seedデータがしっかり用意されていたので、実際にアプリを動かして使い勝手を確かめることができた」といった旨のフィードバックをいただきました。過去にフィードバックを受けた内容を改善できた実感がありましたし、念願だった最優秀賞を獲得できて本当にうれしかったです。
ENECHANGEには、エンジニアとして成長できる環境があると思った
――インターンシップ先にENECHANGEを選ばれたのはどうしてですか?
山田:Rubyを書ける会社で働きたいと思い、「RubyKaigi」や「中高生国際Rubyプログラミングコンテスト」などのスポンサーになっている会社を重点的に調べました。ENECHANGEはエンジニアの長期インターンを募集しており、かつ外部イベントのスポンサーをしているだけではなく自社イベントも積極的に開催しているので、学べる環境がありそうだと感じました。
ENECHANGEに入ってからまだ2カ月くらい(取材時点)ですが、希望した通りRubyでの開発に携われますし、仕事の裁量もかなりあります。それに、ありがたいことに9月には自社イベントに登壇することにもなりました。たくさんチャンスを与えてもらえている環境だと感じます。
――最後に、これからENECHANGEのインターンシップに参加する学生に向けて、山田さんからメッセージをお願いします。
山田:学生が業務でコードに触れるというのは、趣味として独学でコードを書く以上に学べることがたくさんあると思うんですよ。だからこそ、特定の企業で何かのタスクを担当しつつ、実務を通じてRubyを学ぶというのは、かなり意義のあることだと思います。
ENECHANGEは前向きに仕事に取り組んでいるメンバーには、より大きな裁量を与える会社です。インターン生が挑戦できる環境だと思うので、すごくお勧めしたいです。それから技術イベントの運営のように広報活動や学習環境の整備にも力を入れているので、成長できる要素が整っていると感じます。
ENECHANGE株式会社では、新卒・中途問わずエンジニア採用を実施しています。
興味のある方はぜひ下記も併せてご覧ください。