前編ではインターン全体の話を書きましたが、後編では私(たちのチーム)の話を書こうと思います。 例によって、プロジェクトX的な文章でお送りします(笑)。

それでは、どうぞ。

プロローグ

「そういえば、あいつらのチーム名なんだっけ」
「Team GIKADIE」
「プレゼンで大コケしてたよな」
「まさしく『DIE』やな、ハッハッハ」

ここは、インターンの最終発表会。そんな会話が、会場から聞こえた-気がした。最終プレゼンが終わった私は、ようやく我に返ろうとしていたところだった。本番に弱い私が、なぜか全ての死亡フラグをかっさらい、そしてプロダクトと共に死んだ瞬間だった。私は「ごめん」と「すいません」しか言わない、ファービーを社畜にしたようなロボットと化していた。

最終発表の審査結果はこの後発表される。私は、私と相方の6日間をフイにしたものがテンパっていたせいでデモ時に一言添えるのを忘れたせいだったことをずっと悔やみ、そして6日間を振り返りながら、その時を待っていた。

「これは、イケる」

その前週の日曜日。私とその相方はSkype経由でアイデア出しをしていた。

「エンジニアがハマるアプリ」-それが今回のTechCAMPのお題だった。これを見た瞬間から頭の思考リソースの2割はこれに割かれていた。

「エンジニアってさ、どこの会社でもチームで開発してるやん。あと、コーディングでドはまりすると席から動かんやん。で、なんかのタイミングでチームの誰かに変なミッションが降ってきて、例えばリフレッシュスペースからお菓子持ってきてみんなに配るとか、突然馬のマスクかぶって踊ってみたりとかするわけよ。そんで、それを写真に撮ったり、みんなで「いいね!」的なことをしたら、ミッションによっては軽く運動にもなるし、チームのメンバーもなんか楽しくなるし、面白いんじゃないかな」 「んで、ミッションじゃなくても、例えばこれがあたった人が掃除当番とか、弁当の買い出しとかっていうのもできるし、それこそ王様ゲームみたいに変なミッションが降ってきてもいいわけだよね」

そんな感じの話をしたと思う。2人とも苦手なゲームプログラミングをうまく回避しつつ、既存のありがちなコンテンツやゲームとも一線を画し、なおかつ題意にも合致したアプリのコンセプトが生まれた瞬間だった。私たちは密かに「これはイケる」と踏んでいた。

いつの間にか、フロントとバックが逆転する

アプリのコンセプト的に必要な物は、ざっくりとこんな感じだった。

(ちなみにNFCは本来ミッション承認時に使用しようとしていたが、時間の関係で実装できず…)

つまりAndroidアプリだけではなくサーバサイドでユーザ管理、プッシュ通知、ミッション生成などの処理を行う必要があった。

最初はサーバサイドは相方がPythonで実装することになっていたが、BaaSである「Parse.com」を使えば手軽ということで、そっちを使うことにした。ParseのサーバサイドはJSで記述することになるので、それなら私もやるよということでいつの間にかサーバサイド(バックエンド)とアプリ(フロント)が逆転というか、「それぞれが必要だと思う機能に対して必要な部分は適宜いじる(or分担する、ナレッジを共有する)」という形になっていった。

Parseの場合、データベースからの取得周りの話がJSとAndroidである程度似通っていることもあって「こうするとできる」ということが共有できたのは良いポイントだった。ただ、ParseのデータベースがODB形式である点をうまく活かせず、RDB形式でデータベースを設計してしまったおかげで少々取り出しが複雑になってしまった。

紆余曲折はあれど、6日間でアプリを作る以上あまり細かいところで引っかかってはいられない。「まず動けばええんや」という正論とも悪魔の囁きともとれる言葉を心に抱きつつ、ひたすらコンセプトをアピールする上で必要なコンポーネントを実装していった。

お互い少々アプリ開発からは遠ざかっていたとはいえ、どちらも高専上がりの技科大生(私は豊橋、相方は長岡)というだけあってか、時々タイポで時間を取られたりメンターに意見を求めることはあったものの、比較的順調なペースで開発は進んでいった(と思う)。

最終発表会で、大コケ

発表会前日の段階で、2,3人程度で想定したユースケースでの動作を確認していた(ただ、プッシュ通知を全体にブロードキャストのような形で送っていたため、フィルタリングの処理で少々ハマっていたが、前日夜にサクッと直した)。

そして発表会。結果から言うと序章の通り大コケした。私がガッチガチに緊張して手が震えるあまりNFCでユーザ追加をするところが実演できず、そしてユーザ登録後にミッションを追加するステップを忘れていたがためにミッション通知が送られないというトラブルに見舞われた(まあ、設計上の問題だったんですが…)。 ただ、最後に乱数で私にミッションが来てそれをDONEすることで全員にプッシュが飛び、一連のフローを見せることができたことは唯一の救いだった。

発表の後に我に返った後、本当に悔しかった。相方に向ける顔が無かったが、(表面的にだとしても)終わったことは仕方ないと言ってくれたこと、そして最後になんとか動きを見せられたことに救われた。

ハンド・ドラムロール

(このセクションは、ぜひB’zの「NO EXCUSE」をかけながら読んでいただきたい)

そして結果発表。3位から発表されていくが、3位、2位どちらにも名前がない。やっぱりプレゼンでコケたからドベだろうな…でも、もしかしたら…そう思っていた。 そして1位の発表。みんなで机を叩くドラムロールがとても長く感じた(実際長かったw)。

そして画面に現れた「GIKADIE」の文字。

私の呼吸が一瞬、止まった。

一応発表で一度はうまく行ったとはいえ、やっぱりコケていたことには変わりなかったけど、それでもアプリのコンセプトと面白さ、ミッションをプッシュする機構や用途の拡張性などが評価され、満場一致だったと(後のフィードバックの時間に)聞いた。

最初に受賞の言葉を相方に譲り、私はパソコンの電源を入れた。私の番が来た時、こう切り出した。

「受賞のあいさつの前に、もう一度デモをやらせてください。2分で終わるので」 (ここで「NO EXCUSE」のサビ後のフレーズ「ちょっと、もう一回やらせてくださいよー!」が来ればナイス)

私が今、この感想を述べても悔しさしか出てこない。それに、あのデモのまま賞をもらうことは、試合に勝って勝負に負けるようなものだと思った。私とチームの意地を、6日間の成果を見せたかった。

各ユーザに1つでよいのでミッションを追加してもらい、通知を実行。図らずも「優勝賞品を(メンターの名前)に譲る」というミッションが出て会場が大爆笑に包まれた。そしてそれを「承認」するフェーズも実行でき、アプリの一連の流れを、楽しみ方を見せることができた。

デモを終えた後、本気で泣きそうになりながら、やっとの思いで「これで成仏できます。ありがとうございました」とあいさつをさせて頂いた。

技術屋としての執念

時間も若干押している中でああいうことをしたのは、少々迷惑だったかなぁと思った。でも、あのまま終わるのは、私も、見ている人も「あれは残念だった」という感想しか抱かない。それなら、私が後で(怒る人はいないけど)怒られようとも、自分たちの成果を見せて楽しんでもらおうと思った。それがサポートして頂いた方々への感謝であり、私たちチームの執念であり、私が一番伝えたいことだった。

相方は「もしあれでまたコケたらどうするのかと思った」と後で言っていたが、私の中では勝算があった。もしそれでもコケたら、私はエンジニア就職をやめてじいちゃんの家の畑でエヴァの加持さんよろしくスイカを育てる人になろうと割と本気で思っていた。結果的には私が伝えたいことを伝えることができ、本当に嬉しかった。

エピローグ

後のフィードバックで、「チームワークがとても良く見えた」という評価を多くの方から頂いた。良かったかどうかは、実を言うと私は開発に没頭していたのであまり考えたことが無かった(笑)。 ただ、技術的な視点や感覚の似通ったペアなのだろうなと思うことは多々あった。一つゴールを見据えて共にそれをブラッシュアップしていく姿勢や、「こうしたら面白いかも」という感覚が自分の裏返しを見ているようで、ある意味新鮮だった。

テクニカルな話をすれば、私はGitやサーバサイドプログラミングに慣れていなかった点もあり、「あれが実装できればなぁ…」と思う点も、確かに多々あった。「こうなったらいいよね」と言っていながら手を付けられなかったアイデアもあった。その点は、自分のスキルがもう少し高ければなぁと思うところである。コミットログに同じコメントを付けてみたり、タイポで3,4時間無駄にしたりと、出来のいい相方じゃなくで申し訳ないなぁとずっと思っていた。

それでも結果として優勝することができたことは素直に嬉しいし、自分たちのアイデアを、スキルを、技科大生の底力を、見せつけることができたと思う。 あの後お互いに謙遜しあっているところまで性格の裏返しのように思えたけど、6日間お疲れ様でした。本当にありがとう。