imagine cupの話

はい、こんにちは。ニコニコ生放送で唐突に田中と名付けられたともやんです。

先日、サンプルの数独アプリを一通り作ってみました。無事動作したのを確認してほっと胸をなでおろしています。さてさてandroidアプリの作り方が大体分かった所で、どうして自分がandroidアプリなんてものに手を付けているのかも含めてこ4ヶ月くらいの事を書きたいと思います。

なお、初めに断っておきますが、この日記は特に役立つものではありません。ただの自分語りです。あしからず。

そもそもandroidをする予定ではなかったという話。

事の発端は鎌倉でのらりくらりとしていた頃の事。
それは去年の夏頃だったでしょうか。知人の経営するバーに入り浸る毎日を送っていた白井は、「もう塾講師で一生費やしてもいいや」なんて事も思っていました。そんな自分を見て、何を思ったか知りませんが

imagine cupに参加しないか」

なんて事を切り出してくる人がいたのです。imagine cupについては適当にぐぐってください。簡単に言えばマイクロソフトが主催するソフトウェアコンテストです。鎌倉のバーでは何故か「ロボットコンテスト」という事になっていますが、ソフトウェアコンテストですからね。

その人は白井に「やるならメンターをやろう。君はプロジェクトマネージャーをやれ」と言ってきました。本人はそう言った事をすっかり忘れているようですけど。

imagine cupに向けたチームがスタートしたのが10月頃。

何事も経験だと思っている白井は、まずはうちの大学の人と、mixiで知り合った人に話を持ちかけてみました。すると2人とも「参加したい」との事だったのでチームがスタートしました。と言ってもチームで何かやるって事自体が実は白井にとってほとんど未経験の事でしたので、悪戦苦闘しました。たまたまマネジメント系の本を読んだ事があったとかIT企業でディレクションのバイトをしたとかがあるので、少ない経験ながらも情報を参照しつつ、何とか上手くやっていければいいなぁとか思っていました。

最初にやったのはブレインストーミングで、アイデアがないと何もできないものですから横浜のサイゼリヤでやりました。しかし思った以上に難しいなぁというのが印象です。難しいのは分かっていましたが、なんとかなるぐらいの楽観的な気持ちでした。

マイナス要因

こう言ってしまうとなんですが、「スケジュールが遅れている、お前は行動が遅い」しか言わないメンターと(本当にこれしか言わない)、なかなか時間が取れない「学生」達との調整がストレスでした。要するにチーム構成の時点で間違えていたのだと知るのにそれほど時間はかかりませんでした。とてもじゃないけれど組織だって何か取り組むにはあまりにお粗末なチーム体制でした。この時点で「人材の補強」が優先課題となりました。

人が増えると増えるでまた問題が生じる。

そこで東大、横国、早稲田から人材をスカウトし、チームは3人から7人へ。途中で一人が時間不足を理由に脱して6人となりました。チームのメンバーが増えると、次は役割分担の課題があるのですが、何しろ学生ですから専門分野なんてあってないもので、東大生はさすが日本一の研究機関に属しているだけあってものすごいエンジンを持っているのがわかりましたが、他のメンバーに関して言えば実に頼りないなぁと思っていました。最大の問題はスケジュールの話で、何しろ「打ち合わせに割く時間もない」と口を揃えて言われるので、もうだめや何とか利用可能な時間を聞き出そうとしましたが、どうも上手く行かず、すると混乱するのは当たり前で。
他方に相談したところ、「スケジュールは組んでしまって、了解を取れたら後はその人の責任にしてしまえ」というアドバイスソニーのエンジニア始め複数名の方からいただくわけですが、それで結局モノができないのが嫌でした。というか、そうなるだろうと思ったのです。今思うにこういう発想があるという事は、結局のところ白井がこのチームを信頼できなくなってしまったという事なのだろうと思います。

techTokyoの変

色々な問題が平行していて、実は一番の問題はエンジニア不足であり、人材を頑張って集めても学生エンジニアが見つからなかったというのが根本的な問題であるように思います。解決策として、現在であればオフシェア開発という選択肢があるtechTokyoがあるよと教えてくれたのは横国の後輩であるM君でした。techTokyoではエンジニアが不足しているチームに、エンジニアをマッチングしてくれるのです。
それを聞いて「よし、一任する!」と言ってtechTokyoにエントリーしたわけですが、あろうことかマッチングされたのは立教と法政の文系学生であり、エンジニアじゃないわけです。(というか白井は仮にそうであっても両大学のエンジニアが優秀とはとてもじゃないけど思えないんだよなぁ。偏見かもしれないけど。)

どういうことかと聞いた所、どうやらM君が白井と自身をエンジニア登録したらしくって、それを見た運営が同じくエンジニアを欲しがっているこの二人に我々二人を紹介したというわけです。この件についてはツッコミ所が多々あり、M君の方には散々ボロクソに言ったので、もうそろそろ許してやっても良さそうなものです。

しかしtechTokyoに参加してしまったものはしょうがないわけで、そっちの大会はそっちの大会でメンターが付く事からチームを分断してリスタートを切ることにしました。リスタートしたもう一方のチームはtwitterfacebookを駆使してエンジニアを二人見つけたようですが、自分たちはもともとそれができないからtechTokyoを使ったのであって、「覚悟を決めて自分たちがエンジニアをやろう」という事になりました。techTokyoというのも結構大きな大会でしたしね。

android開発への道

今だから書けますけど、imagine cupが上手く進んでいなかったので白井のモチベーションは最悪でした。M君はM君でandroidにすぐ挫折したりでもうだめやこいつ、白井もjavaぐらいなら分かるんですけど、android開発にはいくつかの初心者を挫折させるポイントがあって、時間があれば良かったんですけど、ちょうどバイトが冬期講習の時期で、一日のほとんどがそれに費やされる状態で、当時はそういったポイントに割く時間がとれませんでした。この件について「ちょっと時間を空けたい」と塾に相談したところ、何故か逆切れされるという訳の分からない事が起こってもうだめやそれでも何とかしようと試行錯誤は続きました。

techTokyoの発表辞退

そんなわけでモノができないままに本番を迎えることになった我々は、当日にM君と話し合って発表を辞退しました。他のチームが学生レベルとは到底思えない立派なものを仕上げてきたこと、それに対して自分たちがあまりにお粗末な成果物しか持っていないことを恥じましたし、何よりもエンジニアが「成果物」を持って自分のPRをできないのは、モノを作る人間として根本的におかしいと思ったのです。

だから、とんでもなく悔しかった。

近年、こんなに悔しいことは無いというくらい、悔しかったのを覚えています。M君は傍から見たらのほほんとしていましたが、白井は元来負けず嫌いなのです。twitterでは「悔しい」を連呼していましたが、覚えている方はいるでしょうか。でも相応の時間・努力を割かなかったので、自業自得なのです。だからこそ、なんとかなったのではないかという後悔ばかりがありました。

反省。

そもそもエンジニアが用意されるはずの大会にエンジニアを味方につけずにエントリーしたという事になっていて、そんな状況下ですから「モノができない」というのは当然でした。やる前は自分でやればいいじゃんとか思っていたものですが、androidは一通り作れるようになると、確かにあんまり難しいものではないような気もするのですが、やはり作れるようになるまで時間がかかるもので、だとすると「完成しない」というリスクを防ぐために「androidアプリを作った事がある」という味方はやっぱりいるのが何事をするにも最低条件なのです。
加えてimagine cupに協力してくれるエンジニアも得られなかったという事になるので、白井はimagine cupのとりあえずのサスペンドを決定しました。もっともこれはあくまでもサスペンドであるというのがこの話のミソです。

反省を活かして。

幸いにしてどんなものにも「本当の終わり」というのはなかなか訪れないものだと思います。結果的に白井はimagine cupチームの失敗とtechTokyoの惨敗から、新しい自分の姿を見出そうとしました。そしてfacebooktwitterでシェアしたりつぶやいたりしているのですが、その答えは依然から目をつけていたアジャイル開発、突き進めばリーンスタートアップというベンチャー企業が採用しやすい開発体制にありました。要するに

  • 自分の役割分担は曖昧
  • 少数精鋭
  • 2週間程度の単位で開発を行う(イテレーションで検索すると出てきます。)

という所で、設計→開発→テストという順番を守らなければならないウォーターフォール型開発に比べて少人数体制でかつ「さして重要でない(この前提はしかし現状のアジャイル開発においてとても重要です)」案件に取り組む上では非常に効果的なのです。

役割分担が曖昧というのは、白井も開発をするという事です。白井の強みはロジカルで数字に強い所であり、この強みをもってアナリスティックな作業に適しています。多くのコンサル会社が採用している分析のためのフレームワークはこの情報化社会において公然のものであり、白井は自由にそれを参照できるし、またそこに抵抗はありません。(抵抗があるという事はツール以上の何かだと思ってしまうからです。フレームワークとはマッキンゼーで働く知人に教えてもらったのが出会いでした。)でもアジャイル開発及びリーンスタートアップ型開発をする場合、白井も開発をするのです。逆に言えば開発をしながらでも自分のアナリスティックな側面を活かす事ができるということで、フレキシブルで曖昧なものです。後はそれを許せるかどうかであり、白井はこれを合理的な開発手法と見ているので、結局は採用するつもりです。

そもそも開発をすることに関してはもともとそのつもりでしたから良いとしています。ただタイミングの問題で、androidimagine cupの件に関しても、それまでなかなかそこにタッチできなかったのです。でも塾講師のバイトを辞めた今はできるわけで。何事にもタイミングがあるものだと最近になって思います。

かくしてチーム体制及び自分の役割・努力(自己投資)の方向について、ある程度の目処が立ちました。

再出発。

さてimagine cupサスペンドしているわけですが、2/10くらいにimagine cupのページが更新されました。
ちょっと注釈を入れましょう。我々が参加しようとしていたのはソフトウェアデザイン部門であり、imagine cupが開始当初からある看板部門と言えるものです。ただ多くのチームは半年ほどの時間をかけて取り組むものであり、今さら無理という事になります。
ところが2/10にアップされたのは新たにwindows8windows phone・kinectの三つの部門でした。これがアップされたのが2/10であり、締切が3/8となっていて、随分と急な話だなと思いましたが、その内のkinectのゲーム以外への活用について以前から興味を持っていたという事と、提出物が「プロジェクトプランのみ」という事があるので、やってみようと言う気になりました。尤もプロジェクトプランが通ると、次は実際に作らないといけませんけどね。でも、どんなチームも時間的に言えば公平というのが、白井にとって最高にテンションが上がる条件なのです。

新しいチーム体制

もはや開発するのが白井でも不足はないでしょう。amazonkinectを注文しました。androidでもお世話になるであろうopenGLを弄ることになりそうです。(白井はとりあえずopenGLを使ったシューティングを作ろうと思っていますので丁度いいかもしれません。)
ある程度のメンバーに目星を付け終わりました。無差別にメンバーを引き入れてしまうとまた混迷を極めかねないので、必要があればそれに応じて適当に集めたいと思います。その人がどんなに力不足でも、そういう志向がある人であればどんな人でもチャンスを与えたい、だから一緒にやろうと声をかけてみるつもりです。そうである限り、必ず人と人との繋がりは生まれると思うのです。

そんなこんなでimagine cupプロジェクトは、再び鼓動を始めました。その件で話をすることがあれば、宜しくお願いします。