SPAJAM2018本戦に参加して最優秀賞をいただきました

お久しぶりです. 全く手をつけていなかったブログでしたが書くと宣言してしまったので書いていきます.もうすでにチームの仲間が上げていると思うので私(Androidエンジニア)視点で感想やら何を考えていたかを備忘録として残していきます.

イデアソン開始

当日のアイデアソン直前,予選と同じくその場で本戦のテーマが公開されました. 公開されたテーマは”モビリティ”. 車好きの私としてはうまくいいアイデアをひねり出したいところでした.

f:id:m1zyuk1:20180711220916j:plain

イデアソンをやって見て

全体で行ったアイデアソンを終えての感想は,これはやばいな…でした. 何よりもまずモビリティという言葉の解釈が非常に難しかったこと,そしてその解釈を元にどういった問題をスマートフォンアプリで解決するのか.相当しっかりまとめないと進まないなと戦々恐々です.

イデアがまとまるまで

イデアソンで出たアイデアを持ち帰りチーム内での議論をしました. この時点で16時だったはずなのですが,アイデアが決まったのは26時頃でした. 時間にして10時間もかかってしまいました.それもそのはずで,アイデアを決めるまでにチームではこんなことを考えていました.

実際にアイデアが決まるまでに考えたこと

イデアが決まるまでに様々な迷走をしました. 例えばこんなことです.

モビリティとは

そもそもモビリティって何だろう?ということを考えました. チームとしてモビリティという言葉の定義を決める必要があったからです. 移動性・流動性などwikiを見るとたくさんの意味が出てきましたが,どれもしっくりこなかったのを覚えています.モビリティ=移動性・移動する物と定義しこの議論は一度終了しました.この後移動するための物や移動する物の羅列を行い, それらについて課題を考えていくのですが,ここをきっちり定め切れていなかったが故に迷宮に迷い込んでしまった感もありました.

History of Mobility

移動するための物を羅列した際にそれらをどのように分類するかを考えることがありました. その中の1つの分類が歴史の流れによる分類でした. 馬や手押し車から始まり,車,飛行機,船,電車, 果てにはUFOとどのような理由でそれぞれが進化していったかを羅列したわけです.どのような移動するためのものがあるかの羅列にはなりましたがそこから課題に繋がるわけでもなく議論はさらに迷走していきました.

f:id:m1zyuk1:20180711223800j:plain

最終的にアイデアが決まった瞬間

時刻は24時をまわり日付が変わった頃,まだアイデアは決まっていませんでした.そろそろアイデアがバシッと決まらなかった際のPlanBを始めなくてはならないということでAndroid実装の相方が次善策になりそうなアプリの技術調査に入り, 残りの4人でもう1度最初からブレストしてダメだったら次善策を取ろうという判断になりました.最後のブレストでは制限を今までとは少し変えて行うことで何とかいいアイデアが出ないかという賭けに出たのです.

最後のブレスト

最後のブレストではこのような形式で行いました.

  • まず移動するための物を羅列する
  • その移動手段を使用する際にどういう人がどのように困るのか

これを4人で絞り出した結果として,今回本戦に提出した”Wheel Free!”は生まれました.

f:id:m1zyuk1:20180711223729j:plain

実装の始まり

イデアが決まり26時, ようやくパソコンに初めて触れてまどやの実装は始まりました. 今回は予選と変わりAndroidの担当になったので,久しぶりの共同作業です.

実装の分担

相方がUI,私がデータ構造とネットワーク周りとなりました. デザインやサーバ側の技術チェックが終わり次第Android側のネットワークの実装, その後UIの実装というスケジュールになったのですでに眠気の限界にきていた相方に仮眠を取ってもらい,自分も通信周りのクラス定義のみを行い仮眠をとりました. この時点で朝4時だったので言葉通り意識を失ったのを覚えています.

仮眠から目覚めて

仮眠から目覚めて一番に発生したのは共有不足による方向性のズレです.機能の一部をサーバに置くと思い込んで実装していた私と,クライアント側で処理後に通信を行うと思い込んでいたサーバ担当で行き違いが起こっていました. これによって寝起きの私はだいぶ精神をヤラれました.

UIへの加勢

問題を解消し通信周りの実装を何とか終えました. 基本的にフォームの入力を受けて動作するタイプだったのとサーバ側にリクエストを送信するごとにAPIの都合でお金が飛んでいく状態となってしまい,ネットワーク部分のテストは結合テスト時に行うという危ない判断をします. (本当に動いてよかった…) メイン以外のUI関連の実装をチマチマしながら気がつけば制限時間, アプリを見ると無事思惑通り動いているという非常にギリギリの状態で開発は終わりました.最終的にはアドレナリンのせいか眠気は無くなったものの頭の回りがだいぶおかしくなってしまい, 通常状態なら絶対にやらないようなミスが頻発するという状況でした.小さいバグをちょこちょこ仕組んでしまっていたので解消してもらっていた相方には頭が上がりません.

最終的に出来上がったのが車椅子の方の電車予約を助ける”Wheel Free!”です. f:id:m1zyuk1:20180711222326j:plain

発表を終えて

発表を終えてまっていたのは最高のご飯と最高の温泉, そしてやりきったという達成感でした. 開発中は温泉をあまり有効に使えていなかったのが悔やまれますが(もちろん温泉の中でもブレストはしていました!)終わった後の温泉はまた格別で, 他のチームの方と風呂の中で感想だったり意見交換をしたりとあまり味わったことのないコミュニケーションを行えました. 話しかけるのが下手くそというコミュ障を発揮していましたが絡んでくれた方,声をかけていただいてありがとうございました!

食事と温泉を終えた後は相方とプログラミングかるたをしたり地下アイドルの方の即興ライブを見たりして楽しんでいました. レベルの高いハッカソンなだけあってプログラミングかるたに食いついてくる方がいて驚きながらも楽しく遊べてよかったです.

 

ハッカソンを完走した感想

今までのハッカソンの中で一番と言っていいほど過酷であると同時に一番達成感が大きいものでした. 今回のアイデアはチームメンバーの一人の友人の実体験から生まれたものだったのですが,チーム全員が解決したい課題を明確に意識でき, そのためのアプリを開発できたからこそアプリが完成したと思っています. 正直な話,後ちょっとでも早く次善策に切り替えていたら今回の勝利はなかったと思うので回らない頭で絞り出し続けて粘った甲斐がありました. この後にはシリコンバレーが待っているわけですが,私はまだ現実感がなかったりします. また作成したアプリも完全に一番いい状態かというとまだまだ改善の余地があるとも思っています. アプリの改善と今後についてきっちり考えていかなくてはならないですね. ブログを書いている今も何となく疲れが残っていますが,勲章だと思って日常に戻ろうと思います.

( ˘ω˘)o0O(いただいた表彰状は自慢しなくては...) f:id:m1zyuk1:20180711222929j:plain