![見出し画像](https://assets.st-note.com/production/uploads/images/31073456/rectangle_large_type_2_abe519e1a13f4f095fab63c69be4343d.jpeg?width=1200)
初めてハッカソンに参加した話(オンライン)
はじめに
授業もほぼほぼなく、大学院もほぼほぼ決まったということで、せっかくだということで以前から気になっていた「ハッカソン」というものに参加してみました(研究は進んでないし、授業の課題は終わってないし、色々終わってなくてやばい状況ではありました)。
ハッカソンとは、ソフトウェア開発分野のプログラマやグラフィックデザイナー、ユーザインタフェース設計者、プロジェクトマネージャらが集中的に作業をするソフトウェア関連プロジェクトのイベント
とWikipediaさんが言っていますが、正直どういうものかはあんまりわかっていませんでした。ただ、学科で同じようなプロジェクトのものは経験あったし、同じようなノリでいいかという軽い気持ちで申込みました。
私が参加したのは「VRハッカソン」という割と小さめなものでした。「初心者、一人参加ok」という言葉につられて参加ボタンを押してしまいました。Oculus Questもっていたし、多少unityを弄ったことがあったのでなんとかなるかなというお気持ちでした。オンラインなのも実は気軽に参加できたポイントでした。
当日
さて、参加することにはなったものの、正直そんなやる気はありませんでした。前述の通り、授業の課題とかはやばかったんで、そちらを優先したい気持ちはありました。
イベント開始が10時だったんですが、10分前になってもURLとかが貼られていなかったので、「もしかしたらないのか?」とも思いました。が、10時ちょうどにURLがサイトに貼られ、2分間くらい迷った挙句、参加を決意しました。
グループ分け
最初に主催者の方の説明があり、グループ分けに入ります。ですが、ここで人がぼちぼち抜け始め、誰も参加シートに記入しません(オンラインあるあるらしいです)。
私もこの時点では参加するかしないかは半々でした。
時間が立つと参加シートに記入する人が出始めたので、せっかくだし…ということで重い筆をとり、記入しました。
そしてだんだん気づき始めます。恐ろしい事実に。
なんとほとんどの参加者がすでにグループを組んでいるではありませんか!
結局グループを組んでいない一人参加の方は私合わせて4人で、3チームが仲良しチーム、残り1チームが初顔合わせという地獄のような構図になりました。
コミュ障にはつらいです…
参加者のレベルについて
他のハッカソンを知らないから何とも言えないのですが、参加者のレベルはかなり高かったと思います(私視点)。後で記述しますが、少なくとも私のチームの他の三人はお強い方々でした。
ただ、初めに得意な技術などを書くのですが、ほぼ全員「python」って書いていて、VRのハッカソンなのに、unityやc#と書いている人がほぼいなかったのは笑えました。
メンバーについて
私の以外の3人は全員社会人の方でした。機械学習の経験がある方が2人、機械学習とunityの経験がある方が1人でした。
アイデアだし
3時間ほどでアイデアだしを行い、中間発表という流れになっています。
とはいえ、初対面(カメラオフのため対面はしていない)なので、当然会話はぎこちなく、誰も話そうとしませんでした。
私は割と初対面でも大丈夫なタイプだったんですが、最年少ということで話すのをためらっていました。しかし、埒が明かないので積極的に話すことにしました。結果、アイデアだしのまとめ役みたいなポジションになってしまいました。一番若者のくせに仕切っているのは調子乗っていると思われるのでは…と、びくびくしながら進行役を務めました。
一度流れに乗ると、思いのほかアイデアがぽんぽん出てきます。おそらく違うバックグラウンドを持っている人が多かったので、多種多様なアイデアが出やすかったんだと思います。
「仮想空間」ということで、「VR展示会」「VRイベント型登山」「コーヒーの湯気投影」など様々なアイデアが出てきました。その中で特に際立っていた(と思われる)のが「VRインタビュー」、それを発展させた「VRスピーチ練習」でした。
この「VRスピーチ」という案が出た時から私は「これしかないだろ」とまで思っていました。「仮想空間」というテーマに合致し、そのメリットを最大限享受している点、スピーチの練習をしたい人はこの世界に億といるという事業可能性、VR内で人とステージを作り、RNNなどの機械学習を混ぜることができるハッカソンに打ってつけの程よい難易度。色々な側面を考慮するとどう考えても最適解だと思われました。
「面白さ」「事業可能性」「チャレンジ度」「開発可能性」の側面から評価した後、メンバー全員で票をとりましたが、満場一致で「VRスピーチ」になりました。
中間発表
アイデアだしが終わった後に中間発表がありました。アイデアを何個か並べるだけでいいと言われていたのですが、時間が余っていたので、割と本格的なスライドを作りました。とはいえ、有り余っている、というほどではなかったので、以前友人と作ったスライドからデザインを拝借して統一感をだしました。
おかげで評判が良く、他のチームの一歩先を行っている感触を得ました。自信をつけ、開発フェーズに移行します。
開発フェーズ ~全然うまくいかない!~
開発フェーズに移ります。
実は「VRを使ったスピーチ練習アプリ」というのは先例があり(これだ!と思ったアイデアは誰かがすでに考えてしまっているというのは世の常ですね)、私たちのチームは「ユーザーが話した言葉で観客の反応を変える」というのをセールスポイントにすることにしました。
初期の構想としては、oculus(VR機器の名前です)の入力(音声情報、ヘッドセットの位置情報)をunityを通じてpythonに持ってきて、python側ではtensorflowで学習したモデルを基に予測、その予測を再びoculusに出力し、観客の反応を変えるというものでした。
VR担当2人、機械学習担当2人に分かれて作業に移ります。
VRやunityに触ったことがあるのが私ともう一方しかいなかったので、私はVR担当になりました。oculusも持っていたため、特に入出力部分を担当することにしました。
しかし、思ったより上手く進みません。
まず、環境構築にすごい時間がかかります。
また、二人でコードなどを共有するため、gitを使ったのですが、unityのgitの使用にすごく悩まされました。というのも、unityでoculusを使うのにunity integrationというアセットをインポートする必要があるのですが、それに時間がかかる上に、git pullし、unityを再起動するたびにインポートを初めてしまうため、git pullのたびに1時間ほど時間をlossするという事態が起きてしまったのです。2日しかないハッカソンなのにこれはすごい痛手で何とかしたかったのですが、結局解決方法は見つかりませんでした。どなたか解決方法をご存じでしたら教えてください…
ということで私の前半のお仕事はoculusの入力形式を調べ、python側に送れるような形に変形するというものだったのですが、満足にこなすことができませんでした。チームメイトの皆様には頭が上がりません。後で見てみてもここがボトルネックでした。
他の皆さんはRNNによる学習を進めてくださっていたり、pythonの実行ファイルをunityで動かせるようにしてくださったり、着実に前に進んでいるようでした。完全に私は意気消沈。恨むべきはgitです。
結局、制限時間やpythonの実行ファイルをandroidでビルドできるか、それをoculusで動かせるかという問題があり、リアルタイムでの実装は諦めることになりました。
発表会で見せるのはデモだけだろう、ということで、シンプルに、演説している動画を撮影→それを推測→推測したのを基にunity内でアニメーションを作りそれをVRで映して撮影というものにしました。デモだけならばなんも問題はありません(?)。
まずは何パターンか私がVRヘッドセットを被り、演説します。オーバーティング甚だしいですがそれをvalidationに使って学習データを選択します(具体的には演説が上手い時にいい反応するように調整します)。それで各秒数での観客の反応をラベル形式で表現できたので、unity上で観客の動きを作ります。最後にそれをoculusで出力して、完成です!!!(結局僕の担当したのは動画とoculusでの出力だけでした…)
スライド作り~結局見た目が大事だよね~
オンラインハッカソンの特徴として、実際に実演ができないというものがあります。その分スライドや写真、動画とかで代用するしかないし、その見せ方も工夫しなくてはいけません。
スライドは他のハッカソンのスライド(メンバーの方が持ってきてくださりました)を参考に作りました。
デモンストレーションは実際に実演している風に撮影しました。リアルでスピーチの練習をしている姿とVR内の動画を同時に見せることでリアルタイムが実現していないのですができている風に見せました。ちょっとずるい気もしますが、リアルタイムではないことは説明しましたし、製品の説明としては最適な見せ方だと思っています。
主催者の方も言っていましたが、できなかったことを言ってもマイナスイメージになるだけです。このような発表の場ではできたことを自信をもって発表することが大切であることを学びました。
発表
どきどきの発表会です。私たちの前の3チームはどれもレベルが高く、正直負けたなと感じていました。それでも自分たちのできる限りの発表はしました(とは言っても、僕は動画上でしゃべっているだけで発表会ではほぼ話してないんですけどね)。特にまとめて下さった方のまとめ方が上手くなんとか伝えたかった内容を伝えることができたという感じでした。
4チームしかないので2位から発表されたんですが、あるとしたら2位かなと思っていたのに、2位のチームが他の3チームの中で最も優れているな(と私が感じた)チームでした。
これは、まさか、、、あるのか一位!?
そんな淡い希望を抱きながら、オンラインで画面オフにしているのをいいことに必死で祈ってましたね(笑)。
結果はなんと一位!
久々にガッツポーズで喜びました。
初めての参加ですし、何より初対面のチームで優勝できたことが何よりも嬉しかったです。
後述談(本題)
自分たちのzoomに戻り、チームメンバーで感傷に浸ります。
優勝賞品はoculus questだったんですが、私はすでに持っていたので自体しました。代わりにTシャツを貰えることになりました。
ここで時間に余裕ができ、初めてメンバーのバックグラウンドについて詳しく話を聞くことができました。
そこで驚きの事実が発覚します。
R氏という方がメンバーにいたのですが、彼のファーストインプレッションは「無口な人だな」というものでした。アイデアだしの時にあまり口を挟まずに、ただクリティカルなことを言ってくださる。普段は海外でお仕事をされている方でただならぬ気配を感じてました。開発段階では実質彼が取り仕切っていました。
実は彼があまりしゃべらないのは、もともとビジネスマンで人と喋りすぎた結果喋るのが嫌いになり、エンジニアになったとのことでした。聞けばすでに何十社もスタートアップさせていて、今は自分が起業した会社でエンジニアをしているそう。
・・・なろう系かな?
そこからは他のメンバーで、R氏の経験や起業について問い詰める時間に入りました。私自身そういう話に興味があったので非常に有意義な時間になりました。
こういう出会いがあるのも一人でハッカソンに参加するメリットの一つなのでしょうか。
そうしているうちに2時間くらい立ち、zoomはお開きになりました。
オフラインだと、食事会とかでもっと親密になれたかもしれませんが、そこはオンラインの残念なところですね。zoomを切ってしまったら私たちの関係はそこで終わりです(一応slackで連絡取れるようにはしましたが)。
ただ、私は思い切ってハッカソンに一人で参加してみて本当に良かったと思っています。
私が参加したのは小さいものでしたが、それでも何かを作り上げ達成感を得られる面ではコスパはいいと思います。
あと、こういう風に思いがけない出会いもあります。
加えて実は、景品を会社に受け取りに行く際にCTOの方とお話しする機会ももらえました。
実力不足も感じましたが、自分の足りない面を見つけられるのもいい点だと思います。メンバーに追いつくためにこれから頑張らなくてはというやる気も貰うことができました。
機会があればまた、どこか他のハッカソンに参加してみたいです。
この記事が気に入ったらサポートをしてみませんか?