ズッコケ新人三人組の初ハッカソンで準優勝！

この記事は新人エンジニアAdvent Calendar 2016の8日目の記事です。

こんにちは、KIKUYA-Takumiです。新人エンジニアAdvent Calendar 2016二回目の投稿です！
今回はズッコケ新人3人で、初めてハッカソンに参加したことについて書きます。



#はじめてのハッカソンはズッコケまくり！？
11月12、13日に行われたJubatusハッカソン with 読売新聞#2に参加してきました！今回のハッカソンで作ったのは

**銀座のママ・デラックス!**

Slackでユーザが発話すると、それに新人ホステス（SlackBot）が返事をします。ユーザがさらに発話を続けると新人ホステスがママ(SlackBot)に話を振ります。話を振られたママは[発言小町](http://komachi.yomiuri.co.jp/)からユーザにピッタリ！？の記事を推薦します。記事の推薦はユーザの発話内容を解析して、発話内容に近い内容の記事を推薦します。ママに記事を推薦するように話を振っておきながら、新人ホステスがツッコミを入れます！

このようなものになります。
![ginza-mama.png](https://qiita-image-store.s3.amazonaws.com/0/148136/3ce5c754-1cc7-f9e2-35a2-2814a7bdcdf7.png)



銀座のママ・デラックス開発は、**ズッコケまくり！**実際に、起きたズッコケエピソードを紹介したいと思います。

その前に、ズッコケ新人3人組を紹介！

#ズッコケ新人3人
* **@KIKUYA-Takumi** 自分です！Botをマネジメント！
* **@kawasyaki** リーダーです！チームをマネジメント！
* **@yan_hisa_** 有能サポート！何故かリーダーをマネジメント！


#初ハッカソンで4つのズッコケ！
##ズッコケ！その1～SlackBot2体をとりあえず起動して無限ループ
まずは自分のズッコケから！自分は今回のハッカソンでSlackBotの実装を担当しました。当初はBot1体の予定だったところ、予想よりも早く実装できたので、2体目を追加することにしました。１体目の実装が順調すぎて、何も考えずに実装したら…
![銀ママループ.png](https://qiita-image-store.s3.amazonaws.com/0/148136/5be9a060-235b-7af8-dc6e-0f6e096a72e6.png)
※以下、ループが続きます。「スイマセン。其の言葉ワカリマセン」はデフォルトの返信です。

**Bot同士が反応し合って無限ループ！**

完全にやらかしました。終了間際じゃなくてよかった～

##ズッコケ！その2～Gitでmasterブランチにpushする**（リーダー）**
Gitの管理はリーダーの役割でした。「各々ブランチを切って開発する」、「マージの号令はリーダーがかける」、「コミットログはちゃんと書く」とGitの扱いをリーダーが開発前にルールを決めたにも関わらず、リーダーがmasterブランチにpushして、masterブランチを私物化するという暴挙にでました。

この時点で、何も問題はなかったので、リーダーがmasterを私物化したまま開発を進めます。

が、これが最後に<font color="Red">**裏目**</font>に出ます！

##ズッコケ！その3～終了間際に欲張って大慌て**（リーダー）**
開発終了**15分前**にSlackBotの無限ループを無事解決し、発表資料、デモの準備も整って、<font color="Blue">**開発完了！**</font>ってときに、

（リーダー）「**あ！追加のデータ学習しよ！**」

実は、2日目にデータの追加提供がありました。リーダー曰く、初日に提供されたデータ量を考えると数分で終わると思っていたとのこと。しかし、追加されたデータ量およそ<font color="Red">**6GB！**</font>学習終了までおよそ<font color="Red">**6時間！**</font>

学習を止めて、学習前に戻すことを決断するわけですが、ここで<font color="Red">**深刻な問題**</font>に気付きます。そう**Git**です。リーダーがmasterを私物化したために、masterに数多のコミットログ！どれが欲張る前（完成したとき）のコミットなのかわからずリーダー大慌て！

さすがに、**終わったな**と思いましたね。結果的にGitのコミットログを探し当てて、無事に成果を発表することはできましたが…
**Gitの管理が重要**だと改めて思いました。


そもそも何故、直前に大慌てすることになったのか？


##ズッコケその4～二日目に大遅刻**（リーダー）**
発表直前に大慌てすることになった原因は、

<font color="Red">**ズバリ！リーダーの大遅刻！**</font>
まさかの、**お昼のお弁当**の方が先に会場入り！

最初から遅刻することは想定内だったのですが、まさか昼に来るとは…

「朝から、ちゃんと来ていれば…」、「学習する前にかかる時間を見積もれよ」、「無理に学習しなくても」とツッコミ要素満載です。

**さすが、ズッコケリーダー！**

最終的に作り上げられたので良かったです。

#結果は…
ズッコケ新人3人組の初ハッカソンは、なんと…

<font color="Blue">**見事！準優勝！**</font>


優勝できるほど甘くはありませんでしたが、当初予定のより機能を追加できたり、動くものを発表できたので満足です！**新人でもやれるんだ！**という手応えも感じました。

#準優勝の秘訣は？最初に決めた3つのことにあり！
準優勝した理由は、最初に以下の3点を決めてから開発したことにあると思います。

* **ゴールを視覚化**
* **役割分担を明確にし、自分の役割に徹する**
* **開発に必要な情報を１ヶ所に集め、全員が見られるようにする**

##ゴールを視覚化
最初に目指すゴールを明確にしておかないと<font color="Red">**戦争**</font>になることはすでにアプリ開発で経験しています。詳しくは[こちらの記事](http://qiita.com/KIKUYA-Takumi/items/aef9ab4747be835aff53)をどうぞ！

重要なのはチーム全員が１直線にゴールを目指していること、そして、常にゴールが見えていることだと思いました。2日間という短期決戦で手を止めていられる時間なんてありません。高速で実装できる技術力もありません。我々にできることは**前進あるのみ！**最初に決めたことを変更せず、やり切り、さらに、もう一歩開発を進められたのはゴールを先に明確にしていたからです。

##役割分担を明確にし、自分の役割に徹する
ゴールを明確にしたら、役割分担です。役割分担は**チームで最高のパフォーマンス**ができるよう自分達の**得意分野**を担当するようにしました。今回は、自分がSlackBot、リーダーがJubatusの実装経験があったので担当し、yan_hisa_が資料作成、プレゼン、開発のサポートを行いました。

たとえ、リーダーが遅刻しようとも、

**リーダーの管轄には手を出さない！**

きっと、「遅刻した分やっておいた！」なんてやっていたら、「余計なことをするな！」と揉めていたでしょう。勝手なことをされると誰でも腹が立つものです。Jubatusを使ったことがない人間に手を付けられていたら尚更です。

##開発に必要な情報を1ヶ所に集め、全員が見られるようにする
情報を1ヶ所に集めておくことで、想定外の問題が起きたときに情報の共有ができました。今回ではSlackBotの無限ループの解決をしたときに、参考にしていたQiitaの記事をあらかじめ共有していたので原因の特定をチームで早くできました。

また、今回欠席者はでませんでしたが、2日目に欠席者がでても対応できるように準備もできました。安心！安心！

これら3つのことを最初に用意していたからこそ、途中焦ることはあっても、爆死せずに済んだと思っています。

#さいごに
初ハッカソンの2日間揉めるどころか、お互いにカバーし合い、準優勝という結果を出せたのは、やはり最初に決めた3つのことを厳守したことで、自分たちの状況を把握でき、何をすべきか判断できたことにあると思いました。

また、機会があれば挑戦したいです！

最後まで、読んでいただきありがとうございました！

#リンク
今回参加したJubatusハッカソン with 読売新聞#2関連のリンクです
[新聞記事・発言小町活用ハッカソンに8チーム](http://www.yomiuri.co.jp/science/feature/CO018532/20161114-OYT8T50091.html) - 読売新聞オンライン
[第3回Jubatusハッカソン(Jubatus ハッカソン with 読売新聞 #2)を開催しました](http://blog.jubat.us/2016/11/3jubatusjubatus-with-2.html) - Jubatus Blog