この記事は新人エンジニアAdvent Calendar 2016の8日目の記事です。
こんにちは、KIKUYA-Takumiです。新人エンジニアAdvent Calendar 2016二回目の投稿です!
今回はズッコケ新人3人で、初めてハッカソンに参加したことについて書きます。
#はじめてのハッカソンはズッコケまくり!?
11月12、13日に行われたJubatusハッカソン with 読売新聞#2に参加してきました!今回のハッカソンで作ったのは
銀座のママ・デラックス!
Slackでユーザが発話すると、それに新人ホステス(SlackBot)が返事をします。ユーザがさらに発話を続けると新人ホステスがママ(SlackBot)に話を振ります。話を振られたママは発言小町からユーザにピッタリ!?の記事を推薦します。記事の推薦はユーザの発話内容を解析して、発話内容に近い内容の記事を推薦します。ママに記事を推薦するように話を振っておきながら、新人ホステスがツッコミを入れます!
銀座のママ・デラックス開発は、**ズッコケまくり!**実際に、起きたズッコケエピソードを紹介したいと思います。
その前に、ズッコケ新人3人組を紹介!
#ズッコケ新人3人
- @KIKUYA-Takumi 自分です!Botをマネジメント!
- @kawasyaki リーダーです!チームをマネジメント!
- @yan_hisa_ 有能サポート!何故かリーダーをマネジメント!
#初ハッカソンで4つのズッコケ!
##ズッコケ!その1~SlackBot2体をとりあえず起動して無限ループ
まずは自分のズッコケから!自分は今回のハッカソンでSlackBotの実装を担当しました。当初はBot1体の予定だったところ、予想よりも早く実装できたので、2体目を追加することにしました。1体目の実装が順調すぎて、何も考えずに実装したら…
※以下、ループが続きます。「スイマセン。其の言葉ワカリマセン」はデフォルトの返信です。
Bot同士が反応し合って無限ループ!
完全にやらかしました。終了間際じゃなくてよかった~
##ズッコケ!その2~Gitでmasterブランチにpushする**(リーダー)**
Gitの管理はリーダーの役割でした。「各々ブランチを切って開発する」、「マージの号令はリーダーがかける」、「コミットログはちゃんと書く」とGitの扱いをリーダーが開発前にルールを決めたにも関わらず、リーダーがmasterブランチにpushして、masterブランチを私物化するという暴挙にでました。
この時点で、何も問題はなかったので、リーダーがmasterを私物化したまま開発を進めます。
が、これが最後に裏目に出ます!
##ズッコケ!その3~終了間際に欲張って大慌て**(リーダー)**
開発終了15分前にSlackBotの無限ループを無事解決し、発表資料、デモの準備も整って、開発完了!ってときに、
(リーダー)「あ!追加のデータ学習しよ!」
実は、2日目にデータの追加提供がありました。リーダー曰く、初日に提供されたデータ量を考えると数分で終わると思っていたとのこと。しかし、追加されたデータ量およそ6GB!学習終了までおよそ6時間!
学習を止めて、学習前に戻すことを決断するわけですが、ここで深刻な問題に気付きます。そうGitです。リーダーがmasterを私物化したために、masterに数多のコミットログ!どれが欲張る前(完成したとき)のコミットなのかわからずリーダー大慌て!
さすがに、終わったなと思いましたね。結果的にGitのコミットログを探し当てて、無事に成果を発表することはできましたが…
Gitの管理が重要だと改めて思いました。
そもそも何故、直前に大慌てすることになったのか?
##ズッコケその4~二日目に大遅刻**(リーダー)**
発表直前に大慌てすることになった原因は、
ズバリ!リーダーの大遅刻!
まさかの、お昼のお弁当の方が先に会場入り!
最初から遅刻することは想定内だったのですが、まさか昼に来るとは…
「朝から、ちゃんと来ていれば…」、「学習する前にかかる時間を見積もれよ」、「無理に学習しなくても」とツッコミ要素満載です。
さすが、ズッコケリーダー!
最終的に作り上げられたので良かったです。
#結果は…
ズッコケ新人3人組の初ハッカソンは、なんと…
見事!準優勝!
優勝できるほど甘くはありませんでしたが、当初予定のより機能を追加できたり、動くものを発表できたので満足です!**新人でもやれるんだ!**という手応えも感じました。
#準優勝の秘訣は?最初に決めた3つのことにあり!
準優勝した理由は、最初に以下の3点を決めてから開発したことにあると思います。
- ゴールを視覚化
- 役割分担を明確にし、自分の役割に徹する
- 開発に必要な情報を1ヶ所に集め、全員が見られるようにする
##ゴールを視覚化
最初に目指すゴールを明確にしておかないと戦争になることはすでにアプリ開発で経験しています。詳しくはこちらの記事をどうぞ!
重要なのはチーム全員が1直線にゴールを目指していること、そして、常にゴールが見えていることだと思いました。2日間という短期決戦で手を止めていられる時間なんてありません。高速で実装できる技術力もありません。我々にできることは**前進あるのみ!**最初に決めたことを変更せず、やり切り、さらに、もう一歩開発を進められたのはゴールを先に明確にしていたからです。
##役割分担を明確にし、自分の役割に徹する
ゴールを明確にしたら、役割分担です。役割分担はチームで最高のパフォーマンスができるよう自分達の得意分野を担当するようにしました。今回は、自分がSlackBot、リーダーがJubatusの実装経験があったので担当し、yan_hisa_が資料作成、プレゼン、開発のサポートを行いました。
たとえ、リーダーが遅刻しようとも、
リーダーの管轄には手を出さない!
きっと、「遅刻した分やっておいた!」なんてやっていたら、「余計なことをするな!」と揉めていたでしょう。勝手なことをされると誰でも腹が立つものです。Jubatusを使ったことがない人間に手を付けられていたら尚更です。
##開発に必要な情報を1ヶ所に集め、全員が見られるようにする
情報を1ヶ所に集めておくことで、想定外の問題が起きたときに情報の共有ができました。今回ではSlackBotの無限ループの解決をしたときに、参考にしていたQiitaの記事をあらかじめ共有していたので原因の特定をチームで早くできました。
また、今回欠席者はでませんでしたが、2日目に欠席者がでても対応できるように準備もできました。安心!安心!
これら3つのことを最初に用意していたからこそ、途中焦ることはあっても、爆死せずに済んだと思っています。
#さいごに
初ハッカソンの2日間揉めるどころか、お互いにカバーし合い、準優勝という結果を出せたのは、やはり最初に決めた3つのことを厳守したことで、自分たちの状況を把握でき、何をすべきか判断できたことにあると思いました。
また、機会があれば挑戦したいです!
最後まで、読んでいただきありがとうございました!
#リンク
今回参加したJubatusハッカソン with 読売新聞#2関連のリンクです
新聞記事・発言小町活用ハッカソンに8チーム - 読売新聞オンライン
第3回Jubatusハッカソン(Jubatus ハッカソン with 読売新聞 #2)を開催しました - Jubatus Blog