1dayハッカソンのTips
Muda-1グランプリ(略してM-1グランプリ)という1dayハッカソンに参加しました。世の中の役に立たない制作物のNo.1を決めるハッカソンです!
結果は2位!同率2位!
初めてのハッカソン、1dayハッカソン、たくさんの気づきがあったので共有します!
ハッカソンについて(読み飛ばしてもOK!)
Muda-1グランプリについて、説明します。
目的:一見無駄に見えるけれども、個人のこだわりが詰まったプロトタイプの開発
テーマ:年末年始
開発要件:
成果物であるプロトタイプの中にIoTデバイスが含まれる
成果発表で必ずデモを実施
デモの中に自分自身が登場
審査条件:オーディエンス(運営含む)の投票
スケジュール
制作時間はおよそ5時間、その後にProtoPediaに登録、プレゼン資料を1時間程度でつくって発表、という流れになります。
制作したもの
沼賽銭
サーボモーターが回転しお賽銭箱にお金が入ることを阻む、お金と時間の無駄を創り出すお賽銭箱です。超音波距離センサを使ってユーザーの位置によってサーボモーターのスピードも変化します。さらに、お賽銭箱に入らなかったお金がたまることを別の超音波距離センサで検知しLINEにメッセージが送られる仕組みです。
アイデアソンで「ミニマリストが怒るお賽銭」というテーマで企画を考えました。うまく入らなくてイライラする、お金が散らばっていて整然としていない、といったイメージをつくって、なぜかパチンコのようなお賽銭箱に至りました。この思考プロセスについては後述します。
さらに無駄、という言葉が出てきたとき、私の頭にはジョジョとカイジが繋がり、カイジの沼パチンコよろしく沼賽銭となったわけです。
1dayハッカソンは入試みたいなもの
多少新しいことも挑戦するけど、自分の実力を試す場
総合点で評価される。故に時間配分は重要
細かな準備が大事
やりたいことを全てできない。あとで後悔もする
1.多少新しいことも挑戦するけど、自分の実力を試す場
振り返ると一度実装したことがある技術が9割でした。
サーボーモーターを超音波距離センサの値で制御する
超音波距離センサの値でLINEに通知する
新しく挑戦したのはこちらです。
Obnizを2台制御する→実施
サーボモーターをループで動かし続ける→実施
マトリックスLEDを使う→不採用
ジョイステックを使う→実施できず
短い時間で新しい技術を軸にした実装は、制作時間を逆算しにくいので、採用するハードルは高いです。この点、これまでやってきたことを土台にして、少し新しいことにも挑戦した取り組みは上手くいったと思います!
2.総合点で評価される。故に時間配分は重要
企画・実装・発信の三点が噛み合うことが大事です。
企画:テーマや評価内容に対応している
実装:企画内容を実現する構成になっている
発信:企画と実装内容を的確に伝える
私の場合は、企画が△、発信は赤点でした。
企画
途中で破綻しかけました。入りにくいお賽銭箱がなぜ無駄を表現しているのか?ということがわからなくなりました。
ミニマリスト(≒無駄が嫌い)が怒るお賽銭箱
▼
お金が中々入らない、お金が散らばるお賽銭箱
▼
パチンコみたいなお賽銭箱
といった具合に連想ゲームでアイデアを決めていて、評価基準をすっかり忘れていました。これがなぜ無駄なんだろうと考えなおして、
「もうミニマリストはいいや。お金の無駄ってことで!」
と無理やり企画に合流させました。企画が破綻していることに気づいたのは実装後半、戻ることは当然できませんでした。
発信
材料はプロトペディアのページに以下を揃えます。
制作物の画像
動作している動画
開発素材
システム構成
ストーリー(Markdownでスライド形式の資料)
動画とストーリーの項目が不十分でした。動画は実は普段から質が低く、取り方や、音楽の選び方や編集などYouTubeの操作で手間取りました。先述したように実力が出たと痛感しました。
ストーリーについては、企画が破綻しかけていたので、どのような流れで説明するかでとても悩みました。また、時間が10分程度しか残していなかったので、言葉だけを入れるだけになりました。パチンコにこだわりすぎてお賽銭箱の雰囲気がなかったのでプレゼンで何とかするしかなかったので、時間を残さなかったのは悔やまれます。
3.細かな準備が大事
部品調達
私は長野県に住んでいて、近くに電子部品が手に入るお店が中々ありません。そのため事前に東京に行って、部品の買い足しをしました。ジャンパワイヤは長い方があった方が良いし、センサも何が役に立つのかわからないから加速度や温度センサ、スイッチなども買いました。
コード確認
また、各センサの動かすJavaScriptのコードをおさらいしました。しかし、実際に動かす作業はしなかったので、実装中に手間取ったこともありました。例えば、誤ってObnizではなくArduinoやRapsberryPiで動く部品を買ってしまい、それが使えないことを実装中に気づくなど、避けられた失敗だと思います。
4.やりたいことを全てできない。あとで後悔もする
実装面が非現実的だったと感じました。最終的には構成図はこのような形でした。ここにパチンコ台の外装を加えました。
しかしながら、私は当初、LEDをつけてパチンコっぽくしようとしたり、温度センサをつけて熱中するほどサーボモーターが回転してお金が入りにくくしたり、ジョイスティックを使ってサーボモーターを動かすなど、センサもりもりの実装を予定していました。さすがに間に合わないと思い構成を簡単にしました。
企画内容を実現するか、この点を押さえておけばこのような計画にはならなかったはずです。技術のお披露目の場ではないのです。
実際に優勝した制作物は、実装は非常にシンプル、しかし企画の意図を理解し、発信内容もわかりやすかったです。動画撮影に凝っていたと聞きました。黒豆が左右にピョンピョン飛ぶ動きはサーボーモーターらしくて面白い使い方だと思いました。
例えばどんな構成が良かったか?
同じアイデアであれば、パチンコ台のように外装にこだわらず、コップの口にお賽銭箱の投入口をつくり、サーボーモーターで妨害するくらいシンプルで良かったです。
後悔もあるけど実践あるのみ
後悔は延々と出てきますがそれを実行しなかったのが現実。過去問を解くのと同じで、実践に慣れるということが大事だと感じました。制作中は終始焦って、昼食をとるのも忘れていました。
1dayハッカソンで勝つために
入試やTOEICのように、その試験に対策する勉強法があるように1dayハッカソンの対策もあると考えます。
1dayハッカソンの特徴は次の通りです。とにかく時間が少ない。
企画の練り直し困難
複雑な実装は困難
一からコード書いてる暇はない
とにかくシンプル、後戻りはしないというのが重要だと感じました。
1.ルール確認
評価内容は見失ってはいけません。何をつくってるかわからなくなります。
2.構成はソフトorハード
今回は外装もつくりましたが、終わってみてこう思いました。
「図工みたい。なんかちゃちいぞ!」
組み立てなどをその辺にあった段ボールで手作りでやっているので当然ですね。しかし、他の出展者はObnizむき出ししてハードウェアの組み立てを省いた方もいました。また、M5stickCをそのままペンライトと見立てて使うなどは面白いアイデアでした。
ハードウェア構成は、むしろ基板むき出しのかっこよさを押していくくらいでちょうど良いと思いました。
3.チートシート
センサを動作させるコードはまとめておくと良いです。今回はGithubやGistに配置してあり、かなり助かりました。
4.動画の構成(絵コンテ)を先につくる
私は実は動画を取ってから、再度実装し直したり、プレゼン資料を変えました。動画の構成を考えることは、評価者に伝える内容をかなり具体的にイメージすることにつながるので、これができると戻りは少ないと感じました。
まとめ
初めてのハッカソンは悔しい結果となりましたが、どきどきしながら一生懸命取り組む時間はとても楽しかったです。
私は「Chopped」というアメリカのテレビ番組が好きです。この番組では独創的な料理人たちが集められ、一つのバスケットを渡されます。それを開けると食材がいくつかあり、それらすべて使って料理を作ります。中には特定の国でしか見かけないような、本人たちには触ったこともない食材が登場します。時間も限られている中、トラブルもあり、その中で料理人たちは「Let's Go, Let's Go」と休む暇なく料理を作ります。今回のハッカソンでは私はまさにそんな感じでした。
今回の振り返りで次やったらさらに良くなると確信しています。まずはとにかく企画を明確に!また、1日を過ごして作りたいものにこだわりたい、という私の思いも発見しました。