狐に騙され覚書

あぁこれ便利だなってことを忘れてもいいように覚書。主にプログラミング言語主体ですよ。

AngularAttack2017 参加レポート(前編)

概要

4/22 0:00 AM (UTC) - 4/23 23:59 PM (UTC) にかけて、AngularAttack というオンラインハッカソンに参加しました。 その名の通り、angular というフレームワークを用いたハッカソンです。 http://www.angularattack.com/

基本的に登録からフィードバック、表彰に至るまで全て英語で行われるので、インプットはもちろんアウトプットも英語でできないといけませんでした。 昨年から始まってまだ開催は2回目らしいので、今後参加者や参加地域が増えるに従って国際化も進むかもしれません。

フィードバックフェーズでどんなチームが出ているのか見てみましたが、多くはやはり San Francisco からで、たまにインドなどからちらほらといった感じでした。 プロダクトが完成してフィードバックまで参加したのは 125チームらしいです。 僕の知る限りでは、日本人は他にいませんでした(見落としてたら教えてください)。

成果物(Entry)

Angular (RxJS) + firebase database で YouTube の同期的動画再生サービスを作りました。 YouTube にデモ用の動画をあげています。 https://www.youtube.com/watch?v=xDqUWYbzO5Q&cc_load_policy=1

ホスト側(画面左)で動画を再生、停止、シークすると、それに追随して右側のブラウザでも動画が操作されます。

実際に動くものは以下の URL から触れます(が、たまに動かないです、あと利用規約とかプライバシーポリシーとか書いてないので、あくまでプレゼン用という体です)。 http://www.angularattack.com/entries/290-whitegold/launch

バグがあるなーというのはわかっているんですが、レギュレーション上、期間を過ぎてのコミットができないので(ペナルティが与えられるため)、そのまま放置しています。 ホスト(動作を共有したい側)のブラウザを再読込すると直ることがあります。

全体の流れ

登録から表彰までの流れを簡単に書きます。 ほとんどは普通のハッカソンと同じだと思いますが、フィードバックフェーズが新鮮でした。

  • 参加登録(チーム名を決める)
  • レギュレーション等の発表
  • github private repository に招待される
  • ハッカソン開始、プログラミング
  • アピールフェーズ
  • フィードバックフェーズ
  • 入賞者発表
  • 表彰

参加登録

ハッカソンの 2ヶ月くらい前に告知があります。 twitter とかを追っていると良いです。 https://twitter.com/angularattack

確か githubgoogle でログインして、チーム名を決めただけです。 5分くらいで終わります(英語が読めれば)。

レギュレーション等の発表

ハッカソン開始前にそのプロダクト専用のコード書いてはいけませんとか、バックエンドサーバーを使いたい場合にはどうするとか、普通のハッカソンと同じようなルールです。 ただし、全てオンラインで行われるため、時間制限に関してはかなりシビアだと思います(例えば時間外のリポジトリへのコミットにペナルティをつけたり)。

プライベートリポジトリへの招待

運営側が用意した空っぽのリポジトリに招待されます。 プロダクトのコードはリポジトリのコードと完全に一致していないといけません。

ハッカソン開始、プログラミング

このフェーズはプログラミングするだけです。 ただし基準は UTC なので、日本では朝9時から始まります。この一年で最も健全な土日でした。

たまに公式 slack上で技術的な質問をしている人がいたりしました。 日常的に angular を使っている人が多いのか、質問自体の総数は少なかったです。 質問の質も割と高かったかと思います。

アピールフェーズ

48h なので、プロダクトもそれなりに複雑なものができあがります。 そのため、他のチームやジャッジにアピールするためのページを用意しなければなりませんでした。 書かなければならない内容は、

  • アプリケーションの URL(自動)
  • Githubリポジトリの URL(自動)
  • チーム名(自動)
  • チームの情報
  • プロダクト(Entry)名
  • スクリーンショット
  • 簡単な説明
  • 詳しい説明
  • 操作手順 Y* ouTube の URL
  • 使ったリソース(Angular とか firebase とか)

です。(自動)と書いているところは自動で入ります。 アプリケーションの動作サーバーは、ジャッジに対して管理者権限が渡せるところであればどこでも構わないというものでした。 firebase hosting とか heroku を使っている人が多かったです。

フィードバックフェーズ

このフェーズでは、ハッカソンの参加者、ジャッジ、一般の人がそれぞれのプロダクト(Entry)を評価します。

評価軸は、

の3軸で、それぞれ 5点満点で評価されます。 大体 3.5点が平均になるようにしてねと言われますが、ジャッジの中にはそれを知らずになのか、かなり低い評価を付けている人もいて、一時期 slack が荒れていました。

最終的に、各Entry内でそれぞれの軸の評価値の平均をとって、その値がその Entry の得点となるような指標でした。ただ、各ジャッジ、参加者は全ての Entry を評価できるわけではないので、誰が評価したかによってバラツキが出るよね?どうするの?ということを slack で聞いています(まだフィードバックフェーズなので進行形です)。

このフィードバックは当然ながら全て英語で行われるので、攻撃しないように、そのプロダクト(その開発者)にとって有益で、快く自分の Entry も評価してくれるように(さらに相手の得点を高くしすぎないように)する必要があり、なかなか神経と知識を使いました。

入賞者発表

フィードバックフェーズが終わると、入賞者の発表に移ります。 賞は以下のような指標で決定します。

  • チーム優勝者(TEAM WINNER)
  • 個人優勝者(SOLO WINNER)
  • イノベーション(INNOVATION)
  • デザイン(DESIGN)
  • 機能性、楽しさ(UTILITY/FUN)
  • 人気(POPULARITY)
  • 優勝者と書いてあるところは、Entry の総合点で競います。
  • 複数人のチームと個人のチームで賞を分けてくれているところに合理性を感じます。

その下のイノベーション、デザイン、機能性、楽しさは、それぞれの指標で最も高いスコアを出した人が選ばれます。

人気は、フィードバックされた数が最も多い人です。 公平性を期すために、自分のチームには投票できなくなってるよと書いてありましたが、実際には、「他のチームの評価を書く -> 僕らのチームの評価も書いてね」という流れが確立していたので、結局人の多いチームが有利でした。

その他

事前にコードを書くのは禁止ですが、コンセプトを練ったりデザインカンプを描いたりすることは可能です。むしろそうするべきです。 参加した人はまぁやっぱり自分も苦労しているのである程度褒めてくれるのですが、そうでない、いわゆるジャッジは、デザインとかも含めてワーワー言ってくるので、勝ち残りたければある程度戦略を持って望むべきかなと思いました(少なくとも一人ではキツイ)。

コメントの中で、「デザインは…ミニマリストだね!」というものがあって、

「あぁ、僕は日本人だからね。ミニマリストは禅の精神を反映しているんだ。」

と返しておきました。ユーモア力も試されます(結果には反映されません)。

前編のまとめ

まだ評価フェーズが終了していないので、前編はここまでにします。 評価方法に関して思うところはありつつも、オンラインハッカソンとしてまとまっていて、非常に楽しい時間でした。