2014/11/17に開催されたTechcrunch2014ハッカソンに参加してきました。
何故参加したのか
最近新しいことに挑戦していないことに焦りを感じたからです。
今年はスタートアップを立ち上げたり、実家でごたごたしたり、フリーランスを初めたりと色々なことがあったんですが、技術的には特に前に進んでいるとは言えませんでした。
そんな背景から、今回参加するにあたり自分の得意分野であるweb以外のことをやろうと決めていました。
具体的にはandroidやedisonを使って何かできないかと考えていました。
アイディアソン
今回はここで失敗しました。
いつものようにハッカソンに入る前にアイディアソンをしました。
アイディアソンには蜂の巣状のシートを埋めていき、自分の興味の単語を埋めていく。そして他人との相談からアイディアをブラッシュアップする、という手法でした。
自分の興味は色々あったのですが、その時何故か提供APIに関連する言葉でないといけないという思い込みがあり、手が進みませんでした。
その結果やる気もないアイディアを出すことになり、恥ずかしい限りでした。
振り返れば、アイディアを出すのを恐れていたのだと思います。
皆のアイディアを見ていてその自由な発想とアイディアをためらっては行けないことを再度学びました。
次のハッカソンではアイディアを出すことを目標とします。
ハッカソン一日目
アイディアソンから集まった人たちによるチームビルディングが終わり、各チームごとにハッカソンが始まりました。
僕が入ったチームのアイディアはEpsonのMoverioを装着して探しものを簡単にする、というものでした。
最初に思いついた実現方法は「探したいものにEdisonをつけて、iBeaconによる三点測量を行いその座標をMoverioで可視化する」でした。
いわゆる屋内位置測位の一種で研究レベルのものです。
ハッカソンでやるにはかなりの難易度だと考えられましたが、調べてみないと実際のところはわかりません。
チームはEdisonと調査班に別れ、調査班は初日の半分を調査に当てました。
調査の結果、やはり困難だという結論になり、さらに調査するかどうかを考えていたところ、社員旅行から帰ってきた小林さんが合流。
Edisonに赤外線LEDをつけてマーカーにしてみればどうか、という提案。その提案を軸にチームメイトとの質疑を次々とこなしていく小林さんの知識は凄まじいと感じました。
僕はというと、その傍らEdison班でEdisonを触っていました。
というのも、iBeacon方式の場合iBeaconからEdisonへ送られたデータから測位を行いMoverioからの座標リクエストもこなす、という考えがありました。
Edisonでやることが多いため、まずはsshで複数人がremoteで作業できるようにすることが必要だと考え早めにその実現に動いていました。
しかしEdisonでハマるハマる、、。何故かsshでtimeoutしたりそもそもwifiにつながらなかったり。。
ドキュメントをよく読んでいない僕が悪いのですが、何度もEdison提供元のIntelさんへ質問しに行きました。Intelさんありがとうございました!
(ここだけの話、Edisonでハマったように見えて実際はネットワークの制限であったりIP枯渇であったりwifi環境によるハマりが多かったです)
このあたりの苦労は赤外線方式に変えて徒労に終わりましたが、いい経験でもありました。
ひと通りEdisonの動かし方がわかったところで赤外線方式に変更になり、そこからは順調でした。
serialで接続後nodeを立ち上げEdisonのボードに接続したLEDを光らせるだけです。
nodeを立ち上げるのはマーカー点灯のトリガーをMoverioから受け付けるためです。
ここまでで初日の作業を切り上げ帰途につきました。
ハッカソン二日目
おもいっきり遅刻しました。みなさんすみません!
引き続きEdisonの開発です。マーカーだけでなく音でも誘導できたほうがいいだろうということで、Edisonから音を出力することに挑戦しました。
そこからusbに接続したオーディオデバイスを認識しなくてまた数時間ハマるのですが、あるときを境に突然認識し、今も原因は不明です。
nodeへのリクエスト処理でLEDの点灯と10個の音声ファイルからランダムで再生する機能を追加し、Edison側の開発は終了。
簡単なようですがオーディオ再生で非常にハマりました。
残り数時間、というところですが、Moverio側の開発が難航。赤外線をカメラ画像からの画像処理で検出しようとしていましたが、元にしたコードがまた難解で手間取っていたようです。
MoverioはAndroidで動いていますが、Moverio開発側にAndroid開発経験者がいなかったのも難易度を上げた要因でした。
今思えば僕は多少Androidの開発経験があったので、Edisonを触らずにMoverioに回ったほうが効率がよかったかもしれません。
僕がMoverio側で貢献できたのは最後の最後にEdisonと通信する部分くらいでした。
しかしぎっりぎりでなんとか形になり、一段落・・とおもいきや!?
デモ
僕らのデモの順番は正確には覚えていませんが32チーム中22,23あたりだったと思います。
しかしそこでデモ恒例のアクシデントが!
なんと
Moverioが動かない!!
焦って原因を調べてみてもわからない!
さらに焦ってサポートの方を呼んで調べてもらうと、原因は
電池切れ!!
。。。
と、とりあえずデモの順番を最後にまわしてもらいました。
そこからはデモの順番がまわってくるまでに電池残量が回復するのを祈るのみでした。
ちなみにMoverioのスペアを貸して頂いたので試してみましたが、これも動作がおかしくてデモには使えませんでした。
まあよくあるね!
順番が変わったことで案の定忘れられていましたが、Moverioの挙動も何とか持ち直し、デモを終えることが出来ました。
結果、感想
デモ自体は裏で調整してうまく行ったように見せかけたものの、入賞することはできませんでした。
しかし個人的には入賞とかどうでもよくて、初のハード寄りなハッカソンで非常に楽しい2日間でした。
また、Moverioを触って思ったことがあります。
Moverioはandroidが乗っていますが、今後そういったデバイスが増えるであろうと予想できます。
そういったデバイスを触るときに不便にならないよう今のうちからAndroidを勉強しておくほうがよさそうだと感じました。
特に個人的にこういったARのHMDやウェアラブル系に興味があるのでAndroidは重要な要素となりそうです。