社内でハッカソンやってみた

はじめまして。
株式会社アドグローブ ソリューション事業部エンジニアの大森です。

突然ですが、みなさんは《技術イベント》にどういったイメージをお持ちでしょうか

「よく参加している」
「エンジニアとしては参加するべき!」
のように、ポジティブなイメージを持つ人もいれば、以下のような理由でハードルに感じている人も少なくないのではないのではないでしょうか。

・ わざわざ会場まで足を運ぶのがめんどくさい
・ 初対面の人と会話をするのが苦手
・ 興味はあるけど、ついていけるか不安

かくいう私自身、イベントのオンライン化も進み、以前よりも参加しやすくなったものの
ハッカソンなどの開発系イベントは依然として、ハードルが高いままであるといった印象を受けてしまいます。

そこで、ハッカソンなどの技術イベントが社内で定期的にあれば、
前述の要因で参加を諦めていたという方も気軽に参加でき、
イベントを通して社員同士の交流の機会を増やしていけるのではないかと考えました。

この記事では、その取っ掛かりとして6月某日に社内の有志を集めて行った《ハッカソン》のデモンストレーションについて紹介いたします。

※所々でノリと勢いで進めた部分があるので、温かい目で見守っていただけると幸いです。

企画発足

「ハッカソンやりたい」
「わかる」
(※チャットより抜粋)

冒頭で、それっぽい大義名分*1を書いたので、それに至る経緯とか、熱い想いとかを上手くまとめようと思ってましたが、あらためて同僚との会話を見直してみた感じ上記の通りでした。

まぁ、キッカケなんてものは、大概些細なことだったりするものです。
重要なのは、ハッカソンをやりたいという気持ちなのです。

「そもそもハッカソンて何?」
「1日、2日で気合で何か作るってことしか知らない」
「わかる」
(※チャットより抜粋)

先が思いやられますね。。。

ということで、ノウもハウもない私たちの今回のハッカソンの目的としては
【とりあえず小規模で開催してみて、一連の流れを掴んで次回以降に繋げる!】
ということに決定されました。

決して日和っていたわけではないのです。

いきなり大きな規模で開催しても、失敗してグダグダになるのは見えていたので、最小限の規模でノウハウを培うことを目的としたのです。

決して日和っていたわけではないのです。

とまぁ、そんな感じの目標ということで、 自分達でコントロールできる人数に絞って実施を行いました。
2チームでやるとして、各チーム3人の計6人くらいですかね。

メンバーの構成としては、以下の通りです。
バックエンド:3名
フロントエンド:2名
アプリ:1名

なんという、バランスの取れた構成でしょう。
(たまたま出社していたメンバーに声をかけたにしては、うまいこと役割が散らばりました!)

緻密に計算された構成、そしてメンバー調達する力。
我がことながら末恐ろしいですね。


事前準備(1日目)

テーマ設定

ハッカソンのテーマについては、メンバー内で公募を行い、
集まった案の中から投票を行いテーマを決めました。

その結果、「エンジニアのための便利ツール」に決定したのですが、
中には「ダイエット」や「婚活」といったテーマもありました。
そのテーマになった場合、どんな作品ができるのか気になりますね。
いずれはネタ寄りのテーマを開催してみても面白いかもしれません。

チーム分け

チーム分けは完全ランダムではなく、バックエンドやフロントエンドの各担当が 1チームに固まらないように考慮した上でランダムに振り分けました。
全員バックエンドとか全員フロントエンドのチームになった場合に、どんな作戦で何を作るのかとか少し興味はありますが、
今回はやりきることが目標なので(笑)

チーム分けの結果以下のような振り分けになりました。

■チームA
バックエンド:2名
フロントエンド:1名
■チームB
バックエンド:1名
フロントエンド:1名
アプリ:1名

作戦会議

制作物を決める

チームが決定した後は、それぞれのチームに分かれて、簡単なアイスブレイクもそこそこに、早速どんなものを作るかの打ち合わせをしました。

社内の見知ったメンバーということもあり、アイディア出しはかなり盛り上がりました。

打ち合わせ当初は、【ハッカソン一連の流れを覚える】という前提のために、
あくまで作り切ることを重視し、なるべく簡単なものを作ろうと認識合わせていたんですが………

どれだけ工数は抑えようと宣ったところで、要件ゆめは膨らんでいくものなのです...( = =) トオイメ
ブレーキが壊れたチキンレースの如く仕様が追加されていく中、誰かが言いました。

「で、これ1日で作れるん?」
『………』

このあと泣く泣く要件を削っていきました。

設計

膨大な要件を削っていき、ようやく全貌がまとめられたところで、
『環境構築や設計をどこまで事前に固めておくか』という話になりました。

ハッカソン経験者がいないため、どこまで進めておくべきなのかというところで
各チームの判断に任せるということにしていたのですが、

いやぁ、おそらく膨れあがった要件から削っていった反動もあったのでしょう。
残った要件にしても、決して少なくはないものだったのですが、
なぜか私たちは余裕をかましており、
「あまり進めすぎたら、当日やることなくね?」
「時間余ったらどうしよう」
「まぁ僕ら本業プロっすからねwww」

みたいな会話を繰り広げ結果、「最低限の準備だけしておけばいいんじゃね」的な雰囲気になりました。

えぇと…

大体の方には、お察し頂けておられるとは存じますが、
こいつらこの後 痛い目に合います。


ハッカソン当日(2日目)

制作

さて、とうとうハッカソンの当日を迎えたわけですが、
ぶっちゃけてしまうと、必死すぎてあまり覚えていません(笑)
ただただ、いろいろなトラブルが起きていたことだけは覚えています。

トラブルの内容の一つ一つは大したものではなくても
1日で開発という制約がつき、常に時間に追われてしまっている状況となることで、
冷静な判断ができなくなったり、無駄なことを考えてしまったり

差し迫る時間、減らないタスク、炎上という言葉が頭をよぎる中で
思い返されるのはあの日の会話

「とはいえ、あまり進めすぎたら、当日やることなくね?」
「時間余ったらどうしよう」
「まぁ僕ら本業プロっすからねwww」

(あぁ…過去の自分を殴りたい)

当初想定していた機能をいくつか落としたりと、色々なアクシデントに見舞われつつも、 それでも、なんとか発表に耐えるレベルまでは作り上げることができました。

イメージとしてはこんな感じですかね。。。

当初想定していたイメージ
なんとか発表に耐えるやつ

成果物発表

チームA
■タイトル
WWW(Work With Walk)

■説明
エンジニアはデスクワークのため運動不足になりがちなため、
運動のモチベーションの維持も考慮して、チームで運動目標を達成するサービスを開発した。

■使用技術
言語:PHP、TypeScript
フレームワーク:Laravel、Nuxt.js
チームB
■タイトル
CAM(Centralized Account Management)

■説明
各種案件で使用するパスワードを自己管理しようと思うと乱雑になりがちなので、 案件ごとにパスワード管理できるツールを開発した。



■使用技術
言語:PHP、JS
フレームワーク:Laravel、Vue
認証機能:Jetstream


振り返り会

色々と目を背けたい気持ちをグッと抑えて、
やりっぱなしにせず別日にリモートで振り返り会も実施しました。

主な振り返りとしては下記がありました。

  • 事前準備が足りていなかった。
  • ディレクションを担当する人がいればもっとスムーズに進められた
  • 他人が考えたメチャクチャなテーマとかで作成してみたい

相手チームの様相なんかも知れて、良い振り返りだったなと思います。 全く違うものを作っていても、同じ様なところを反省点としてあげていたのが面白かったです。

色々と反省点があるとはいえ、参加したメンバー全員から、
「楽しかった、またやりたい」
という言葉が聞けたので、今回のハッカソンは大成功したと言えると思います。



他人が考えたメチャクチャなテーマとかで作成してみたい

なかなかに、ドMの方がいるみたいですね。


おわりに

というわけで、後悔をあげれば尽きないものの、
結果として、社内有志による第一回ハッカソンはノリと勢いで何とか乗り切ることができました。
とはいえ、このイベントを一回きりで終わらせてしまっては、もったいないと感じます。

ぜひ、他のメンバーにも同じ様なアクシデントを経験してほしい
もとい、規模を拡大しつつ、社員交流の機会を増やしていけたら良いのかなと思っているので、
振り返り会での反省点をもとに、今後も継続して開催していく予定です。

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



現在アドグローブではエンジニアを含め、さまざまなポジションで一緒に働く仲間を募集しています。
詳細については下記からご確認ください。みなさまからのご応募お待ちしております。

hrmos.co

*1:ハッカソンなどの技術イベントが社内で定期的にあれば、前述の要因で参加を諦めていたという方も気軽に参加でき、イベントを通して社員同士の交流の機会を増やしていけるのではないかと考えました。