IDEA and Players

ベンチャー企業で働く変なエンジニアが勝手なことを書きまくるブログ

「Qiita Android Hackathon」に参加してきました

Qiita Android Hackathon

開発中サービスのβ版リリースが諸事情で遅れていたため、楽しみにしていた勉強会のいくつかをキャンセル。
事務所にこもってひたすら愛用のMac Book Airに向かう日々が続いていたわけですが、「あーハッカソン行きてー!!」という心の叫びには勝てず、1日仕事を抜け出して、Qiita主催のAndroid Hackthonに参加してきました。

ハッカソンのお題について

今回のお題はAndroidを活用しての「複数の端末・画面で動くアプリやサービス」ということなので、会場に向かう途中、電車に揺られながら必死にアイデアを練りましたよ。
ポイントとしては、

  • 複数のユーザによる同時の体験
  • 非言語コミュニケーション重視
  • 自分がAndroidに詳しくないのでWebアプリケーションの知識が応用可能なもの
  • 短時間で実装可能

というこれらの条件を満たす必要があったわけですが、結局ひねり出したアイデアは、スマフォの振動=人間の鼓動と見立てた生存確認アプリ、その名も「HeartBeat」。
毎朝ウォーキングしている際に、スマフォの歩数計を利用しているのが発想のきっかけ。
本当は、スマフォを持っている人の体温変化とか呼吸数とかから、その人の心理状態まである程度察知してシェアする仕組みが作れれば面白いんですがねー。
まあ、とりあえず加速度センサで実現できる範囲でやってみよう、と決心したわけでした。

縁あってハッカソンの同チームになったid:naoty_kと女性のデザイナーさん*1には割とアイデアが好評で、自分はサーバを担当し、id:naoty_kがアプリ側をそれぞれ担当することに。
押し迫るタイムリミットに悲鳴を漏らしつつ、三人で必死に手を動かし続けること数時間後、見事に完成したのがこちらのアプリ。

http://quiita-hackson-heartbeat.herokuapp.com/
※URLが誤字だらけ....

上記のURLで表示されるWeb側からでは状況確認しかできませんが、アプリと連動するとその振動を検知して即座にWebとアプリの両方の画面に反映される、というもの。
・・・しかし・・・私が当初、アイデアを思いついたときは、

「気になるあの娘のHeartBeatをそっと見守り、ぼくのハートもどっきどき!(ぐはあ)」

みたいな文字通りハートフルなイメージを抱いていた訳ですが、デザイナーさんの才気溢れるセンスによって一気にブラックな世界観にw
しかも、アルゴリズムのチューニングに失敗して表示されるユーザがほとんど死亡中と表示されてしまいます。なんという地獄絵図。
このサービス、場合によっちゃあ遠方のお年寄りの孤独死防止とかそんな方向性もありかな、と思ってたんですがこの画面みたらおじいちゃん達の寿命が縮んじゃうよ!


※これがアプリの恐怖画面

完成後のプレゼンでは、id:naoty_kが必死の形相でスマフォを振り続けると、アイコンの表示が「死亡」「瀕死」の間を行ったり来たり。
たまに「普通」が表示されると、会場のみなさんからは「おー!」という声。いったいどういうゲームなのかとw
ちなみに、ステータスの表示は一応「絶好調」まで用意されていたんですが、今の実装ではスーパーサイヤ人でもなければ表示させることは不可能でしょう。人類のさらなる進化を期待したいところです。

そんなこんなで、皆で協力して作り上げたこのアプリ。
残念ながらハッカソンの入賞とはなりませんでしたが、たった一日で作り上げたものとは思えないほどの出来映え。私にとっては大満足の一日でした。

技術の話

サーバ側の実装としては、Node.js+Express+Socket.io+Redisという、なるべく自分が使い慣れているものを選びました。
加速度センサがらみの実装は自分が言い出しっぺのくせに、id:naoty_kに丸投げ。なんという奴だ。
それでも嫌な顔をひとつせずに、引き受けてくれたid:naoty_kに感謝を捧げます。

アプリ側の仕組みはローパスフィルタで不要な情報を取り除いた後、X軸、Y軸、Z軸の変動値を一定時間蓄積した後サーバに送信するというもの。
ローパスフィルタについて参考にした記事:http://android.ohwada.jp/archives/334

サーバ側ではそれらの変動値を合算して、ステータスに振り分けるだけ、と。
うーん、どう考えてもサーバ側のほうが楽だったな。次回から本気出す。

反省点

実装に夢中になりすぎて、プレゼンのための資料とかを作れなかったことに反省。
他のチームはきちんとスライド作ってプレゼンしてたもんなー。プレゼン苦手だけど、今後はがんばっていこうと思いましたよ。
あとExpressの使い方をいくらか忘れていて、思い出すために時間をけっこうロスしたのが痛い。
勉強したことをいかに早く取り出すか、ということも課題のひとつ。

最後に

一緒に作業してくれた仲間、それにイベントを企画してくださったQiitaの皆様にあらためてお礼を申し上げます!
ありがとうございました!

*1:ご本人の了解は得てないのでブログ上では念のため氏名を伏せます