サービス開発合宿

こんにちは。はてなチーフエンジニアのid:onishiです。この記事ははてなエンジニアアドベントカレンダー2014の6日目です。
今日は、サービス開発合宿についてお話します。はてなでは2008年から、エンジニアを中心に開発合宿を行い、新サービスのプロトタイプを作るという活動をしています。通常業務を離れて、2泊3日くらいで宿泊施設にこもって新しいサービスを作ったり新技術を試したりする試みです。

今年のYAPCでも開発合宿の発表をしました。

はてなでは先日、実際に約40名が参加した2泊3日の開発合宿が行われました。私がその企画・運営を行いましたので、今回の例を具体的に紹介してみようと思います。

企画

11月末の開催から逆算して、一ヶ月前くらいから企画を立て始めます。

  • 合宿の概要・期日を決める
  • 予算を確保する
  • スケジュールについて社内周知する
    • 突然言われても調整できない人もいるのでスケジュールだけでも早めに周知しましょう
  • 大まかな出欠アンケートをとりつつ宿を探す
  • 運営を協力してくれるメンバーを募集して運営チームを組む
プレイベント

前回の合宿では、合宿当日に簡単にチームビルドをするという形式をとったのですが、いくつか問題が現れました。

  • 事前にチームやネタを決めてしまっている人がほとんどで、準備していなかった人が当日困った
  • 結果的に残った人だけでチームを組むのが余儀なくされた

というわけで、今回は合宿開催の2週間前くらいにプレイベントを行い、チームビルドを予め行っておくことにしました。また同時に合宿で作る企画案も練っておいてもらい、企画の精度も上げようと試みました。

はてなは東京・京都のニ拠点体制です。なのでイベントはオンラインかつ非同期に行えるように工夫しました。

  • アイデアがあってチームを作りたい人を予め募集しておく
  • Google スプレッドシート上でチームビルドイベントを開催
    • 1アイデア1列、参加者は自分の名前を入りたいチームの列に記入する
    • 下の方にフリーエリアも用意してみました

Google スプレッドシートは複数人で同時に編集でき、「他の人がどのセルにいるか」がわかるため、他人の空気を読みながらチームビルドができました。フリーエリアにネタを書き込んだりしながら結構盛り上がったのでオススメです。

こんな感じ。
f:id:onishi:20141205154841p:plain:w600

オフィス・宿泊施設 同時開催

これは前回の合宿から始めた試みですが、合宿といいながらオフィス参加もOKとしてみました。
家庭の事情や仕事の都合で全日程宿泊できない人のために、京都オフィスのセミナールームを合宿用に開放し、オフィスでも同時に合宿(家には帰りますが)を行いました。
オフィスでも合宿感を出すために、夜には食事やビールを手配したりしてみました。結果、オフィス参加と宿泊施設参加がほぼ同数という結果になりました。

宿泊施設

宿泊施設を選ぶポイントはいろいろあります。

  • ネットワーク環境
  • 作業できるスペース
  • 機材
  • 持ち込み
  • 周辺環境
  • 食事・その他

順番に解説していきましょう。

ネットワーク環境

ブロードバンドが来ているのが望ましいです。
はてなでは例年、社内開発環境へのVPNを用意したりしていましたが、このコストが高いため今回はモバイルルーターを複数台用意して凌ぎました。

その背景としては、ローカル開発環境が整備されて社内のネットワークに接続する必要性が無くなってきたことや、合宿で作ったものをデプロイする先として、herokuなどのPaaSが充実してきたこと、などが挙げられます。
事後のアンケートで参加者からも「問題はなかった」「我慢できた」という声が大半だったので、次回もモバイルルータでなんとかなりそうです。

作業できるスペース

会議室など、日中(というか24時間)作業できるスペースが確保できるか、宿泊先に確認しないといけません。
宿泊部屋と開発部屋(と飲み部屋)が分かれているのが望ましいでしょう。

機材

参加者各自がノートPCを持ち込めば最低限こと足りますが、あると良いものも幾つかあります。

  • 椅子と机
    • 座椅子と座卓しか無かったりすると困ります!
    • なるべく良い椅子があればいいですが、なかなかそこまでは難しいです
  • サブディスプレイ
    • 大画面が無いと作業が難しい人もいると思います。デザイナーやスマートフォンエンジニアなど
    • 宿泊先には望めないので、はてなではレンタカーを借りてディスプレイを持参したりしています
  • プロジェクタ
    • 発表会を行う場合などは必要です。セミナー施設などなら常備している場合も多いので宿泊先にレンタルできるか確認してみましょう
持ち込み

適度なお菓子やドリンクは開発効率を高めます。食べ物飲み物の持ち込みが許可されている施設が好ましいです。

周辺環境

買い出しのためのスーパーやコンビニが近くにあるのが望ましいです。近くに無い場合はレンタカーが力を発揮します。

食事・その他

美味しい食事が出たり、温泉があったりするとテンションが上がるのですが、上記のような条件を満たすところを探すとなかなかプラスアルファまでは叶えられないのが実情です。

合宿の準備

個人の持ち物は各自が持参するとして、全体でも次のような準備をしています。量も多くなるので前日に宿泊施設に送っておくといいでしょう。

  • ネットワーク機器
    • 無線LANアクセスポイント
    • スイッチングハブ
    • LANケーブル
    • モバイルルータ
  • 電源タップ多めに
  • お菓子
  • ソフトドリンク
  • インスタントコーヒー、紅茶など温かい飲み物各種
  • お酒
  • ゴミ袋
  • 紙コップ、紙皿、割り箸
  • 模造紙、付箋、筆記用具
    • ブレストなどに使います
  • 宅配便送り状
    • 帰りの荷物を送る用に

情報共有

  • スケジュールや準備のあれこれは社内のグループウェア上で一箇所にまとめて共有します
  • 合宿中のやりとりは Slack 上に専用のチャンネルを作りました。新幹線に乗り遅れたとか突然のトラブルにも対応できました

スケジュール

  • 1日目
    • 午前:移動(レンタカー1台、他は電車)
    • 午後:開発
    • 夜:懇親会
  • 2日目
    • 全日:開発
  • 3日目
    • 午前:開発・発表準備
    • 昼:移動
    • 午後:発表会

発表会

合宿の成果を発表します。
各チームが作ったものを、デモなど交えながらプレゼンテーションを行い、投票で順位を決めます。上位3チームには賞金も出します。
オフィスに戻ってきて、両方の会場の参加者および、合宿非参加スタッフも交えてプレゼンを聞きます。
力の入った成果が続々発表されて盛り上がるのですが、合宿参加者はだいたい2日半がんばりすぎて死にそうな感じになってます。
その場での投票のほか、後日事業として取り組むかどうかをきちんと検討しフィードバックを行います。

合宿新聞

合宿を盛り上げるため、また合宿に参加してない人も巻き込んで会社全体で盛り上がるため、「合宿新聞」という企画を考えてみました。
ブログを共同で編集・管理できる「ブログメンバー」機能を使って、みんなで一つのブログ「合宿新聞」をリアルタイムに更新していきました。
写真で合宿の様子がアップされたり、合宿の最中に社内リリースしたプロダクトの告知がなされたりしてかなり盛り上がりました。

合宿の成果

12チームが参加し、どのチームも2日半とは思えない成果を発表してくれました。新サービスのプロトタイプや、既存のサービスに使える新技術などなど。id:y_uuki は早速合宿の成果をアドベントカレンダーで発表してくれました。


他の企画も徐々にみなさんの目に触れる機会もあると思いますのでお楽しみに。
合宿が終わったら熱が冷めないうちに参加者にアンケートをとり、次回の合宿がより良いものになるようにPDCAサイクルを回しましょう。

まとめ

開発合宿は、普段の業務を離れた非日常な空間で思いっきりコードが書けて、開発者のモチベーションも上がるし、新しいサービスの種が生まれてくることもあり非常に有意義なイベントです。しっかり準備をして楽しく充実した開発合宿をしてみましょう。

はてなでは一緒に開発合宿に参加して熱い開発をするエンジニアを募集しています!新卒サイトも公開中です!