9/7-8の2日間、24時間にわたってサンフランシスコにて開催されたハッカソン『Disrupt SF Hackathon 2013』に参加し、なんと賞をいただいてしまいました。
Congrats to @shu223 winner of @Mashery #hackdisrupt prize for Company Scouter app. Awesome use of @KloutAPI and @CrunchBase!
— Neil Mansilla (@mansillaDEV) September 9, 2013
Disrupt SF Hackathon 2013について
Disrupt SF Hackathon 2013は、参加者600人以上、プロジェクト(チーム)の数はプレゼンにエントリーしたものだけでも260以上という、かなり大規模なハッカソンです *1。
(会場の奥行きが伝わりますでしょうか)
(参加費無料で、3食出ます。おやつと夜食とビールも出ます。)
(行列が終わる頃に余裕こいていくとごはんもなくなっています)
作品発表会
作品発表会(プレゼン)がまた本格的で、プロのイベント運営会社が入っていてモニター類やバックステージの設備もしっかりしてて、進行も完璧でした。
(発表会。照明も音楽もクラブ調)
(発表直前にバックステージから客席を撮った写真)
(客席を沸かせた9歳の女の子ハッカーのプレゼン。
その右方には、客席を沸かせられなかった35歳の某日本人プログラマの姿も)
受賞者発表
プレゼンの持ち時間は1チーム1分で、進行も的確に進んでいたのですが、さすがに260組もいると、休憩含めプレゼン時間は5時間以上(!)に及びました。
で、家にネコ(弊社CEOから預かっている)を待たせていたこともあり、受賞者発表を最初の方だけちょっと見て家に帰ってしまったのですが、翌日Twitterを見ると、冒頭でTweetを載せた彼から、
@shu223 let’s connect at Disrupt conference so I can give you the prize. Couldn’t find you @ #hackdisrupt. Send me a DM.
— Neil Mansilla (@mansillaDEV) September 9, 2013
(意訳:会場で君を見つけられなかったけど、賞をあげたいから連絡ちょうだい)
とmentionをいただき受賞を知ったのでした。
ハッカソンでやったこと
一人で参戦して一人で黙々と作業していました。プレゼンのときに初めてちゃんと声を発した気がします。
Leap Motionを試した
サンフランシスコ行きの電車に乗り遅れ、会場に到着したのはハッカソン開始から2時間後。そして僕はその日箱から出したばかりの『Leap Motion』で何かつくる、ということに着手しました。
(電車に乗り遅れ、駅近くのカフェでセットアップ)
で、ハッカソンお約束の「インターネットがつながらない」問題と戦いながらいろいろ調べはじめ、「Leap Motion には iOS用SDKがない」ということに気付いたのがハッカソン開始から4時間半経過した17:00。
このハッカソンでLeap Motion+iOSで何かつくるか、と調べ始めて、iOS SDKがないことに気付いたところ。 / "Rebuild libLeap.dylib for iOS - arm7 / arm7s" http://t.co/syeZ1ihyGS
— Tsutsumi Shuichi (@shu223) September 7, 2013
重い腰をあげて箱から出してセットアップできたし、これがわかっただけでもよかったです。MacアプリとかUnityでつくるかもしれないし、今後iOS SDKが出るかもしれないし。
つくるものを考えた
というわけで作戦変更。スポンサーが提供しているAPIを使って何かつくろう、と スポンサーAPI一覧 を一通り眺めました。
で、興味のある CoreBluetooth を使ってるやつとか、定番のEvernoteとか、景品が豪華なところとか、いろいろ迷ったのですが、兼ねてからつくりたいと思ってたものをつくれそうな、CrunchBase API を使うことにしました。
つくりたいと思ってたのは、会社名からそこに在籍する人のリストを引っ張ってきて、その人たちのKloutスコアをとってきて、その合計値からその会社のパワーを計る というもの。
なんか、知り合いが転職したけど、その会社よく知らない、ってことあるじゃないですか。で、僕が世間知らずなだけで、その会社が結構すごい会社ってこともあるじゃないですか。そういうのを計りたいなと *2。
APIクライアントを2つつくって GitHub で公開
そんなわけで、CrunchBase API と Klout API のiOS用クライアントをつくり、GitHubにサンプルコードと簡単なREADMEつきでアップしました。
CrunchBase APIは、位置情報からも検索できるっぽかったので、「近隣のスタートアップのパワーを調べる」みたいなこともできそうだと思って実装を進めてたのですが、そこに来てたスタッフの人に(メールで)いろいろ聞きながら実装してみた結果、緯度経度では検索できないとか、レスポンスがものすごい遅いとか、いろいろとイマイチだったので、最終的に会社名で検索する機能だけにしました。
まぁ、UI/UXがまとまりきらなかっただろうし、プレゼン時間も足りなかっただろうから、これで良かったです *3
ブログを3記事書いた
つくりきれるかどうか、いい落としどころを見つけられるかどうかの確信がなかったので、せめて中間アウトプットを細かく出そう、ってことで、ハッカソン中にブログを3記事書きました。
- API クライアントを AFNetworking を用いてつくる手順
- CrunchBase APIをiOSアプリで使用する手順のメモ、およびAPIクライアントつくりました
- Kloutスコアを取得するライブラリをつくりました
一番上の記事はブックマークも結構ついたし、今後の自分のためにもなるので、書いてよかったです。
Company Scouter
これがハッカソンの最終作品。日本語でいうと『会社スカウター』。会社のパワーと、算出の基となる各メンバーのKloutスコアが一覧表示されます *4。
まるっとソース公開してます *5。
https://github.com/shu223/CompanyScouter
ちなみにいくつか試した感じでは、Apple最強でした。
プレゼン資料をつくった
作品提出締め切りまで時間が5時間ほどあまり、もう改良する気力はなく、しかし眠るにはあまりにも寒かったため、ひとりで無駄に会場を歩き回ったのちに、
作品提出まで終わったけど会場が寒すぎて眠れないので無意味に歩き回ってる。AM5時。 #hackdisrupt
— Tsutsumi Shuichi (@shu223) September 8, 2013
プレゼン資料の作成に着手しました。
で、できたのがこちら *6。
あと最後のページはプレゼンでは触れませんでした。1分だと足りないのと、ネイティブだけどブラウザで試せる、ってのが説明不足だと混乱を招くかなと。ブラウザアプリなの?どっち?みたいな。
プレゼンした
プレゼンしました。
賞品もらいに行きます
そんなわけで、あさって、サンフランシスコに行く用事があるので、賞をくれた Mashery のオフィスに寄って賞品をいただいてきます。
BIG JAMBOXの "Mashery Red" (要は赤)をもらえるみたいです。
ちょうどしっかりした音の出るワイヤレススピーカー探してたし、この中だと赤がいいのでめちゃくちゃ嬉しいです。
*1:こちらに別の日本人参加者の方がリアルタイムレポート記事を書かれていて、とても臨場感あります。
*2:Klout スコアなので計れる「パワー」は狭い意味になってしまうのと、CrunchBase だと日本の会社はあまり入っていないという欠点はありますが、使うAPIはあとから入れ替え可能だし、今回はスポンサーだし、ということでよしとしました。
*3:Klout API に関しては、公式リポジトリにiOS SDKとかあるのですが、ちゃんと動作しなかったし、そもそも1年以上メンテされてなかったし、無駄に複雑に見えたので、自分でつくった方が早いってことで自作しました。
*4:本当に大したものではないというか、ちょっと痛々しさすらあります。「会社のパワーを計る」というコンセプト自体はもともとつくりたかったものなのでいいのですが、中途半端に「スカウター」というネタっぽいものになぞらえてしまったことを少し後悔したりもしました。
*5:この方がスポンサーが喜ぶと思ったので。。
*6:英語でのプレゼンは初めてで舞い上がること必至なので、自分が強調して話したい部分を資料でも強調してます。