初ハッカソンで優勝した話
初めてのハッカソンの開発期間前や期間中での私の心境や、生活などをここに記しておきます。
開発期間前
出場理由、目標
だいたいキックオフ(開発開始)の1ヶ月半前くらいに出場を決めました。出場理由は「エンジニアとしての実績が欲しい」です。雑談や就活などで一つ話のタネにできればいいなと思っていました。そのためには何か賞をとっておきたいですよね。
もちろん目標は最優秀賞です。
2人チームとして出場しました。一緒に開発したチームメンバーは大学1年生の頃から一緒に大学生活を過ごした友人です。技術力も人間性も間違いないです。
作品のアイデア
ハッカソンが始まる前に友人から「ベンチプレスの挙上速度を測りたいけど、計測するデバイスが高価なので行えない。」という話を聞きました。
そこで、友人の不満を解決するための「ベンチプレスの挙上速度を計測するアプリ」というおおまかなアイデアが生まれました。
「ベンチプレスの挙上速度を計測するアプリ」についてチームメンバーと深掘りしました。
我々が考えたことは2つです。
・過去の受賞作の特徴。
・評価基準をどうアピールできるか。
目標は最優秀賞なので、最優秀が取れる作品を作成することに注力しました。
まず過去の受賞作を見て、共通点や特徴を調査しました。過去の受賞作品の多くは「ユーザーの動作からデータを取り、そのデータからソフトウェアの力でユーザーをサポートする」という特徴を持っていたように感じました。
・バスケのシュート(ユーザーの動き)を評価するアプリ。
・自分の姿勢(ユーザーの動き)をぬいぐるみと同期し、評価するアプリ。
・筆の動きや力の入れ具合(ユーザーの動き)から書いた字を評価するアプリ。
逆に、web上で情報を入力して最適な筋トレ、食事、マッチングを提案するなど、ユーザー自身がデータを入力するようなアプリで目標達成することは難しいと考えました。
次に、作品が完成した時、評価基準をどうアピールすることができるかということを考えました。
新規性:世界で類似したサービスがない。
技術性:高度かつ新しい技術を使用している。
発展性:多くの人々が抱える課題を解決することで、その人々への波及効果が期待できる。
再現性:発表した作品のアイデア、機能が実際に動く。ユーザーが使いやすいようデザインされている。
これらのことを考えながらアイデアを出したり、それらをマージしたりして作品のアイデアが完成しました。
「ベンチプレスのVBT(Velocity Based Training)をサポートするwatchOSアプリ」です。
使用技術の学習
作品のアイデアが決まると、使用する技術もなんとなく決まります。今回の開発では、Swift、SwiftUI、CoreML、CoreMotionなどの技術を使うことが予想されたのでそれらの技術についての事前学習をしておきました。
事前学習をすることによって開発期間中はスムーズに開発できたと思います。
開発期間中
作品の核
開発期間が始まると、我々は作品の核となる「ユーザーの動作からベンチプレスの動作を判定する」、「ベンチプレスの挙上速度を計測する」という機能を開発し始めました。
これらが実現できるかを早めに確認したかったのです。もし実装が難しそうならアイデアから考え直す必要があります。開発期間終了間近で「実装できなかった...」は避けたかったので、デザインやDP図の作成より先に作品の核となる機能を先に開発し始めました。
だいたい20~30時間かけて作品の核となる機能を開発しました。形になりそうだったので最初に決めたアイデア通り(ベンチプレスのVBTをサポートするwatchOSアプリ)の作品を作成することにしました。
作品の機能
次に作品の機能決めを行いました。
コミュニケーター(開発を手助けてくださるYahoo社員の方々)から「ターゲットユーザー、ターゲットユーザーが抱える課題、課題の解決法を決めると機能を決めやすいよ」というアドバイスを頂き、チームメンバーと一緒に実行しました。
出た課題の解決法から作品の機能を決めました。
デザイン、DP図の作成
作品の核となる部分を開発し、作品の機能が決まると、次にDP図とデザインの作成を行いました。発展性、再現性をアピールするため「ユーザーが必要なデータ」、「ユーザーが使いやすいデザイン」を意識してDP図とデザインを作成しました。
開発
キックオフから6日後に、DP図とデザインを元に開発し始めました。使用技術の事前学習と、作品の核である機能の開発を行なっていたので比較的スムーズに開発することが出来ました。とは言ってもバグで時間を取られることもありました。しかし、30分ほど詰まったらチームメンバーに相談するなどで過度な時間ロスは防げたかと思います。チーム力も良かったですね。
プレゼンテーションの準備
ある程度開発が進むと、プレゼンテーションの準備に取り掛かりました。いくらすごい作品を作成したとしても、それが伝わらなければ意味がないですよね。作品が持つ4つの評価基準(新規性、技術性、発展性、再現性)をアピールすることを意識して、スライドとデモ動画の作成しました。
発表日当日
発表日当日は初めてのハッカソンということもあってか、緊張しました。他の参加者の発表を聞く前は最優秀賞を取れる自信がありましたが、他の参加者の作品を知ると、自信がなくなりました。それくらい素晴らしい作品を作成していました。
我々のプレゼンテーションは練習通り、上手く出来たと思います。(下記のURLでプレゼンテーションが見れます。
結果は最優秀賞を取ることが出来ました。結果を聞いた時、とても興奮しました。当然ですよね、1ヶ月半前から目標に向けて努力し続け、それが最高の形として現れたのですから。
得たこと
ハッカソンの経験を通して「短期間で自分たちのアイデアを形にする技術力、プロダクト管理力」です。
短期間でアイデアを形にするには以下のことが必要だと考えています。
・アイデアを具体的にし、タスクに分割し、優先度を付け、優先度が高いものから取り組む。(プロダクト管理力)
・難易度が高いタスクをこなす。(技術力)
作品の核から開発した(プロダクト管理力)、ベンチプレスの動作を検知する機械学習モデルを作成した(技術力)経験を経て、「短期間で自分たちのアイデアを形にする技術力、プロダクト管理力」を得ることができました。
最後に
振り返ってみて最高の出来事でした。ものづくりの楽しさを存分に味わったし、目標を達成できたし。
最優秀賞の特典としてHackDayに招待されたのでそれに向けてまた頑張りたいと思います。もちろん目標は優勝で。
そして何より、チームを組んでくれた友人や、ものづくりの素晴らしさを体験できる機会を与えてくださったYahoo社員の皆様などの、周囲の人々の力がなければこのような体験は出来ませんでした。本当に感謝しています。ありがとうございました。