JPHACKS2017雑記

2018/01/27

2017/10/28から2日間、JPHACKS2017に参加してきたので様々書く。

JPHACKSとは?

イノベーターを目指す学生のための日本最大のハックイベント

JPHACKS(ジャパンハックス)は、2014年からはじまり、全国6拠点で開催をされている、全国の学生を対象にした日本最大のハックイベントです。 https://2017.jphacks.com/

はぁ。

ようするに規模が大きめのハッカソン。

どうだった?

死ぬかと思った。

具体的に

項目
制限時間 30時間(9時~翌日15時)
食事 1時間 * 2
睡眠 1.5時間
移動 1時間 * 2
開発 30 - (1 _ 2 + 1.5 _ 1 * 2) = 24.5時間

24.5時間 / 30時間 = 0.8166…

全体の8割くらいは開発していたことになる。

何を作ったの?

具体的な言及は避けるが、BLEビーコンの電波をiOSアプリで受信すると、その場所に応じた情報がサーバーから引き出され、アプリに表示されるようなシステムを作った。

iOSアプリはReact Native、サーバーはDjangoで作った。

経緯(いきさつ)

アプリ開発(React Native)要員として呼ばれました。

ハイライト

前乗り

ハッカソン前日の夜、1人で前乗りした。メンバーとは翌日の朝待ち合わせる。

18時に大学の講義が終わり、自転車でまっすぐ函館駅へ向かった。19時頃に到着し、1時間後の電車を待った。電車に乗ったら、3時間30分かけて会場付近のビジネスホテルを目指す。

事前開発

なんと、JPHACKSでは事前開発が許可されている。 (そんなん時間掛けたもん勝ちじゃん)

しかしメンバー全員が忙しかったことや、 色々な事件があった こともあり、前日になってもアイデアすら決まっていなかった。コードは1バイトも書いていない。ただぼんやりと、React Nativeを使う雰囲気があるのみだった。

3時間以上も電車に乗るので、その時間を使って事前開発したいと考えた。ところが電車内にはインターネット環境が無い。

うろうろしていたら、「函館駅Free Wifi」の張り紙を見つけた。ここぞとばかりにMacを取り出し、思う存分npm installした。 どちゃくそ重かった が、気にならないくらいありがたかった。さすが函館駅、突然の環境構築にも対応可能といったところか。

電車に乗り、PCとスマホを出した。スケルトンアプリを開発し、本番での環境構築を省きたいと考えた。電車はそこそこ揺れるので、 ありえないくらい酔う。 目の前のMacに吐くとリポジトリが吹っ飛ぶので、定期的に休憩を挟んだ。

事前開発の様子

まるで Redux

3週くらいしたところで、スケルトンアプリが完成した。札幌駅へ到着した頃には、 とても見せられない状態 になっていた。ホテルへチェックインし、シャワーを浴び、ベッドで死んだ。

1日目の会場

起きて朝食食べてメンバーと合流して会場に行って9時になって開発が始まった。

メンバーはデザイナー2人とエンジニア3人で構成されている。エンジニアのうち1人はサーバー担当、私を含めた2人がアプリ担当である。

開発が始まったとはいえ、アイデアも何も決まっていない。 いったい何を作れば良いのか という話し合いは、その後 10時間ほど続き 、程なくして会場が閉まった。

この時点でアプリの進捗は 1割 ほどだった。実際のビジネスロジックは1バイトも書いていない。そりゃそうだ。この時ようやく仕様が決まったんだから。

アプリ開発には明らかな問題があった。React NativeとBLEビーコンの相性の悪さだ。手当たり次第ライブラリを試してみたが、何故か全て動かなかった。サンプルコードすらまともに動かないという状況に参っていた。

会場を出てホテルへ向かう道中も、スマホでドキュメントやライブラリのIssueを読んでいた。状況は緊迫していた。

ホテル

ホテル近くのレストランで夕食を済ませ、ホテルへ入った。22時過ぎだった。

サーバー担当のエンジニアもアプリ開発に加わり、出来るところまで開発しようということになった。ライブラリや環境を変えたりと、各々が暗中模索している状態だった。

私の相方は既に壊れていた。

UIに関するライブラリも案の定動かなかった。何故こんなにもライブラリに嫌われるのかわからなかったが、仕方がないのでフルスクラッチした。

デザイナー達は1時くらいに落ちた。サーバー担当の彼は4時くらいに。アプリ担当の開発は 6時30分 まで続いた。5時から6時にかけてはテンションがおかしかったのを覚えている。そこから1時間30分寝て、8時に朝食をとった。その後会場へ向かった。

2日目の会場

15時までに完成させなければならない。私はUIとロジック、サーバーとの通信周りと状態管理を書いていた。

アプリの挙動は相変わらず不安定だった。BLEビーコンを検知することができなかった。私の相方とサーバー担当の彼が、2人がかりで対応していた。正直なところ、私はかなり焦っていたが、サーバー担当の彼が割りと冷静だったお陰で、なんとか動くようになったようだった。

結局アプリがデプロイできたのは、 時間切れ5分前 のことだった。

雑感と諸々

技術的に

なれない技術は使うもんじゃない。事前の技術検証は大切だ。

実は今回のメンバーの中でReact Native経験者は私だけだった。だからReact Native関連の問題は、本来なら私が解決しないとといけないものなのだが、結局未経験者2人に任せることになってしまい、申し訳なかった。

そんな中でよく開発してくれたなと思う。

開発を通して

後から運営の人に聞いたのだが、1日目の会場開発が終わってようやく仕様が決まるようなチームは 前代未聞 で、少なくとも札幌会場ではうちのチームが一番炎上していたという。 笑えない。

なにかあったの?

色々な事件があった

お察しください

会場の居心地について

暑い水がない電源タップが少ないBGMのせいで集中できない 等、色々言いたいことはあった。後日運営の人と話す機会があったので、 全部言っといた。

まとめ

まぁ色々あったけど、いい経験になったんだと思い込むことにした。

続けて読む…

ハッカソンでやってはいけないこと(Hack U函館2018)

2018/03/17

Blenderでいぶし銀

2020/08/26

春のLT大会まとめ

2019/05/18

「クロージャは関数と環境のペア」とは?(JavaScript)

2023/12/02

プロトコルスタックを写経してネットワークを完全に理解したかった日記

2022/10/16

SICPの備忘録

2023/07/29

書いた人

sititou70のアイコン画像
sititou70

都内の社会人エンジニア4年生。Web技術、3DCG、映像制作が好き。