NEWSニュース

2019.09.06

CULTURE

19新卒エンジニア真夏の挑戦!開発合宿レポート〜ISUCON & ハッカソンへの道〜

CAM(キャム)19新卒フロントエンジニアの木戸です!
7/31 – 8/1 に、19新卒エンジニア 12 名 + CAM先輩エンジニアの江尻さん(ejithon)引率で開発合宿を行いました。

 


ejithon
サーバーサイド、アプリ・Webのクライアントサイドと幅広く経験し、直近はWebの最新技術を追いながら新規サービスを開発中。

 


kidoyuna
北海道からこの春に上京。未経験だが、必死にWebフロントの基礎から最新技術までどんどん吸収中!

 

本記事では、開催した目的や、合宿当日の状況について紹介させていただきます。

 

なぜこの合宿が行われたのか

ずばり、簡潔に言うとISUCON & ハッカソン対策です!!

 

■ISUCON とは
Web サービスを決められたルールの中で限界まで高速化を図る、LINE株式会社主催のチューニングバトルです。Webサービスの処理が遅い場所を探し、その原因を探りあてて解消します。ベンチマークと呼ばれるスコアがあり、改善していくとこのスコアが上昇し、最終的なスコアで順位が決まります。
( 詳しくはこちら http://isucon.net/ )

 

■ハッカソンとは
『 hack(ハック) + marathon(マラソン)』の造語で、 IT 技術者が短期間で集中的にアプリケーションなどのプロダクト開発を行い、チームで競う大会です。このイベントは企業や大学が主催となり開催し、会場は大学やホテルなど様々で、豪華賞品が用意されています!

 

この 2 つの大会に共通する特徴は、「長時間集中して開発する」こと。

そのため、19新卒の有志を募り合宿の企画をしました。当初は自費で行う予定でしたが、会社に相談したところチャレンジ精神に共感してもらうことができ、会社のサポートのもと今回の合宿が実現しました。せっかくの機会だったので場所決めからスケジュールまで、しっかりと計画を練り、都会の喧騒から離れた場所で 1 泊 2 日、みっちり開発に集中することにしました。

 

ISUCON やハッカソンに参加しようと思ったきっかけ

ISUCONは主にバックエンドエンジニアの腕の見せ所なので、フロントエンジニアの私はハッカソンに参加を決めました。
なぜハッカソンに参加しようと思ったかというと、今の自分が持っている技術がどこまで使い物になっているのか、試したかったからです。
入社時の技術研修では何もできず、悔しい思いをしていました。そのリベンジでもあります!

実際に合宿に参加し、各大会に参加するメンバーからもコメントをもらいました。

 

ISUCONは、見た目の変更が禁止であり完全にバックエンドのチューニングのみが対象になる分、バックエンドの仕組み・チューニングポイントなどがわかるようになると思い、参加しました。(山浦・ISUCON)

 

自分の今の実力や成長度合いを知るために参加しました!業務で学んだことをどのように活かせるか、試してみたかったからです。(中村・ハッカソン)

 

さて、気になる合宿のレポートにいきたいと思います!

 

1 日目

11:00 – 13:30 移動

この日は月に一度のCAM全社朝会があったので、終了後Abemaタワーズから出発です。

 


▲引率のejithon先生がチャラい風に(笑)。

 

13:30 – 20:00 実装

現地に到着し、ISUCON 組とハッカソン組、それぞれ 2 チームずつに分かれて実装開始です!

ISUCON 組は、去年の予選問題に挑戦。本番の制限時間は 8 時間ですが、時間の関係上、1 日目は 6 時間半の実装でした。

ハッカソン組は事前にテーマ決め・アイデア出しまで行っていたので、当日は実装にのみ集中しました。Yahoo! JAPAN Hack Day にならい、テーマは自由でした。

 


▲コミュニケーションを取りつつ、集中して実装を進めます。

 

私はハッカソン組で、主にフロントのマークアップ部分を担当していました。
Vue.jsでの実装だったのですが、画像の扱い方に少しクセがあり、ハマってしまいました…

そこは、ejithon先生のお力を借りて何とか解決。
実装方法だけでなく、詰まった時の調べ方もすごく勉強になりました!

ISUCON 組は、スコアの上がり下がりが重要なため、計測する瞬間は緊張が走ります。

計測には少し時間がかかるので、その間チームメンバーは祈ります。スコアが上がれば大盛り上がり。変化がない、または下がってしまえば阿鼻叫喚です。

 

例えるなら、メッシのドリブルを見て「ゴール入れー!」という感じです。
プレイヤーでもあり、観戦者でもある。参加型のスポーツと言えるでしょう。(山浦・ISUCON)

 

 

20:00 - 夕食・自由時間

実装でくたびれた私たちの待ちに待ったご飯タイム!

 

 

やっと 1 日目が終了です。
皆でゆっくり夕食をいただきながら、感想を語り合います。

そのあとは、それぞれ大浴場で疲れをとり、明日に備えて休みます。
ハッカソン組は夜中まで作業を続けていたメンバーも…!

 

2日目

10:00 – 実装

昨日に引き続き、実装を続けます。寝不足のメンバーもいましたが、修学旅行気分のアドレナリンで皆ナチュラルハイでした!

 

 

最後の追い込みです。

ISUCON 組は 11:30 にコードストップで、発表資料作成に移ります。

 

12:00 – 13:00 お昼ご飯


▲夏野菜のスタミナ丼。

 

このあとハッカソン組は 15:30 まで作業を続けました。

 

14:30 - ISUCON 組 LT 開始

最終スコアと、スコアを上げるためにやったことを共有します。
今回は抜粋し、1 チームのみ紹介したいと思います。

team Koppa(石川・小林・山浦)

(小林くんのニックネームである「こっぱ」から命名したようです。この単純さは、命名作業も高速化した結果…!?)

 

 

・最終スコア 1043 点
・良かった点

チームの役割分担を
・Web サーバのアクセス解析
・DB の slow クエリ解析
・アプリケーションのソースを読む
とすることで、初めの 1-2 時間で大まかな方向性を決めることができた

詰まったらチームで解決策を話し合い→即時に役割分担、実行できた


限られた時間の中で開発するに当たって、「詰まったらチームで解決策を話し合い→即時に役割分担、実行」することは、ハッカソンでも応用できると感じました。

メンバーが皆焦っているからこそ、詰まったことをチームメンバーに伝えるのには気が引けますが、そこをなんとか突破しチームのために動けたらなと思います。

 

16:00 – ハッカソン組 LT 開始

成果物のデモ動画を含めた発表を行います。こちらも抜粋し、 1 チームのみ紹介します。

team バカ息子(太田・平山・藤本)

(バカ息子は、メンバーがよく行くランチのお店のようです。おなじみの唐揚げを食べながら相談し合うことも…!)

 

住所を入力すると、付近のランチのお店を 1 週間分レコメンドしてくれる Web アプリ

良かった点
チームの役割分担を
・フロント(ルーティング・ API のつなぎこみ)
・フロント(マークアップ)
・サーバサイド
としたことで、スムーズに開発することができた。

 

team Koppa同様、役割分担をしっかりと行っています。やはり、ISUCONでもハッカソンでも、明確な役割分担はチーム開発に必須ですね!

 

17:00 解散!

皆さん本当にお疲れ様でした。

 

まとめ

私は今までハッカソンに参加したことがなく、「とりあえず行ってみよう」くらいのテンションで挑戦してみたのですが、「思ったよりきつい!!!」というのが正直な感想です。

役割分担や限られた時間の中で開発するスケジュール設計・落とし所はどこなのかがかなり重要だということを実感しました。

業務でも、以上のことを意識しながら取り組んでいこうと思います。

ハッカソンは、どの大会に出るかまだ検討中ですが ISUCON 本番は 9/7 です!!
春から続けている朝勉強会に加え、この合宿の経験も生かし、良い成果をあげられるよう頑張りますので応援よろしくお願いいたします!

今後は、各コンテストに参加するメンバーが、大会までの取り組みや大会当日の様子をお送りします!

次回もお楽しみに〜!