「ものアプリハッカソン」というイベントに参加してきました

ものアプリハッカソン

1月の26日(土)、27日(日)の2日間にわたって「ものアプリハッカソン」というイベントに参加してきました。
プログラム系の「ハッカソン」はよくあるのですが、ハードウェア系のものづくりを含めた「ハッカソン」は世界的にみても珍しいらしい。

そしてその主催は、なんと自体対である大阪市であった。「ハッカソン」の当日まで、僕はこのイベントをなめていた。いや、なめきっていた。単に、ArudinoとAndroidを接続するサンプルプログラムをワークショップで手とり足取り教えてもらう感じなんでしょ。と簡単に考えていた。むしろ、そんなに丁寧に教えてもらっても、むしろウザいとさえ考えていた。そう、当時のイベントのタイムスケジュールを見るまでは。。

タイムスケジュールは、5分刻みでびっしり埋まっていた。9時開始で、1日目は、20時まで、細かくびっしり埋まっていた。
1日目は、参加者が10チームに分かれて、今回作成するプロダクトのコンセプトを考える。

コンセプトの考え方をワークショップ形式で、コンサルタントの方が教えてくれた。今回、教えてくれた「コンセプトの創り方」は、これまで教わってきたなかで一番マトモだった手法だった。一番マトモというより、実際やってみて、なるほどと思うことが沢山あった。何よりも面白かったのは、そのコンサルタントの人生だったが。
山口高弘さんという方で、元ムエタイ 親父さんが変わった人らしく、中学のときに義務教育もおわっていないのに修行のため、タイに送られムエタイをならっていたらしい。その経歴にノックアウトされ、他のことはいっさい頭に入らなかった。っていうかどうやって、コンサルタントという普通の道に戻ってこれたのですか?懇親会の時にそこら辺をじっくり聞けばよかった。。

コンセプトの創り方

で、「コンセプトの創り方」の手順は以下の手順で考えていく。

1.実在の一人のユーザを発見する。
これから作成するプロダクトを実際に必要としている人をみつける。というより、まず問題をかかえている実際の一人のユーザを見つけて、その問題を解決するプロダクトを作成するかんじ。決して、セグメントやターゲッティングのようなキーワードでユーザをみつけずに実在の一人を見つけるのがポイント。

2.ユーザの問題とその目的(ニーズ)を定義し、更にその目的に隠されている本当の目的(インサイト)を発掘する。
隠されている本当の目的(インサイト)を発掘するのが、ポイント。これが実に難しい。仕事がら、お客さんから、新サービスを考えて欲しいとか、新機能を考えて欲しいとか求められるけれど、斬新なサービスがまったく思いつかない。サービス系だけでなく、業務システムの要件定義とかでも、単にニーズレベルまでしか検討していなかった。ニーズとニーズがトレードオフになったり、制約条件になったりした際にうまく解決できていなかった。

3. バイアスブレイクする。
バイアスって何?って感じだったけど、バカがバレるのが恐ろしくて周りの人に聞けなかった。。っていうか時間が短かすぎて、そんな場合でなかった。その時のニュアンスでは常識かなと思っていたが、今調べてみると「偏り(かたより)」ということらしい。ふーん。
バイアスブレイクするために、切り口や前提条件を逆にして、プロダクトを考えてみるとよいらしい。VPSの前提条件は、持ち運べないだが、前提条件を逆にして持ち運べるにして、USBメモリになるみたいな。切り口と前提条件をマトリックスにして、最初に考えたプロダクトとそれぞれを逆にした3種類を満たす別のプロダクトを考えて最初のプロダクトと検討する。時間が足りなくて、さっぱり思いつかなかったが、チームの若い奴が逆のプロダクトを考えついた。すばらしい。大体、最初に思いつくプロダクトよりも、逆の切り口や前提条件で考えたプロダクトの方がよいものがでる確率が高いらしい。僕達のチームでもそうだった。

4. 複数の問題を1つの案で解決する
複数の問題を1個、1個つぶしていくのではなく、1つの案で一気に解決できる案を採用するらしい。この辺は力と時間が足りずに辿りつけなかったように思う。


という感じでプロダクトのコンセプトを作って、プロトタイプとして、それを説明する紙芝居を作って、発表した。10チーム中上位5位のプロダクトが一次予選通過ということになり、実際に次の日に製品を作ることになる。予選で落ちたチームは、上位のチームに編入されることになる。なんと僕達のチームは、1位で通過した。俄然盛り上がるチームメンバ。

これは徹夜で作業か?とも思ったが、体力が持たないので、役割分担だけ決めて、さっさと帰ってしまった。
なんとこの時に午後10時。当初のタイムスケジュールがタイトだったので、1時間程度押してしまったのだろう。。

初期メンバも優秀だったが、追加で入ったメンバも優秀だった。メカデザインに優れている人やArudino、電子回路に詳しい人が入り、鬼に金棒なメンバ構成になった。

さて実装

2日目に入り、作業が始まった。僕達のプロダクトは、冷蔵庫の中に入れる卵型のリモート監視カメラだ。
離れてくらす一人暮らしの娘と心配性の母親のコミュニケーションを手助けするプロダクトだ。コミュニケーションを手助けすると言っても、子供側は、親から干渉されるのを嫌いできるだけコミュニケーションコストを少なくしたい。母親は、コミュニケーションを沢山取り満足したい。相反するニーズを解決するために、冷蔵庫の中身をカメラで監視させて、料理のレシピを母親が考えて娘に伝え、娘はそれに対して、「いいね」を返すだけ。というプロダクトになった。

2日で作ったものが、これです。


卵型の模型のなかにAndroid携帯とサーボモータが入っています。サーボモータは、横の牛乳パックに入ったArudinoで管理します。Android携帯には、アプリが入っており、それが写真を取って、WebSocketを使ってNode.jsのサーバに送ります。ArudinoもWebSoketを使って、駆動させることができます。

1日でここまで実装できるもんなんですね。

Androidアプリ制作

僕は、Androidアプリを担当することになりました。卵の模型にいれるために、すこし前の携帯を使いました。そのためか、普通のカメラを取るAPIでは、エラーになり苦戦しました。時間が限られているため、エラー追求せずに他の動作するアプリの手法を採用することにしました。「WSCamera-for-Android」というオープンソースのアプリがあり、そのソースコードを流用させて頂いた。カメラのプレビューを表示しておき、そこから画像を頂く感じの実装だ。

WebSocketは、「Android-SocketIO」を流用しました。

ArudinoでもWebSocketが使いたいのだが、WebSocketのバージョンの問題等でなかなかつながらない。そもそも、Arudino Wifiシールドの性能が悪いのか、はたまた会場のルータの調子が悪いのか、いろいろな問題が複数かさなり開発は難航した。開発時間も6時間程度しかない。。そして、僕のアプリは、写真すら取れない。。午前中は、「無理だ。無理だ。無駄無駄無駄無駄、ムダ、むだ、むだ。無、無、ム、む、む。。」と瞑想していた。

午前中に写真が取れるようになったけれど、WebSocketと連携させるのに難航した。最近のWebSocketの動向を追いかけていなかったのが辛い。。しかし、このイベントはハッカソン。新しい技術を使わないと意味ないじゃんと思い頑張った。
しかし、他の皆さんは、すごかった。とにかく仕事が速い。自分も速い方だと思っていたけれど、まだまだだった。というか、Androidアプリが動かなくてお荷物状態だった。終了の2時間前ぐらいにやっと動作するようになったのだけれど、それまでは、針の筵の上だ作業している心境だった。

なんとか動作するようになってよかった。いろいろ微調整すればよかったのだけど、精神的に無理だった。画像の方向やWebSocketが切れた時のリトライや、いろいろ調整すべき所はあるのだけれど無理だった。

そして伝説へ

最終的に動作させることができて、勿論プレゼンではうまく動かなかったけれど、僕は満足していた。久しぶりに自分の限界を超えられた気がする。たった2日間一緒に作業しただけなのに、このメンバーとは、死線をくぐった戦友のような感覚だった。

様々な分野の人と一緒に作業して、ひとつのプロダクトを作るという、すごい貴重な体験ができた。

このイベントに参加できて、すごくうれしい。一生の宝物だ。