初めてのハッカソンで初めての言語に挑戦した話

初めまして。こんにちは。B-nanaです。先日、初めてハッカソンに参加してきました。

充実しすぎてとても良い経験をさせてもらったのでログとして残したいと思います。

 

ハッカソン参加の経緯

 大学2年生の現在、就職の話をされたり聞いたりする機会が増えてきました。就職の話をしてくださる方々が口を揃えて言っているのは「大学生の間で何か熱中するものを探しなさい」。この言葉を聞く度に「大学生の間、私は何を頑張ったんだろう…」と考えるのですが、全然出てこない。大学1年生の時は、コロナ渦だから何もできないという言い訳を作って家でゲームやアニメ漬けの生活。大学2年生では無駄にバイトを入れまくって、もはや学生ではなくてフリーターなのでは!?というような生活。何の取り柄もないぐーたら大学生でした。ちょこちょこ自作でホームページや簡単なLINEbotなどの製作などもしていましたが、パンチが弱いし、自分で納得できるほどのクオリティではないため、何か熱中できて自慢ができそうなものを欲していました。

 

 そんなある日、友達から「ハッカソン開催するけど参加しない?」というお誘いがきました。その友達はハッカソンを開催している会社にインターンとして働いていたので、私に直接声をかけてくれました(うれしい)。でもハッカソンって「プログラムバリバリ書けて、つよつよの人たちが集まるすごい場所でしょ…私なんか無理だよ…」と思っていました。でも大学生活このままでいいの!?ここで参加したら何かしらのものを得られるかもよ!?!?と自分を奮い立たせて、高校時代の友達を誘い猛者たちに揉まれる覚悟で参加を決意しました。

 

ハッカソン事前準備

 とりあえず何を作ろうかと、ミーティングをしました。今回のハッカソンのテーマが「あったまる」ということで、あったまるものと言えば「温泉」と「自動販売機のhotドリンク」が挙げられました。この二つを上手いことプロジェクトに落とし込めないかと悩み、お互いの共通言語からできることを決めるというような形にしました。お互いの共通言語は、

・HTML

CSS

JavaScript

の3つでした。ここから銭湯の架空ホームページでも作る?というような流れになりましたが、ここで相方が一言、

「Unity勉強してる」

めっちゃ奇遇〜〜〜〜〜〜〜!私もUnityちょっと勉強し始めていました。でもお互い勉強はしているものの、めちゃくちゃ初心者。Unityの操作が分かるだけのレベル。でも、せっかくハッカソンという大きな舞台に参加するんだから新しいことに挑戦するべきだ!もうこれはUnity使うしかないっしょ!ということで、「架空の銭湯のサイトを作って、その銭湯が監修している自動販売機のゲームを作ろう」という方向性に決定しました。

 

 方向性が決まり早速事前開発に取り組みました。事前開発では主にホームページを完成させて、ゲームの概要を決定しようというような目標で進みました。役割分担としては、

・私→温泉サイトデザイン、ゲームサイトデザイン&構築、ゲームデザイン

・相方→温泉サイトデザイン&構築

で振り分けました。一見私の仕事が多いように見えますが、温泉サイトの構築が事前開発でのメインだったので、仕事量としてはちょっと相方の方が多いです(ありがとう)。事前開発についてはお互いやったことがある言語だったし、簡単なデザインや作りだったため何事もなくスムーズに開発することができました。そして相方の作ったホームページの出来がめちゃくちゃ良くて感動しました(ありがとう2回目)。

 ゲームの概要としては、hotドリンクを手にしてもらってプレイヤーに温かい気持ちになってもらおうと、少しゲーム性を加えた自動販売機購入シュミレーターのようなゲームにしました。ゲームの流れとしては非常に簡単で、実際に自動販売機でドリンクを購入するときと同じように、お金を入れて、商品を選んで、ドリンクを取る。これに加えて、プレイヤーのあったかゲージというものを追加して、hotドリンクを購入したらゲージが増えて、冷たいドリンクを購入したらゲージが減る。ただ、冷たいドリンクを購入した後にhotドリンクを購入すると、ゲージの伸びが倍増する、というように自動販売機にゲーム性を追加したゲームデザインにしました。

 

 ホームページも完成したし、あとは当日Unityでゲーム作るのみだ!と事前開発はとても順調でした。ハッカソン当日もこのまま順調に進むと思っていました。しかし私たちはハッカソンで地獄を見るのでした…。

 

ハッカソン当日

1日目

 いよいよ迎えました。当日です。会場にいるすべての人から圧倒的強者のオーラを感じ、胃がキリキリ。もう帰りたいです。でもそれと同時にワクワクしていました。やっぱり初めての体験はワクワクドキドキするものですね。そんな感情を抱きながらオープニングを終え、開発1日目がスタートしました。

 

 まず最初にしたのはオブジェクトの配置…と言いたかったところですが、Unityのバージョンを揃えるところからスタートしました。開発環境は事前開発の時点で揃えとく予定だったのに、お互いのバージョンが違うことがここにきて判明。バージョンが揃ってないと、後からプロジェクトを合体させた時エラーが出るとGoogle先生がおっしゃっていたので、これはマストでやらなければいけないことでした。出遅れた〜!

 

 何とかバージョンを揃え終わってようやくゲーム作り開始です。とりあえずゲームで使用するオブジェクトを並べて、配置してという作業を繰り返し行いました。ここの作業は楽しかったです。動きはないけど、どんどん画面が華やかになっていくのは作っている感が出て楽しいです。

 

 楽しいオブジェクト並べを終え次に行ったのは、ボタン配置です。はい、ここから地獄スタート^^ボタンをscene画面に設置するまでは余裕でできましたが、ゲーム画面をみるとボタンが消える。は?ちゃんとあるのに何で消えるの?そういう仕様?(本当に初心者だとわかってくれたはず)。横の相方を見ると、同じところで止まっていました。やばい、詰まるの早くないか?ただのボタン設置なのに…。早速ここで心折れました。

 Unityに強い参加者がいるというスタッフさんからの紹介で、そのUnityつよつよ参加者さんから教えてもらい、ボタンやテキストなどのUIのサイズはでかくしないとゲーム画面に出ないことが判明。UIたちよ…お前ら面倒臭いな()。

 

 ボタンも配置できたことだし、そのボタンにスクリプトを書いていこう!機能の実装に取り掛かりました。ここも大地獄。ボタンを押したらscene変換をするというような機能をボタンに付けたかったのにできない!プログラム的にはあってるはずなのに、動かないし、エラーも出てくれなくてどこを間違っているのか全く分からない。メンターさんにもC#のプログラムを見てもらって、間違っていないかどうか確認してもらったけど、特に見当たらない。もうどうしようもなく詰みました。とにかくGoogle先生にたくさん質問しました。するとUnity側の操作でやっていない操作が見つかりました。この操作をしないとボタンに機能が実装できない。そりゃあ動かないわけだ。このボタンへの機能実装が解決した頃には辺りは真っ暗でした。

 

 ボタン実装を完全に理解した私たちは、ボタンを乱用してゲームを完成させようとします。そうです、ボタンの機能の中身をチョチョッと変えればいけるでしょとか舐めた考えしてました。ごめんなさい。

 私がやりたかったことは、別オブジェクト間での変数の受け渡しです。これもプログラムを書いてボタンに実装して実行してみたけど、赤い文字(エラー)がた〜くさん出てくる。もうしんどい。この作業をしていたのは夜の11時、流石に頭が回らなくなっていました。再度Unityつよつよ参加者さんからの助言を求めました(開発の手を止めてしまって申し訳ない…!)。丁寧に説明してくれました。めっちゃ分かりやすくて完全に理解しました。自分の席に戻って教わったことを実行しました。別のエラーが出てきたぁ^^もう嫌です。とりあえず色々試しましたが何もうまくいかない。真夜中の3時。流石に限界です。仮眠を取ることにしました。

 

2日目

 おはようございます。朝です。8時です。寝過ぎたぁぁぁぁぁ!布団から飛び起きてすぐにパソコンを起動。昨日の続きをとりあえず再開。なんかこう色々かちゃかちゃしました。すると、あれ?動いた…。え?何で?でもまぁ、できたぁぁぁぁぁぁぁ!!!!いまだに何で出来たのか分かりませんが結果オーライです(勉強します)。

 

 睡眠の重要さを噛み締めながら至る所にボタンを乱用し、とりあえずドリンクを1つだけ買える状態にまで辿り着きました。ということで、私と相方のプロジェクトを合体しよう。あれ、どうやってするの…?調べとけー!!って話ですよね、はい。やばい、このままだと最悪な形で終わってしまう。どうやってこの場から逃げようか、というような事しか考えてませんでした。とにかくGoogle先生に聞き回ってGitHubであれこれしたら合体できるというような情報を得ました。しかしGitHubの使い方分からない。メンターさんに使い方を一から教わりました。本当に基本的な事なのに出来ない自分が恥ずかしい…。

 

 そんなこんなで無事私と相方のプロジェクトが繋がりました。しかしこの時点で発表時間まであと5分。めちゃくちゃ完成しなかったです。ゲームと名乗ってはいけないほどの未完成です。ただお金を入れて、ドリンクをもらうだけの自動販売機シュミレーター(しかも1ターンのみ)が最終結果です。正直人に見せられるほどのものではなかったです。発表順が1番最初だったのが救いでした。

 

 しかし、私たちは大満足でした。もちろん完成しなかったのは悔しいですが、初心者なりにこの2日間でここまで来れた、乗り切れたことが嬉しくてお互いを讃え合いました。何だか初めてプログラミングを触れた時の感動を思い出しました。新しいことに挑戦するって楽しいですね。

 

まとめ

 熱中するものが欲しいという理由で参加したハッカソンでしたが、予想以上に素晴らしい経験となりました。こんなにも真剣にずっと集中し続けて物事をやり遂げられたのは久しぶりです。そのくらい楽しかったし、面白かった。

 何と言ってもこの2日間でめちゃくちゃ成長できたと、自分で感じられたことが大きいです。この短い期間だけでたくさんの困難を乗り越えられた私は最強だと思います。今まで何処か自信がない私でしたが、やればできる、考え続ければできるとハッカソンを通して自信をつけることができました。

 

 そして新しいことに飛び込むことへのスリルと興奮はめちゃくちゃ大好きだと気付きました。今までの常識から少し離れてみて、違う世界を見ることは自分に大きな成長と気づきを与えてくれる。このワクワクドキドキは絶対に忘れたくないし、忘れてはいけないと思います。今後も色んなことに挑戦したいです。

 

 今回は完成まで辿り着かず悔しい思いをしましたが、それ以上のものを持ち帰ることができました。本当に参加してよかったし、また参加したいです。今度参加するまでには、Unityつよつよになってリベンジとかしてみたいです。

 

 最後に自分へ

 絶対にこの初ハッカソンでの体験は忘れるんじゃねぇ!!!

 

 へたっぴなレポートですみませんでした。読んでくださった方ありがとうございました。