日々のこと

まいにちの暮らしをつれづれ書きます

社内リアルハッカソン@熱海!

10月の頭に、リアルハッカソンという名の開発合宿へ行ってきました。
場所は、熱海の貸別荘でした。
記事を書くのがすっかり遅くなってしまいました。

私が働いている株式会社ZAICOは山形県に本拠地があり、みなさん各地からフルリモートで働いています。
このリアルハッカソンでは、開発メンバーのほとんどが熱海に集結し、3-4人の6チームに分かれてチーム開発に取り組みました。

泊まりがけでのチームでの開発、ふりかえるとめちゃくちゃたのしかったです。
普段、業務で開発だけにずっと集中できる時間というのはなかなかなくて、とてもいい時間でした。くたびれましたが 😇

リアルハッカソンがどんな感じだったか書こうと思います。

はじめてのリアル&チームでのハッカソン

ZAICOでは、今までも数ヶ月に1回の頻度でハッカソンが開催されていたようなのですが、それはオンラインで個人活動でのハッカソンでした。
今回は、リアルで&チームでのはじめてのハッカソン開催でした。
そして、私にとってはハッカソンというものに参加すること自体がはじめでした。

チーム分けは、中学・高校・大学の部活動で分けられました。
私は、部活は基本文化系(音楽・軽音etc)でしたが、1年程度ほんの少しやっていたバスケにより「チームゴール」に所属することになりました。他のメンバーはサッカーやっていたメンバーでした。ゴールを目指していた部活に入っていたということで「チームゴール」です。
このチーム分けのやり方は、みんなのやっていた部活を知ることができておもしろかったです。
「チーム特殊」という名のチームもいました(変わった部活だった方が集まった模様)

自分は3人チームになり、アプリ開発 1名、Web開発(Rails, Vue.js)2名の構成でした。

スケジュール

今回のハッカソンは、このようなスケジュールで行われました。

オンラインハッカソン 1日目

リアルハッカソンの前の週に、オンラインで2日間、ハッカソンの準備をする期間が設けられてました。
ハッカソン期間はチームでの活動となったため、他のチームがどのように進めてたかはあまりわからないので、自分のチームでどうやっていたかを書きます。

1日目は、テーマ決めが求められており、夕方にテーマを互いに発表してフィードバックを得るという時間が設けられていたため、そこに向けてテーマを検討しました。
テーマを決めるために、それぞれがアイデアを持ち寄り、esaに記事を書いて案を書いていきました。 自分のチームには、何を作るか考えるための参考として、bizメンバーからの機能要望リストを見てくれたメンバーがいました。 1日目の早い段階で、bizの方に1人打ち合わせに来てもらって、個々人が出したアイデアを説明し、どのアイデアがユーザーにとってインパクトがありそうか・ユーザーに求められていそうかヒアリングをしました。 この時間がとても良かったです。
普段、ユーザーさんの近いところにいるbizメンバーの肌感を聞けたので、アイデアのどれが筋が良さそうかなど、とても参考になりました。
ヒアリングすることを提案してくれたメンバー、ヒアリング応じてくれたbizメンバーの方に感謝でした。

事前にチーム専用の Slack チャンネルを作り、esaにチームのキックオフのための記事を起こしていたので、何を作るか、設計をどうするかなど、 Slack や esa 上で議論を進めて行きました。
esaの記事で、事前にアイデアだけでなく設計・実装案(DBテーブル構造など)まで書き込んでくれたメンバーがいて、それもすごくありがたかったです。ここで出た設計案は、後で実際に作るものが決まった後、設計に落とすときに採用された部分も多く、事前に見通していてすごいなあと後から思いました。

オンラインハッカソン1日目は、自分たちのチームはテーマを広げすぎてしまい、それについて各人で設計を考えたりしていたけれど、絶対に2日で終わる量じゃないのでつらい気持ちになっていました。
また、夕方のテーマ決めの発表会でも、他のチームのアイデアはとても良さそうに聞こえてしまい(隣の芝生は青い)、不安が募った1日目でした。

オンラインハッカソン 2日目

2日目になり、まずチーム全員で話したとき、2日で開発が終わるようにスコープを狭める提案をしてくれたメンバーがいました。これがすごくよかったです。
この提案がなかったら、1日目に広げすぎたスコープを実装しようとして実装しきれず、迷走していたと思います。感謝・・・。
さらに画面案もそのメンバーが考えてくれたので、それをもとに、データの持ち方どうするかをそれぞれで設計を考えたり、タスクの洗い出しをして、どこまで必ず作るか、もし余裕があったらここまで作ろうなどタスクの優先順位をまとめたりしました。
リアルハッカソン期間は意外と開発の時間が少なそうでした。そのため、リアルでハッカソンが始まったらすぐ開発を開始できる状態にしておきたかったので、この日の間に、開発用のブランチを切り、マイグレーションやモデル作るところまで進めることにしました。

前泊

とうとうリアルハッカソンの日が来ました。
みなさん、いろんなところに住んでいるので熱海が遠い人もいて、前泊組が結構いました。
私の自宅は熱海は遠くなく、2時間程度で行けるのですが、せっかくの機会なので皆さんと一緒に過ごす時間が多かったら楽しそうだと思い、緊張しつつも前泊することにしました。

前泊組は先に合宿する別荘に入って、夜BBQをすることになっていました。
午前中は家で仕事をし(そわそわしつつ)、お昼前に家を出発しました。
なにせ、数ヶ月間仕事ではオンラインでご一緒していたとはいえ、はじめてリアルで会う方たちと、いきなり2泊3日寝食を共にすることになるので、集合場所へ向かうときはものすごくどきどきしていました。
一緒に仕事していてもリアルでお会いするのははじめての方ばかりなので、かなり新鮮でした。

熱海駅の足湯前で集合し、(リアルでは)はじめましての挨拶をしました。
実際に会うと、思っていたのよりずっと身長が大きい方がいたり、直接会わないとわからないことがあるなあとしみじみ思いました。
そして、一人、飼っているわんちゃんを連れてきていて、ハッカソン期間中ずっと癒されました。

そこから、レンタカーで買い出し行く組、お風呂に入る組とに分かれて行動でした。(宿のお風呂だとみんな入るのに時間がかかるので). 私は買い出し組で、スーパーとホームセンターへ行きました。

夜はお酒飲みつつBBQしつつ、卓球してたり、UNOしてたりする人もいて、緊張していたけどいきなりたのしい夜になりました。
(こんなこと言うのはなんですが、この日はほとんど仕事していませんでした。でもみんなと色々交流できたことがなにより良かったです)

次の日からハッカソンが始まるなんて信じられないような感じでした。

リアルハッカソン1日目

朝起きて、朝ごはんは前日買っておいた材料でホットドッグを食べました。
なぜか、みんなでラジオ体操しました。人と一緒にラジオ体操する、という体験がひさしぶりすぎでした。

目が覚めてきたところで開発開始です。
前日とは打ってかわって、みなさん真剣に、急に静かに集中して取り組んでいました。
チームごとに、テーブルわかれて陣取り、なんとなく、他のチームがどんな感じでやっているかはわかるような雰囲気の中でした。
自分たちのチームは開発の分担を決めていたので、それぞれのタスクを黙々と進めました(時々相談したり雑談しながら)
開発していると時間があっという間でした。
お昼はお弁当、夜はみんなでカレーを作って食べました。10合の米を炊きました🌾

この日チームで開発を進める中で、困った時、実装どうしようか相談したいとき、すぐその場でぱっと一緒に見て解決できるので、やっぱりリアルでしかも同じコンテキスト持っている状態だと話早い!という感じがしました。チーム開発の醍醐味だなあと思いました。

そして、同じチームで普段アプリ開発を担当されている方が、Rails の開発もやってみたいと言っていました。事前に環境構築のドキュメントはお渡ししてすでに開発環境は整えてくれていたのですが、この日の夜ぐらい手が空いてきたということだったので、バックエンドの開発部分もお願いすることになりました。
そうしたら、初めて触る Vuetify で、画面の機能を爆速で仕上げてくれて、これもハッカソンならではのチャレンジですごくいいな、と思いました。
自分はハッカソン期間中に、iOSアプリをローカルでビルドする環境を整えたかったのですが、時間なく断念しました。やりたい・・・。

この日は、深夜まで起きて開発するチームもいました。
私たちのチームはみんな睡眠しないとつらいメンバーだったようで、早めに切り上げました(といっても12時はまわっていた気がする)

リアルハッカソン2日目

朝は、ごはんとお味噌汁に加えて、チームごとにおいしいと思うごはんのお供を買ってきて食べ比べる、という企画がありました。
いろいろ企画を考えてくださって、たのしかったです。
このとき食べた中では、いか明太子、紀州の梅干しが特においしかったです。この時の影響でいか明太子が大好きになり、家に帰ってからもごはんのお供をいろいろ買うようになり、朝ごはんにお米を食べることが増えました 🍚

お昼過ぎ、チームごとに発表会がありました。
午前中は開発の続きをしつつ、発表会に向けて仕上げをしたり、発表資料を作成したりデモの準備をしました。
発表会は、熱海と開発以外のメンバーも見れるように、Google Meetsで繋いで行いました。

他のチームの発表は、新しい技術要素を試しに使ってチャレンジングなことをしているチームが多かった印象でした。自分たちのチームは新たな機能を開発する、というものだったのでチャレンジング要素は少なく、みんなに受け入れてもらえるか少し不安もありました。
ですが、発表したところ、結構みなさんから良い反応をもらえたのでうれしかったです。

最後、どのチームが良かったか挙手で決めたのですが、なんと2位になることができました!🙌 チームで賞品いただいて、私はラーメンを持ち帰らせてもらいました 🥳
家で食べておいしかったです。ありがとうございました。

感想とこれから

リアルでの泊まりがけのハッカソンを経て、みなさんの人となりがわかったので、コミュニケーションがスムーズになりそうだと思いました。
私は、普段の業務でSlackのやりとりするときに、その人のことが思い浮かべやすくなりました。
普段、Web開発メンバーや同じチームの方との関わりが多かったのですが、モバイルメンバーやコーポレートの方など、直接話したことのある方が増えたこともうれしかったです。

また、今は業務では個人で開発を進めることが多かったのですが、このハッカソンでチーム開発はたのしい!と強く思いました。
チーム開発がスムーズに進められるように、スクラムマスター的な動きをできるようになりたいという思いが個人的に強くなりました。

ハッカソンで作った機能は、ユーザーさんに使ってもらえるようにリリースできたらうれしいと思っています。 そして、ハッカソンにこれだけ時間を割いて集中できる環境は、本当にありがたいなあと思いました。

さらに、今回の機能開発の設計にあたり、SQLアンチパターンに出てきたナイーブツリー(2章)を思い起こさせる点があったので、読み直したいと思いました。

2日間というタイムボックスの中での開発は、時間に限りがあると焦ってしまう自分にとってはとてもプレッシャーでした。ですが、制限内にどこまで作るかということを立ち上げの段階でチームで相談した上でつくっていけたことが良かったです。
はじめてのチームハッカソン、すごくたのしかったので、これからも機会があれば参加してみたいと思っています。