見出し画像

ハッカソン勝率100%の備忘録

この記事は2020年11月14日〜22日で開催されたモバイルアプリハッカソン「NU CAMP 2020」に参加した感想をまとめたものです。

はじめに

・自分の体験を言語化して残しておく

・他人が見た時に有益となり得るものを共有する

こういった記事を書き、世に公開しておくことの意味は主にこの2つだと私は思っています。

1つ目についてはとりあえず何か書くだけでもある程度目的の達成ができると思っています。
問題は2つ目で、せっかく書くなら良いものにしたいなぁという気持ちがあるのですが、どのような内容に興味が持たれているのか正直わかりません。

先にネタバレをしてしまうと(タイトルがそもそもネタバレだということは置いておいて)今回のハッカソンは見事優勝し、ありがたいことに企業賞として合同会社ねこもり様から「ねこもり賞」までいただきました。3月に開催された前回の「NU CAMP」でも優勝しているので、2大会(?)連続での優勝になります。参加したことがあるハッカソンはこの2つのみなので、タイトルにあるように私はハッカソンに100%優勝する男なのです。
そこで、総参加回数2回とはいえ勝率100%という経験は貴重なのかなと思ったので、何がハッカソンの勝因になっていたのかを自分の中で整理したものを感想と交えて書いていきます。

その前に...

NU CAMP2020の概要について少しだけ説明したいと思います。

このハッカソンは日本大学OBが代表を務めるNTSA(Nihon Technology Students Association)という団体主催の講師付きモバイルアプリハッカソンです。第一回は2020年3月の開催で、今回は第二回という位置付けになっています。
第一回に引き続きこのハッカソンではIonicというフレームワークを使用してモバイルアプリケーションを作成することを前提としています。

こちらの著者である榊原さんに講師として参加していただいており、ハッカソン期間中は講師の方々に技術面だけでなくアプリケーションの案から発表の内容まで質問がし放題です。これが超ありがたい。
この本自体が非常に読みやすくIonicフレームワークについて簡単なToDoアプリの制作からチャットアプリの制作までと順序立てて学ぶことができます。初版から約1年が経過していますが、今購入しても十分役に立つものになっていると思うので、モバイルアプリの制作に興味がある方は是非一度手にとってみてください。

0.事前の準備

今回のハッカソンは4人1組でチームになっての参加でした。
ハッカソン開催の1ヶ月以上前からチームが決まっており、レギュレーションでも「本番で作成するアプリケーションのコードを書いてはいけない」以外の準備は自由だったため、本番に使いそうな技術を一通りメンバー内で分担して事前学習を行っていました。その中には実際に本番では使わなかったものもありましたが、今回利用したIonic Reactをメンバー全員が最低限触れる状態で本番に望めたことは技術の統一という面でも良かったなと思います。

1.リーダーの使い方とチームメイトの使い方

ハッカソンだけではなくアルバイトや仕事でも感じている人は多いと思うのですが、チームで効率よく作業をするということは意外と難しいことです。
リーダーはみんなを上手く使って、みんなはリーダーを上手く使う。
詳細な進捗報告を定期的にリーダーに伝え次の指示を仰ぎ、リーダーはこれに対して次の仕事を割り振る。今回はこの部分がかなり上手く回っていたと思います。
一日の終わりには必ず10分程度で全体での進捗、明日の到達目標と大まかな流れを全体で共有してから解散してメンバー全員が常に次に自分がしなければいけないことと、他のメンバーが今どういう状況なのかを把握しながら開発を進めていました。
また、タスクを割り振る際に、タスクに対してメンバー内で最も適している人を割り当てることも上手く回っていたのですが、誰がやっても同じくらいのタスクを割り当ててから「意外とこいつ◯◯得意じゃん」みたいなケースも多々あったので、これに関しては仕事の割り振りを担ってくれたチームリーダーの力量に感謝です。

2.最終日にコードを触らない開発計画

どのようなアプリを作るかがある程度決まった時点で、発表日当日にはプログラムに触れなくて済むような開発の計画を建てました。

これは講師の榊原さんもおっしゃるっているように、gitの操作ミスで何がどうなったのかを見つけるだけの作業に無駄な時間を費やしたり、最後の最後に欲張っていらん機能を実装したせいでバグらせたりするせいで、本番の発表で微妙なデモになるようなことを避けたかったのが大きな理由です。

こういった計画を建てたことで、発表の3日前には最終版の90%程度が完成していました。ある程度の形になったものができあがったことで、ユーザーテストを行うことが可能になり、そこから得たフィードバックを元にアプリケーションの改善ができました。

実際には、発表前日にgitの操作ミスによる世紀の大バグらせを経験しましたが、これがもしも発表直前だったらと考えるだけで恐ろしいので、最後の数時間一切コードに触れないようにするという判断は間違いなく一つの勝因だったと感じています。

3.根拠がない時に勝手に都合の良い判断をしない

人間誰しもが物事を自分の都合が良いように解釈をしがちです。その解釈が間違っているということに気がつかずに大変なことになったという経験をしたことがある人もいるでしょう。
今回のハッカソンでは、何においても少しでも迷った場合はすぐにチームメイトに確認をするようにしていました。特にアプリ案に関する話し合いでは、常に「本当に?」と疑うことを意識し、明確な根拠が見つかるまで考え、見つからない場合は講師の方に質問をしてどんな細いことであってもチームメンバー全員が根拠に納得をするまで話し合ったことで、メンバー内でのアプリケーションや開発の進め方に関する認識のすれ違いを極限まで減らすことができていました。

4.必要なものにはちゃんとお金を払う

これは迷ったら有料の方がきっと質がいいはずだからそっちにしよう!みたいなことではなく、欲しかったものが有料だったらしっかりとお金を払うべきだということです。

例えば、ドメインの取得をするかしないか、有料の画像にするか無料の画像にするのか、利用ツールの有料会員しか使えない機能を使用するかどうかなど、今回のハッカソンにおいて、有料と無料が選択できる場面がいくつもありました。いずれにおいても自分たちが拘りたかった部分、必要だと思った部分に関しては惜しまずお金を払ったことで、無料の代替案を考えたり探したりする無駄な時間も同時に回避することができていました。

5.発表準備に時間を割く

私は最終発表のスライド作成とプレゼンを任せられていたのですが、期間中最後の2日間の私の作業はほとんどこの2つの準備に充てていました。
スライドを作成している最中も迷う表現があればメンバーに相談し、完成した後は他に伝えたいこと、伝えなくてもいいことがないかを確認してもらっていました。

私は1時間程度のプレゼンはそれなりに経験があったのですが、短い時間でのプレゼンの経験はほとんどなかったため、レギュレーションである「デモも含めて7分」という時間ぴったりに終わるらせられるように発表の練習をメンバーに付き合ってもらっていました。
実際に本番では練習のおかげもあって、全グループで自分が一番マシな発表をできていたと思います。

作品が正しい方向に進んで完成まで漕ぎつけていたとしても、プレゼンでその正しさを持ち時間内に正確に伝えきれなければ意味がありません。
発表準備にこれだけの時間を割くことができるのは、今回の開発期間が一週間というレギュレーションだったからできたことかもしれませんが、発表も含めてハッカソンの作品だと私は思っています。画竜点睛を欠くという言葉があるように、最後の最後まで手を抜くことなく同じ熱量で準備をすることが大切だと感じました。

6.単純に時間を割いた

この辺から根性論とかそういうお話に近くなってくるかもしれません。
これはもうタイトルの通りでしかなくて、1日の中でも大学の授業と各々の予定以外の時間は常に電話を繋げながら作業をしていました。ちゃんと計測していたわけではないですが、平均すると12〜15時間チームでの作業をしていたと思います。
これもとりあえず長時間やろうということではなく、行き詰まった時やキリがいいときに休憩を挟むと、休憩明けにあっさりバグの原因が見つかったり、良い案が出たりすることがあったので3時間程度の休憩を要所要所で挟んでいました。
また、睡眠時間も大切だということは理解していたので、最低限5,6時間は睡眠時間を確保できるようにもしていました。

7.人事を尽くして天命を待つ

これもタイトルの通りで、やることを全てやったら後は座して結果を待つしかありません。
と言っても、やはり日本人なので天命を最大限に受けられるための願掛けや勝負事に関する迷信はとりあえず試したくなるものです。

今回行ったものだけでも
・最終日前夜にカツカレーを食べる
・前回優勝したときと同じ服を着る
・必勝祈願にご利益がある神社に参拝をする
など、実際にどれだけ効果があるのかは分かりませんが、チームでこういったことをすると「やるだけやったから後はなるようになる!」という気持ちに不思議となれます。


また、自分の中で中学生の頃から何か大切なイベント前に「神田明神の参拝」をルーティンにしているのですが、神田明神の最寄りのひとつでもある秋葉原が最終発表の会場になっていたことも自分の中では大きかったと思います。

ちなみに神田明神はただ僕が好きなだけです。都会の中にある大きくて綺麗な神社でなので有名だとは思いますが、いったことがない人は是非足を運んでみてください。

8.勝利への高いモチベーションの一致

ここまで長々と書いてきましたが、今回一番の勝因は圧倒的にこれです。
というのも、今までのものは全てこれが達成できている条件のもとで成り立っているからです。
このハッカソンで本気で勝ちたかったからここまでできました。メンバーの中で1人や2人だけが勝利に対して高いモチベーションも持っていたわけではなく、全員が本気で勝ちたいという気持ちがあったからここまで大掛かりな準備ができました。多分負けてたらその場で悔しくて泣いてたと思います。
改めて高い意識でひっぱり続けてくれていたチームのリーダーと最後まで一緒に走り切ってくれたチームのメンバーには本当に感謝しています。

最後に

運営をしてくださっている方や講師の方、イベントをスポンサードしていただいた企業の方々のおかげでこのハッカソンは成立しています。この場をお借りしてにはなりますが、本当にありがとうございました。

やるだけのことはやったと思っていましたが、正直全チームの発表を聞いた後は結果が出るまで自分たちが一位になる確信が一切持てないくらい他のチームの作品にも魅力を感じていました。
どのチームも勝ちに来てくれたことが今回の勝利の価値を自分の中で大きくしてくれています。本当にみなさんお疲れ様でした。

井の中の蛙になるのが一番嫌なので、次は知らない人だらけの外部のハッカソンも経験してまたボコボコにされて帰ってきます。

反省点は反省点で沢山あるので、また別の記事にまとめようと思います。

長い記事になってしまいましたが、最後まで読んでいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?