学生エンジニアが初めてハッカソンに参加してみたら学びが多かった話 (JPHACKS2020)

はじめに

先日JPHACKS2020でハッカソンデビューしたら、色んな学びがあったのでまとめようと思いました。

JPHACKSとは
JPHACKS(ジャパンハックス)は、学生を対象にした日本最大規模のハックイベントで、2014年より全国の複数都市で開催されています。 今年は全国を6ブロックに分けオンラインで開催されます。
引用: JPHACKS 今年はオンライン開催で、全国から約78チーム程が参加したようです。


開発したもの

画像分析で忘れ物を防ぐアプリ「Laff」を開発しました。

OGP imageGitHub - 1keiuu/B_2009: 画像分析で忘れ物を防ぐアプリ 「Laff」画像分析で忘れ物を防ぐアプリ 「Laff」. Contribute to 1keiuu/B_2009 development by creating an account on GitHub.

紹介動画です(ギリギリで作ったので動画のクオリティはお察しください。。。)

OGP image画像分析で忘れ物を防ぐアプリ 「Laff」 - YouTube旅行にいく時、友達と遊びにいく時、デートをする時『持ってくるの忘れた!』という経験は誰にでもありますよね。 最近で言えばコロナのためマスクが必須アイテムになりましたが忘れてしまって無駄な出費をする事が多々あります。 そうならないために何回もチャックリストを確認して多くの時間を浪費したり、めんどくさくて確認をしない...

「忙しい朝に忘れ物チェックをする時間が無い!」という問題を解決する為に開発しました。
あらかじめ持ち物を登録しておく事で、出かける日の朝には写真を一枚撮るだけで忘れ物を教えてくれます。


使用した技術

フロントはReactNativeを使ってクロスプラットフォームのモバイルアプリ化、バックエンドにRuby on Rails、DBにPostgreSQLを使いました。

画像分析にはGoogle Cloud Vision APIを使いました。


OGP imageVision AI | Google CloudAutoML Vision で画像から分析情報を引き出したり、事前トレーニング済みの Vision API モデルを使用したり、Vertex AI Vision でコンピュータ ビジョン アプリケーションを作成したりすることができます。

Google Cloud Vision APIを使えばこのように写真に写っている物を分析して、その名前(ラベル)を返してくれます。 画像分析のAPIから帰ってくるラベルは英語1単語なので、その類義語をAPIから取得し、翻訳して返す事で分析の精度を高めました。



学んだ事

斬新かつ実用的なアイデアを考える難しさ

ハッカソン慣れしていないチームにとって一番難しい部分はここだと思います。 日頃から技術的なキャッチアップをしているだけだと「アイデアを考える」事自体あまりしないと思います。技術的な面で斬新なアプローチ(IoTやVR/AR等)が出来るメンバーが居なかったとはいえ、APIや外部サービスでカバーできるし、他のアプローチだって沢山ある筈です。 ハッカソンで良いプロダクトを作るには、限られたリソースでどれだけ柔軟に対応できるかが鍵を握るなと思いました。

限られた時間でプロダクトの良さを伝える難しさ

発表時間が90秒という短さだったので、プロダクトの良さを端的かつ効果的に伝える必要がありました。(90秒というのは海外のハッカソンを参考にしているらしい) エンジニアだけでなくCEO的な役割がいたり、バランスの良いチームは強いなと思いました。

オンラインで斬新なアイデアを考える事難しさ

学校などの都合もあり全員で集まれなかったので、アイデア出しもwebミーティングで行いました。 アイデア出しにはmiroというサービスを使いました。便利でしたがフル活用出来たとは思えないし、進め方があまり良くなかったかなと思います。 アイデア出しにおいてツールはもちろん大事なのですが、それ以上にファシリテーター的な役割がチームにいると重宝されるなと感じました (そんなエンジニアになりたい。。。)


OGP imageMiro | The Visual Workspace for InnovationMiro is a visual workspace for innovation where teams manage projects, design products, and build the future together. Join 60M+ users from around the world.

正しく恐れ、正しく急ぐ

このアイデアを思いつく前に「バーコードスキャンするだけで商品の産地やレビューがが分かる!」というアプリを開発まで始めていたのですが、APIの仕様をちゃんと理解していなかった為ボツになりました。 また、発表三日前にVue(Web)からあまり経験のないReactNative(モバイル)に変えるなど、見切り発車が多すぎました。 かと言って、ハッカソンに慣れていないチームが自分達のできる範囲の事をやっていては中々斬新なアイデアは生まれません。 限られた時間での開発は、要件定義と実現可能性の調査にしっかりと時間を取り、かつフルスピードで実装する必要があるなと感じました。


まとめ

改善点がたくさん見つかり悔しい思いをしましたが、いろんな発見が出来ました。 周りの学生のレベルの高さに驚いた一方で、追い詰められた時の自分の底力も知れました。 ハッカソンに参加すれば普段の業務と違ったチーム開発が経験出来ますし、成果物に対して結果が出るという事はエンジニアとしての成長に大きく貢献すると思います。

皆さんの会社でも社内ハッカソンを導入してみてはいかがでしょうか? 普段と違うチームで普段と違う開発をすれば、絆が深まったり、お互いの知らない部分に気付けるかもしれません!