こんにちは。理科一類5組のヤハタといいます。以前の投稿で「ゲームのすゝめ」なる記事がありましたが、私もひとつすゝめを書いてみたいと思います。
ゲームのすゝめ 0.2 〜Prologue〜 REMIX HD Edition
対象読者
チームでのプログラミングにちょっと興味がある人
目次
- ハッカソンって知ってますか?
- ハッカソンの流れ
- ハッカソンに参加してみたい!
ハッカソンって知ってますか?
突然ですが「ハッカソン」というイベントをご存知でしょうか。ハッカソンというのは Hack + Marathon の造語であり、プログラマーやデザイナーなどが即席で数人のチームを組んで、決められた期間内にテーマに沿ったモノを作り上げる競技イベントです(競わない場合もあります)。一般的には数時間とか1,2日とかいった超短期間で行われ、作業終了後に各チームから成果発表を行う…といった流れが基本となっています。参加者の規模は10人くらいのものから100人単位のものまで様々です。ハッカソンはアイディアコンテストと同列に語られることがたまにありますが、制限時間内に実際にモノを作らなければいけないという点で大きく異なっています。
私は数年前まではプログラマーとしてよく色々なハッカソンに出場していました。はじめからデザイナーさんと一緒に参加したこともありますが、基本的にはひとりで参加してその場で初対面の人とチームを組むことが多かったように思います。ハッカソンのテーマというのは非常に多種多様です。参加したことのあるハッカソンを少し紹介してみたいと思います。
- 医療ハッカソン
- 自動車ハッカソン
- 被災地帰還支援ハッカソン
- 地方自治体の独立計画ハッカソン
- 減災防災ハッカソン
- 放射線データハッカソン
- カメラハッカソン
- FPGAハッカソン
- VRハッカソン
- Web標準ハッカソン
- セキュリティハッカソン
これでもほんの一部です。かなり多彩にテーマがありますよね。それぞれの内容としては、たとえば自動車ハッカソンなら自動車のセンサーデータを使って運転補助アプリを作ったり、放射線データハッカソンなら放射線データを使って線量マップを作ったり…というイメージです。テーマに沿って何を作るかは自分たちで考えなければいけません。
いくつかの大会では賞をいただきました。たとえば医療ハッカソンではチームとして世界一位を獲得したことがあります。このときは、WHOのオープンデータを元に国別のワクチン需要と購入資金について可視化するウェブアプリケーションを開発しました。そのときの作品がこちらですが、残念ながら地図情報APIが古くなってうまく動かなくなってしまっています…(基本的に大会後のプログラム修正はしないのでよくあることです)。
(作品のスクリーンショット)
他にも、FPGAハッカソンではチームとしてセキュアCPUを作りました。といっても私自身は低レイヤーには強くないので、このときはFPGAを触るのは他のメンバーに任せ、自分は可視化や雑用(スライド作成など)を担当していました。また自動車ハッカソンでは災害派遣のための車両監視システムを作りました。自動車とのOBD接続は車好きのメンバーに任せ、私はそのデータを処理する役割を担当しました。このように、自分がスキルを発揮するだけでなく(ほとんどの場合初対面の)チームメンバーのスキルから大きな刺激を受けられるのも魅力のひとつです。とくに全く違う分野のメンバーと組むときはいつも新鮮な刺激があります。
(FPGAハッカソン 発表の様子)
(自動車ハッカソン 自動車からのセンサーデータ取得の様子)
ハッカソンでは賞金・賞品が出る場合もあります。たとえばカメラハッカソンでは「好きなカメラレンズをもらえる」権利を獲得したので、ウン十万円するカメラレンズをいただきました(そのときの作品はこちら)。地方自治体のハッカソンではその地方の特産品をいただいたりもしました。また、イベントによってはグーグルやマイクロソフトといった有名企業からスターエンジニアが審査員に来ていたりするので、そんな方々から自分の成果物にコメントをもらえるのは最高に興奮します。だって、いちプログラマーから見たら向こうはレジェンドなわけですから。
ハッカソンの流れ
この記事を読んでいる皆さんにもぜひハッカソンに参加してみてほしい…ということで、イベントの流れを簡単に紹介したいと思います。ハッカソンの流れはざっくりと次のようなステップに分けることができます。
- 0.会場に行く
- 1.チームビルディング
- 2.開発
- 3.成果発表
0.会場に行く
第0段階は会場に行くところからです。2日以上に渡って行われるハッカソンの場合はホテルや旅館、リゾート地が会場になる場合があります。まあ当日朝にちゃんと起きられれば第0段階はほぼクリアですが、会場が遠隔地に設けられることもあるので、新幹線に乗り遅れないよう要注意です(経験者は語る)。ビルの高層階で行われる場合は遅刻すると警備員に止められて入れない場合もあるので要注意です(経験者は語る)。また慣れてくるとPCの充電器やプレゼン用のディスプレイケーブルをよく忘れるのでこれも要注意です(経験者は語る)。
(会場への道のり。ものすごい雪の中でやったこともあります)
1.チームビルディング
第1段階のチームビルディングでは文字通りチームを作ります。チームの作り方も大会によって様々ですが、よくあるのは最初に大会テーマに沿ったアイディア出しを行って、参加者同士の共通点を洗い出してから「チーム組みませんか?」と声を掛け合うという方法です。このとき、できるだけ自分と違う役割のメンバーと組むのがセオリーだと思います。またプログラマーは一人でも成果物を作れるので「今回は一人でやりたいなあ…」という場合はソロで進めることもできますが、大会によってはソロ非推奨の場合もあります。
(大会開始後の様子。ガヤガヤしてます)
2.開発
第2段階はいよいよ開発です。ほとんどの場合、開発の進め方にはルールがありません。使うプログラミング言語もフレームワークもプラットフォームもコミュニケーションツールも不問の総合格闘技です。各々の得意な方法でモノを作ります。この開発作業がハッカソンの一番面白いフェーズですが、同時に一番大変なフェーズでもあります。
開発フェーズの大変さは2点挙げられます。1点目はなんといっても開発期間の短さです。短いときは数時間で成果物を作ってプレゼンまでしなければいけませんが、ハッキリ言って正気の沙汰ではありません。普通のソフトウェア開発の何十倍ものスピード感です。2日以上にわたるハッカソンではよく徹夜で(エナジードリンクをがぶ飲みしながら…)開発作業をすることがあります。そうして徹夜作業の末に「ついに作品が動いた!!」となれば、部屋の外で仮眠しているメンバーを急いで叩き起こしにいくこともしばしばあります。
2点目の大変さはチーム内コミュニケーションです。ただでさえ初対面のメンバーとこのストレスフルな環境を二人三脚で全力疾走するのは本当に本当に本当に大変です。私はあるハッカソンで外国人プログラマーとチームを組んだことがありましたが、開発方針で衝突して向こうが憤慨して出ていってしまったことがありました。この時ばかりは大会後もしばらく落ち込んでいました…。
とはいえ開発フェーズはハッカソンのキモです。この超高密度の時間を耐え抜いて作品が走り出す瞬間には、経験者にしか味わえない興奮が詰まっていると思います。この感覚を共有できたチームメンバーの中には、数年経った今でも交流が続いている方もいます。
(ハッカソン中の開発の様子。もくもくとやってます)
3.成果発表
最終の第3段階は成果発表です。昨日の敵は今日の友と言いますけど、開発作業が終了するとどのチームも開放感に溢れていて、笑いもありの比較的和やかな雰囲気でプレゼンが進むことが多いです。まあハッカソン初参加だと緊張しちゃってそれどころじゃなかったりしますけどね。でも、まともなハッカソンならプレゼンの良し悪しだけでなくちゃんと成果物に重きを置いて審査してくれるので、あまり心配しなくて良いと思います。
(登壇するときの雰囲気をステージから見た様子。緊張の瞬間!)
ハッカソンに参加してみたい!
この記事を読んで少しでもハッカソンに興味を持ってもらえると嬉しいです。最近は感染症のせいで対面のハッカソンは少なくなっているようですが、下記サイトなどからイベント情報を得ることができますので、ぜひ自分の気になるハッカソンを探してみてください!
中盤で連発される「(経験者は語る)」に思わず笑ってしまいました。
ハッカソンあるあるなのです