こんにちは。技術本部 Strategic Products Engineering Unit Contract One Devグループの中川です。契約データベース「Contract One」の開発マネジャーをしています。
この記事では「Contract One」の開発組織で停滞していた技術課題や改善案に真剣に向き合う1日限定の社内ハッカソンを開催しました。短期間で成果を出し、エンジニアたちのモチベーションとパフォーマンスを爆発させたこの取り組み。その背景から成果、運営の工夫まで、全貌をぜひチェックしてください!
社内ハッカソン開催の背景
「Contract One」は今年の8月にPMF(Product Market Fit)を達成し、9月からグロース期に入りました。私たち開発チームは事業の成長のために走り続けており、これからもその姿勢を維持していきます。
日々の業務では、売上に貢献するための機能開発や、今後のグロースに耐えられる開発環境の整備に取り組んでいます。その中で見つかる改善や技術課題は、優先度の高いものや素早く対応できるものは実施していますが、実行できずに眠っていることも少なくありません。
そこで、3カ月に1度くらい、目の前の業務から一時的に離れる機会を作れないかと考えました。手を出したかったものの実行できなかった改善や技術課題に対する解決策を検討し、それを発表し合う場を提供することが目的です。短期的にはトイルの削減を図り、中長期的にはContract One Devグループとして向き合うべき課題を認識し、メンバーに学びの機会を与えることを目指して、この取り組みを開催することにしました。
Contract One Devグループは、3つのチームで構成されています。しかし、通常のプロジェクトでは、チーム間のコミュニケーションが十分に行われないことが課題です。この社内ハッカソンでは、関わりの少ないメンバー同士の交流を促し、Contract One Devグループ全体でチームを越えて協力し合える環境を目指してイベントを設計しました。
社内ハッカソンの名前は「Contract One Cheat Day」
社内ハッカソンの名称は「Contract One Cheat Day」としました。チートデイとは、ダイエットやボディメイクで採用される食事管理の一環で、計画的に好きなものを自由に食べる日のことを指します。この名称にした理由は、チートデイの目的が今回の社内ハッカソンの意図に似ていると感じたからです。また、「Contract One」の開発環境を大胆に改良していくという意気込みを表現したい思いも込めました。
チートデイの目的 | Contract One Cheat Dayの目的 |
---|---|
食事制限が続くことによるストレスの解消 | 手を出したかったが、やれなかった改善や技術課題の解決策の検討が残っていることへのストレスの解消 |
代謝のリセットすることで、脂肪燃焼効率を高める | 技術負債の解消を実行することでの開発生産性を高める |
モチベーションの維持 | 出来なかった改善を実行できる日があることで、目の前の業務に集中できるようになる |
「Contract One Cheat Day」当日の流れ
時間 | コンテンツ |
---|---|
10:00-11:00 | OST(Open Space Technology)形式で取り組みたいテーマ出し、投票を行う |
採択されたテーマでチーム横断のタスクフォースを結成する | |
11:00-17:00 | タスク実行タイム |
17:00-18:00 | 実行したタスクの内容を発表し、互いの成果を称賛する |
運営において工夫した点として、タスクフォースにはグランドルールを定めました。これにより、タスクの実行が円滑に進むよう配慮しました。以下がそのグランドルールです。
- 推進役を決める
- タスクの実行のための議論やアクションが円滑に進むようにサポートを行う
- 推進役はテーマの起案者がなっても良いし、別の人が担当してもOK
- タスクフォースのメンバーひとりひとりがタスクを持つようにし、全員がテーマの達成のために行動する
- タスクフォース内のコミュニケーションは以下を原則とする
- オープンな対話: 意見を率直に述べることを奨励し、建設的な議論を行う
- 敬意を持つ: 他者の意見や立場を尊重し、批判ではなく提案を行う
- 情報共有: 必要な情報は迅速かつ適切に共有し、全員が同じ情報を持つようにする
タスクフォース紹介
今回の「Contract One Cheat Day」で結成されたタスクフォースは以下になります。
テーマ | 概要 |
---|---|
運用業務のトイル削減 | エンジニアが手動で行っている運用業務を自動化、エンジニア以外でも実施できるように運用サイトに載せる |
Kotlin 2.1アップデート | 1.7から上げられていなかった言語バージョンを引き上げ、コンパイル速度向上、Smart Castの精度向上やIntelliJ K2モードを利用することでの開発者体験の向上を目指す |
古いアーキテクチャで書かれているE2Eテストをすべて消す | 古いアーキテクチャのE2Eテストが残っていることで機能改修コスト、CI実行時間ともにかかってしまっていたので、削除し、古いアーキテクチャでの品質改善に対する方針を作ることで改善する |
Zod導入 | フロントエンドのバリデーションライブラリとしてYupを利用しているが、型とバリデーションを別々に書くため、間違ったバリデーションに気付けるのが実行時になってしまう課題がある。Zodに変更することで型とバリデーションを一元化し、より高い型安全性を確保する |
Geminiを活用し、仕様からコード自動生成を行うCLI作成 | 「Contract One」ではDDDを採用しており、機能開発を行う際にEntityに対するCRUDは類似のコードが書かれることが多い。そのコードをGeminiを活用して、コード自動生成できるか検証する |
得られた成果
各タスクフォースでの成果は、担当メンバーが今後発信していきます。僕からは「Contract One Cheat Day」自体の成果についてお話しします。このイベントでは、全員参加で全員の時間をブロックして実施しました。タスクフォースのグランドルールにより、一人ひとりのタスクが明確でした。そのため、「集中して取り組めた」という声を参加メンバーからもらえました。さらに、1日という短期間で成果を発表する必要があり、明確なゴールが設定されていました。このことがほど良いプレッシャーを生み、全員がパフォーマンスを発揮できる環境を作れたと振り返ります。
まとめ
社内ハッカソンの取り組みは、停滞していた技術改善を進めるきっかけとなりました。成果も期待以上に多く出ており、メンバーから「次回もやりたい」という声が上がっています。そのため、実施時間の増加も視野に入れつつ、今後も継続していきます!
最後に、「Contract One」はグロース期に突入しました。開発において向き合いたい課題はまだたくさんあります。課題を解決しながら学びを得て、圧倒的に成長したいエンジニアにはぴったりな環境です。一緒にチャレンジしたい方は、カジュアル面談でお話ししましょう!
Sansan技術本部ではカジュアル面談を実施しています
Sansan技術本部では中途・新卒採用向けにカジュアル面談を実施しています。Sansan技術本部での働き方、仕事の魅力について、現役エンジニアの視点からお話します。「実際に働く人の話を直接聞きたい」「どんな人が働いているのかを事前に知っておきたい」とお考えの方は、ぜひエントリーをご検討ください。