Gozalエンジニアチームで初の開発合宿を行いました

BEC Inc.のエンジニアの@toyo_takasingです。

Gozalではここ最近ユーザーが増え、たくさんの要望を頂いています。
日々淡々と開発していますが、要望がかなり溜まってきて精神的に追われるようになってきたので、一度短期集中してスピード感を出すために3泊4日で開発合宿を行う運びとなりました。

その振り返り記事をもって、Qiita初投稿記事とします。

## 準備する
大まかに以下の点について準備することになると思います。

- 宿選びと期間を決める
- ゴールを決める
- 持ってゆくものを洗い出す

### 宿選びと期間を決める
合宿を行う目的は、実装だけに集中できる環境に数日置かれればいいだけだと思っていたので、初めは寝る場所とWi-Fiがあればいいなんて思って、AirbnbでWi-Fi付き電源付きの関東の宿を探していました。
選択肢としては、

- 熱海とか伊豆とか温泉地
- 都内の浅草とかの民泊

とかで、3泊4日だと交通費含めて2人で地味に40000円くらいの計算になってしまいそうでした(もちろんもっと安くはできると思いますが、なんだかんだ「環境が〜〜〜」ってなってましたｗ)。
てな感じであーだこーだ言いながら宿探しがめんどくさくなってきていたところで、別のメンバーが
「40000円出して遠いところ行くんだったら、もう少し出して割りと近場のホテルにすれば、、、ほら、横浜のインターコンチネンタルホテル48000円くらいで行ける」
と、神提案をしてくれました。ほんとGod。

![万葉倶楽部の足湯から見たヨコハマ グランド インターコンチネンタル ホテル](https://qiita-image-store.s3.amazonaws.com/0/19707/23ec7f9a-2082-a94a-3851-aa06d7193233.jpeg)
👆万葉倶楽部の足湯から見たヨコハマ グランド インターコンチネンタル ホテル。

このホテル別に会議室があるわけでもないですが、現状2名で合宿を行うっていうところと、個人的に大学時代4年間を横浜で過ごしていて思い入れがあるっていうのと、さらに僕が温泉好きで、よくみなとみらいの万葉倶楽部に行くんですけど、すぐ目の前にりんごを切ったような形のホテルがあって常日頃から気になっていたんで、そこに泊まれるっていうだけでテンションが上ってしまいました(本末転倒)。

宿選びが終わったら、期間を決めましょう。熱が冷める前に。

### ゴールを決める
宿がと期間が決まったら、今度は合宿のゴールを決めます。
合宿は3泊4日なので、予めゴールを決めておいて、合宿中にどういう作業をやるのか明確にしておかないと、ノーコミットで試合終了となってしまいます。

具体的には、以下の点に気をつけると良いと思います。

- 直近取り組みたいタスクを決めたら、ドメインスペシャリストと議論を重ねて、しっかり深掘りして仕様を固める
- 深掘りができたら、タスクを出来る限り細切れにしておく
- 取り組む順番と、何日目に取り組むかを想定しておく

書いていて思ったんですが、普段のタスク管理みたいですねｗ

いちばん重要なのは1つ目の「仕様を固めておく」です。
予め仕様を決めておかないと、実装中にいろんな疑問が生まれて、ドメインスペシャリストに質問をしたりする必要があります。
合宿をやるのはスピードを出すため、合宿中は合宿中にしかできないことをやるという観点で考えると、**ドメインスペシャリストとSlackでいちいち会話するという状況は、普段オフィスでMTGする場合に比べて間違いなくスピードが落ちます**
なので、質問が発生せず、実装に集中できる程度には仕様を深掘りしておく必要があります。

また、計画とは変更が起こりうるのが常なので、思うように進捗しないことは多々あります。
その場合でもアウトプットを出せるようにするためにタスクを細切れにする必要があるでしょう。
**アウトプット無くして合宿の成果は測れませんので(重要)**

細切れにできたら、後は何日目にどの辺にいればいいのかをふわっと決めておきます。
僕の場合は「デプロイ完了とまでは行かずとも、実装は終わっている状況にはなっていたいので〜〜〜」みたいな感じで決めていました。

### 持ってゆくものを洗い出す
さて、合宿の内容については色々と妄想を重ねて遂に合宿の数日前となったところで、合宿に持っていくものを洗い出します。
が、正直Macbook Pro 15inchだけでも重いと思っている勢なので、下着などは当日UNIQLOで調達することにしました。
地方の旅館だとコンビニやその他の生活必需品を提供している店を探すのは大変だったり大変じゃなかったりするでしょう(コンビニは流石にあるか)。
**まあ、最悪足りなくても近くで調達できるか**って思えるのは首都圏ホテル開発合宿のメリットの一つです。

ちなみに、開発合宿をやってみてこれ持っていけばよかったというものは別にあるので後述。

## 開発合宿中
さあ合宿が始まりました。
準備万端であるエンジニアがすべきことは、**Slackを落とす**ことです。
これで計画の80％が思いどおりに進んでいくことでしょう(適当)。

![窓際での開発1](https://qiita-image-store.s3.amazonaws.com/0/19707/d3c2e2f4-c741-5999-5baa-01e3946b07d7.jpeg)
![窓際から港の夕焼けを眺める](https://qiita-image-store.s3.amazonaws.com/0/19707/80307f02-ed85-a6e8-fa10-b95f2f21c99b.jpeg)
窓際で開発する@ekuro。夕方の景色よかったのでかなり気分転換になりました(逆光を味方につけられない撮影スキル。。。)。

![合宿2日目の朝、水辺が太陽によって光ることを生まれて初めて知る](https://qiita-image-store.s3.amazonaws.com/0/19707/c8708c7f-6c5f-e3aa-7551-b8a7a20354fd.png)
合宿2日目の朝、水辺が太陽によって光ることを生まれて初めて知る。

![北東方向の夜景](https://qiita-image-store.s3.amazonaws.com/0/19707/0b66d58a-c65c-f608-12ee-b5cc62039f94.jpeg)
北東方向の夜景。三脚がないからブレブレ。

## 開発合宿終了
開発合宿終了時点で、全ての実装を完了することができました。
そして想定通りデプロイをやりきることはできませんでしたｗ

## 感想
通常オフィスで開発をしている時に比べて、かなりのスピード感でアウトプットを出せたと思います。
移動の必要がまったくないので、その分時間的余裕ひいては心の余裕が生まれるのもまたよかったなと。
そして何より、そのプロセスを通常時に活かせるなという実感が1番大きな副産物だったように思います。

逆に、困った点としては、食料供給問題がありました。
今回は、コンビニで食料を買って食べるか、外に食べに出るという作戦を取りました。
結果的に想定していた以上に食費という支出が生じたし、欲を言えば宿泊施設にそれなりのコスパで3食ビュッフェ付きとかだと外出する時間も節約できてよりアウトプットが増えた気がしなくもないです。
しかし、外を歩いて気分転換するのも大事だと思うので、もしかしたら2食ビュッフェ付きで昼は外に食べに行くとかがいいのかもしれない(わがまま)。

後は、ホテルにコンセントは十分にあったものの、開発しやすい場所に無かったりしたので、電源タップを1,2個持っていったほうがいいと思いました(これをGithubのIssueで議事録で上げた次の瞬間弊社CEOがものすごい勢いで電源タップを発注してくれました🙏)。

## 今回の成果物
今回はGozalにある住民税の機能を改善するための下地として、従業員テーブルと密結合になっていた住所テーブルを分離する改善を行いました。
やってみての知見ですが、技術的負債の返済は開発合宿にとても適しているのではないかなと思いました。

Gozalでは、よりよい労務管理よりよい働き方のために、データ設計の改善と見直しに力を入れています。
ユーザーの皆様からの要望もバシバシ実装していきたいと思っていますので、今後共Gozalをよろしくお願いします。

また、一緒に活躍してくれる同士も募集しておりますのでお気軽にオフィスに遊びに来てください！

[労務管理の世界から無駄な手作業を絶滅させるエンジニア募集！](https://www.wantedly.com/projects/22463)
[ギュルンギュルン動く労務管理SaaSを生み出すフロントエンジニア募集！](https://www.wantedly.com/projects/5397)