学部2年生チームがハッカソンに初挑戦!その結果は?
2024年1月12日掲出
コンピュータサイエンス学部 桜井 彩花(2年)金城 光成(2年)茅野 光(2年)
コンピュータサイエンス学部 井上 亮文 准教授
プログラミングを学び始めた学生がチームで協力し合いながらアイデアを出し、ゲームやアプリを開発するハッカソン(ハック+マラソン)“StarT-Tech”。2023年9月7日~10日に開催された本大会に、コンピュータサイエンス学部2年の学生3名が参加し、最優秀賞を受賞しました。今回は受賞した3名の学生と本大会で審査員を務めた井上先生に大会を振り返ってお話しいただきました。
■今回、“StarT-Tech”に参加することになった経緯を教えてください。
桜井彩花さん(以下、桜井):参加しようと言い出したのは、私です。コンピュータサイエンス学部(以下、CS学部)の友人から、“StarT-Tech”という初心者向けのハッカソンがあると聞いて。もともとハッカソンに興味があったので、出てみたいなと思って、やる気のありそうな二人に声をかけたんです。金城光成さん(以下、金城):僕は大学に入って初めてプログラミングを始めたので、ハッカソンのようなイベントに参加したことはなくて。桜井さんから誘われた時に、ハッカソンって敷居の高いイメージがあったんですけど、せっかく大学にいるなら、何でもチャレンジしてみたいと思って、今回、参加してみました。
茅野光さん(以下、茅野): 僕も金城君と同じで、桜井さんに誘われたからという部分と、自分の経験にもなるかなということで挑戦することにしました。
井上亮文先生(以下、井上): 私の立ち位置を説明しておくと、今回は審査員としてこの大会に関わっていました。ただ、審査員には基本的にチーム名と作品しか知らされていませんから、どのチームに誰がいるのか、どこの大学の学生かということは何も知らない状態で審査をしていました。また、“StarT-Tech”は、私の研究室の卒業生が大学院時代に発表などを通じて親しくなった外部の大学院生たちと共に、自分たちがコンピュータ分野で活躍して得たものを何らかの形でさらに若い世代にフィードバックしたいと始めたハッカソンです。今回、私はその卒業生から審査員をお願いされて、引き受けた形です。ですから、CS学部の学生が参加していることは全く知りませんでした。
■この大会では、具体的にどういうことに取り組んだのですか?
茅野:“StarT-Tech”は、開催期間中の4日間で、3人1組のチームごとにテーマに沿ったゲームやアプリを開発して発表するというハッカソンです。今回、与えられたテーマは「スター」でした。そこから各チームがどういうものを作るのか考えて、開発していきます。僕たちはスターから星を連想して、そこから自分たちの星“アース(地球)”を、宇宙からアイテムを取ってきて育てるゲーム「STAR SAVORE」を作りました。金城:「STAR SAVORE」はスター(星)、セイヴォアは、守ると捕らえるという2つの意味からつくった言葉です。
茅野:ゲーム自体の説明をすると、真ん中に地球があって、その周辺に9つの軌道があります。その軌道上を水、種、生物のアイテムがぐるぐる回っているので、それらを6回以内にロボットアームで掴んで取ってきます。それに成功したら地球が育つというゲームです。アイテムが軌道を回る速さはプログラムでアイテムごとに変えているので、プレイヤーはタイミングを合わせてアームで捕らえます。
桜井:軌道のアイデアは、茅野君の発案だったよね。「星の軌道はキレイだから、ゲームに合いそう」みたいなことから始まって。あとは「Grow」という星を育てるゲームが既存であるんですが、その辺からも着想を得ました。
茅野:役割分担としては、主に自分がプログラムを担当して、2人にはプログラムの簡単なところと、画面に映す絵などを描いてもらって。
桜井:私と金城君は、絵が描けるので、グラフィックやデザインの部分は2人で担当しようと。なので、茅野君はプログラミングをよろしくみたいな流れでした。
茅野:僕は入学前から少しプログラミングの経験があったので、今回、活かせた気はしています。
■今回の開発で一番、大変だったことは何でしたか?また、それをどう乗り越えたのかお聞かせください。
桜井:大会自体は4日間あるといっても、初日は開会式があって、その後にテーマが発表されますし、最終日は発表会でした。なのでアイデア出しや開発に充てられる期間は実質2日半ほどと、本当に時間との闘いでしたね。最初に三人で計画を立てたけれど、その通りに進むことは、ほぼなくて。この作業を何日の何時までに終わらそうと決めていても、結局、終わらなくて予定時間が延びるということの連続でした。なので、開発って全然計画通りに進まないんだなと実感できました(笑)。金城:僕はテーマに関して、もっと具体的なものが出てくるのかと思っていて。例えば、「○○に役立つアイデアを考えてください」みたいな感じで出題されるのかと思っていたら、「スター」というめちゃくちゃアバウトなテーマで(笑)。2.5日しかない開発期間の序盤にアイデアを出す必要があるわけですけど、アイデアが固まるまではプログラミングにも移行できないし、アイデアが固まるまでに時間がかかってしまって、かなり焦りました。
茅野:そうだよね、やっぱり圧倒的な時間のなさが一番大変な部分だったと思う。限りある時間の中でプログラムを作成しないといけないのに、どんどん時間は過ぎていくし。だから全体で話し合いをして、どういうものを作るのかを決めて、プログラムをどう作っていくかという構造もあらかじめ考えて、効率のいい書き方でプログラミングすることで何とか間に合わせた感じです。
桜井:これまで授業で、その日の内にプログラミングを書いて提出するという課題は、経験があったけど、今回のように結構大きめの開発をたった2.5日でするという経験はなかったからね。自分から参加したいと言い出したことだけど、大変だなとは思っていました(笑)。
■最優秀賞の受賞を知った時の率直な感想は?
茅野:純粋にうれしかったです。開発自体は大変だったけど、同時に楽しかったので。自分たちの作ったものやプレゼンテーションを評価してもらえたことに、とてもやりがいを感じましたね。金城:僕もとにかくうれしかった。プログラミングは全然自信がなかったんで、二人の足を引っ張るんじゃないかという気持ちがありながらやっていて。でも賞を取れたことで、これからも頑張って挑戦していこうというモチベーションになりました。
桜井:正直、私は最初から優勝を狙っていました(笑)。でも、まさか本当に取れるとは思っていなかったので、驚いたし、うれしかったですね。何より、この3人で最後まで開発しきって、一つの作品を完成させることができたことが、一番うれしかったです。二人を誘ってよかったなと思いました。
茅野:確かに優勝できたらいいなとは思っていたけど。でも発表会で他のチームの発表を見たら、「このチームすごいな」というところもあって、優勝はたぶん無理だなとも思っていた(笑)。
金城:僕は、あまり自信はなかったけど、負けず嫌いなんで(笑)、勝ちたいとは思っていました。それに二人がすごく能力も高いし、やる気もあるから、三人で勝ちたいとは思っていた。
井上:私はもちろん、みなさんが参加していることは知りませんでしたが、最優秀賞を受賞したことは、とてもうれしいですよ。というのも、ハッカソンは授業のような答えのある課題とは違って、私たち研究者と同じく、答えのないものを求めて取り組んでいくわけです。自分でゴールや目標を設定して、限られた時間でそれを進めていくという経験は、何事にも代えがたいものになりますから。そういうことに自分たちで挑戦してくれたという点がまず素晴らしいですし、偶然とはいえ自分が一番高い評価をつけたチームが、うちの大学の学生だったので、こんなにうれしいことはないですね。
■特にプレゼンテーションが高評価だったようですが、どのような工夫をしたのですか?
桜井:“StarT-Tech”は、すべてオンラインでの開催でした。プレゼンも録画したものを提出するということでも良かったので、私たちは録画を出しました。茅野:プレゼンの構造を決めたのは、提出の1日前だっけ?
桜井:そうそう。
金城:それぞれ担当部分を割り振って、各自で動画を撮って、それを繋げたんだよね。
茅野:全体で、こういう順に進めて自分たちの作品をアピールしようという構想だけを決めておくという感じで。ただ、自分たちの作品のアピール部分では、今回、「こういうところに苦労した」ということは言わずに、純粋に作品をアピールする形で組み立てました。
桜井:こういうところが楽しめるよ、という部分を強くアピールしていくべきなのかなと思って。
茅野:例えば、今回、取ってくるアイテムの数によって、ゲーム終了時のエンディング場面が違うようにしていて。そういう部分を特にアピールしました。
金城:短い時間で作るので、プログラミングの質も大事だけど、アイデアの豊富さも大事だと思っていて。例えば、ゲーム中にスターにまつわるものが出てくるんですが、そういうところもお楽しみ要素としてプレゼンで紹介しました。具体的には、植物、水、生物の3種類のアイテムが軌道上を回っていて、同じ種類のものを3つ集めると、エンディング画面が変わるんです。例えば、水のアイテムを3つ以上集めると、水の惑星として成長していき、エンディングにはポセイドンが出てきます。ポセイドンの“セイ”と“星”の音読みを掛けてあります。植物のアイテムを集めると、エンディングではブルースターという青い花が咲きます。逆に同じ種類のアイテムを3つ集められずに失敗すると、ヒトデの敵役としてスターフィッシュモンスターがエンディング場面で出てきます。星がうまく育たず、スターフィッシュモンスターに侵略されたというストーリーのエンディングです。
桜井:言葉遊びみたいなものです。スターというところから連想して、スターとか星がつく単語のものを登場させたという感じ。メイン要素というよりは、あくまでもお楽しみ要素ですが。
井上:私が審査委員として評価したのも、みなさんが今、話してくれたようなコンセプトですね。かつ、プレゼンの中でゲームのコンセプトをしっかり話していたところを、一番高く評価しました。技術的な部分やビジュアル的な部分で彼らより優れているチームというのは、当然いました。それでも私だけでなく、他の審査員も彼らに点数を入れたということは、やはりプレゼンを含めて、全体の作品をきちんとアピールできていたところにあるのではないかと思います。
私としては、この大会は単に技術だけを競う場ではなく、テーマに対してどういうアプローチをとっているかというところを重視していて。例えば、テーマである「スター」がゲーム内にあちこち出てきて、全体コンセプトとしてテーマが散りばめられていました。あとは、周りに回っているものをロボットアームで取ってくるというのもアイデア的に意表を突かれました(笑)。一方で、自分でアイテムを選択して取って来て、その結果が最終的に星の形になるという部分は、まさしく今の彼らとリンクするようにも思えて。自分たちで参加を決めて取り組んだ結果、こういうふうに成長したという未来を形作っていく点がいいなと評価しました。
■授業などで学んだことで、今回のハッカソン挑戦に役立ったことはありますか?
茅野:僕らが入学したタイミングで、ラッキーなことにCS学部で“道場”という課外プログラムが始まったんです。色々なテーマの道場があるのですが、僕と桜井さんは1年生の後期から「ロボット道場」に参加していて、色々なロボットについて勉強したり、実際に動かしてみたりということをしています。そこで得た、物事の進め方や集団での共同開発の仕方、アイデアの出し方といった経験が、今回のハッカソンに活かせたと思いますね。桜井:「ロボット道場」では、今、「ロボカップ」という自分で考えて動く自律移動型ロボットの競技会出場に向けて開発を進めているところなんです。そういう大会に向けた取り組み方とか開発のプロセスを道場で知っていたことは役立ったよね。
金城:僕はまだ道場には参加していないんです。だから振り返ってみて、今回、役立ったなと思うのは、2年生の前期で受けた必修科目「プロジェクト演習」のテーマDですね。そこでPythonというプログラミング言語を使ったゲーム開発プログラミングに取り組んで、共同開発について学んだり、簡単なコードで背景を動かしたりしたことが活かせたなと。
桜井:あと、今回の大会ではProcessingというプログラミング言語での開発が推奨されていたのですが、Processingは1年生の時の「プログラミング実験」という授業で学んでいたので、それを使っての開発は、それほどハードルは高く感じなかったですね。
■今後、みなさんはどんなことにチャレンジしてみたいですか?
桜井:今回は初心者向けのハッカソンだったので、また別のハッカソンにチャレンジしてみたいと思っています。それから今回の経験を活かして、機械学習の研究や開発にも手を出してみようかなと。機械学習をロボットに組み込んだりして、色々と実験をしてみたいと思っているところです。今は論文もたくさん出ているので、そういうものを参考にして、やってみたいですね。金城:僕ももう一つレベルの高いイベントに参加してみたいです。あとは今回みたいに、何か自分で作った経験があることは、すごく大事だと思っていて。授業では、こういうアプリを使いたかったらこうプログラムを書くみたいなことを個別に学んでいる状況で、習ったことをひとつずつ吸収していっている形です。だから今度はそういう個別に得た知識を自分の中で合体させて、何か一つ成果物を作ってみたいと思っています。何かを自作した経験は、インターンの時などにも役立ちますからね。
茅野:僕は今回の経験を「ロボット道場」の「ロボカップ」に活かしたいです。それに他のハッカソンやプログラミングコンテストにも参加してみたい。それと共に、画像処理の分野に興味があるので、そういう方向にもつなげていきたいなと考えています。
金城:僕はまだどこの道場にも入っていないので、道場に参加することも今後のチャレンジのひとつです。元々、データ系を扱う研究をしたくてこの大学を選んだので、「ビッグデータ道場」に入りたいなと思っています。ただ、自分の基礎力をある程度、固めてからの方がいいのかなと勝手に思っていて、まだ参加していません。二人が参加している「ロボット道場」にも興味はあるけど、同学年ですごいプロフェッショナルが集結している印象を受けるので、正直、ちょっと怖いなって思っています(笑)。
茅野:そんなことはない(笑)。
桜井:うん、そうでもないよ(笑)。
■最後に受験生?高校生へのメッセージをお願いします。
桜井:志望校を決める時は、自分が何に興味があるのか、したいことは何なのかを整理して、それが志望大学で学べるのかどうかで決めることをお勧めします。志望校に入れば自分の好きなことが学べると思うと、それが勉強のモチベーションになると思いますよ。私自身、もともと人工知能に興味があったので、CS学部で人工知能を専門的に学べると知って、「ここしかない!」と勉強したので。金城:僕も自分のしたいことが、その大学にあるかどうかで判断した方がいいと思う。なんとなくで入学すると、そこでやりたいことを探せる強い意志があるならいいけど、そうでないと、せっかくの大学時代も淡々と過ぎてしまうのかなと思います。僕は受験生の時、最初は別の大学に推薦で行こうと、自分が将来したいことや学びたいことをきちんと調べて決めました。その結果、データサイエンティストという仕事に就きたいと思って、結局、一般受験で工科大のCS学部を受けたんです。一般受験の人は受験勉強に忙しくて、自分のしたいことやなりたいものと大学や学部がマッチしているのかどうかを、そこまで調べる時間がないかもしれません。それでもできる限り、調べてから受けた方がいいとは思います。
茅野:二人の言う通り、やりたいことがあるかどうかは大切だと思う。でも、自分のやりたいことを見つけることが、難しい人もいると思うんです。そういった時に指標の一つになるのが、挑戦してみることではないかと。高校生の時に自分のしたいことに挑戦するのは難しいかもしれませんが、少なくとも調べることはできますよね。どういう職業があるのかなど、自分で調べてみて、興味を持った分野に進むのが理想的なのかなと思います。
井上:みなさんの答えが非常にしっかりしていて、感心しました。自分が学生だった頃を思い返すと、何も決めずに進学していたなと(笑)。私としては、今、学生のみなさんが言ったことに同意です。ただ少し、付け加えたいこともあります。まずある程度、したいことを調べておきましょうということは、今、みなさんが話してくれたことと全く同じです。その一方で個人的には、そこからある程度、選べる、変更できるということも大事だと思っています。というのも、したいことを実際にしてみると、思っていたのと違う、これではないかもと、当初と考えが変わることが普通にあります。あるいは、興味のなかったことを経験してみたら面白いと思うこともあるわけです。最初から一途にひとつのことを追うことは、美しくはありますが、それだけに固執する必要はないんですよね。
翻って、CS学部を見てみると、ここには色々な先生がいらっしゃいます。例えば、私はちょっと変わったデバイスをたくさん作っていますし、その一方でデータサイエンスを専門とされている先生もいれば、画像認識、音声処理など、コンピュータサイエンスに関わる様々なことを研究している先生がいます。つまり、何かひとつのことを追いかけようと決めていても良いのですが、他にも選択肢がたくさんあるということは意識しておいてほしいのです。CS学部には、それだけ選択肢がありますから。
それはつまり、茅野さんも話していましたが、選ぶ前にやってみるチャンスがあるということです。そのひとつがまさしく、本学部で始まった「道場」ではないかなと思います。そういうものに参加していると、「こっちも面白い!」と当初とは違うことに興味が湧いて、方向転換することもできます。そういう選択ができて、それを後押ししてくれるのが、CS学部の強みです。もちろん「道場」だけでなく、研究室の門を叩けば、いつでも先生方は歓迎してくれますから、本学部に入ったら、ぜひ遊びに行く感覚で覗いてみてください。
■コンピュータサイエンス学部:
/gakubu/cs/index.html
/gakubu/cs/index.html