kentana20 技忘録

技術ネタを中心に、セミナー、勉強会、書籍、会社での出来事を綴っていきます。不定期更新。

開発合宿的なものに行ってきた

8/8(金)〜9(土) の1泊2日で会社の有志4名+OB1人(別の会社でエンジニアやってる元後輩)の合計5名で開発合宿的なものに行ってきました。

宿泊先

日光にあるペンションはじめのいっぽという開発合宿プランのあるペンションに行ってきました。「はてな」さんや「nanapi」さんをはじめ、数多くの会社が開発合宿に使われているエンジニア御用達?のお宿さんです。

開発合宿の目的

  • 会社のメンバーはほとんど開発合宿の経験がなかったので「開発合宿ってどんなもの?」という所感を得る
  • 会社で新規サービスを作るときのために、会社で触っていないプログラミング言語・環境を集中して学習する
  • サービスをリプレイスをすると仮定して、既存サービスで実装している1機能を新しい言語で実装してみて所感を得る

とまぁ、それっぽいことを書いていますが「開発合宿やりたいっ!」と思い立ったのが一番のきっかけですね。

スケジュール

2日間のスケジュールは以下です。

  • 8/8(金)

    • 11:30 浅草駅集合してスペーシアで日光へ
    • 15:00 ペンションチェックイン
    • 15:30 開発スタート(最初に各自やることをイントロだけ共有)
    • 19:00 食事
    • 21:00 お風呂
    • 21:30 開発再開(たぶん27:00くらいまでやってました)
  • 8/9(土)

    • 7:00頃 起床
    • 7:30 朝食
    • 8:30 チェックアウト準備を済ませて開発再開
    • 11:00 成果発表(5分間?LTで成果を共有)
    • 12:00 撤収

宿にいる時間は食事とお風呂と睡眠以外はず〜っと開発してました。ペンションはとっても静かで他のお客さんも2組くらいしかおらず、作業スペースは24時間使わせていただき、集中して開発が出来ました。

レギュレーション

1人1言語を選択して以下のアプリケーションを作る

  1. 特定サイトの情報をスクレイピングで取得し、DBへ登録するスクリプト(バッチプログラム)
  2. バッチプログラムで取得したデータを表示・管理するWebアプリケーション

発表では以下の観点で1人5~10分程度のプレゼンを行う

中身はそんなにカッチリ決めてませんでしたが、大体

  • トライした言語環境
  • コンセプト
  • デモ
  • トライした環境の所感

などを発表してました。

トライする言語

  • Scala (Play2)
  • PHP (Phalcon)
  • Hack
  • Go (Revel)
  • Node.js (Express)

自分は「1. バッチ」「2. Web」ともにNode.jsを使って開発を行いました。

成果

詳しくはBatch編とWeb編で別エントリを書こうと思っていますので、こちらもイントロだけ。

Batch

はじめの内は

  • PhantomJS
  • CasperJS

を使ってスクレイピング処理をしようと思ってこの2つをイロイロいじってたのですが、Casper.jsで別のnpmパッケージを使う場合はWebラッパーのSpookyJSが必要になることを認識しておらず、タイムロスした結果

  • cheerio-httpcli

というパッケージを使ってスクレイピングするバッチを作りました。

Web

node.jsの定番?フレームワークである Express というWebフレームワークを使いました。イマドキのWebフレームワークはホントに良く出来ていて、短い時間でサクサク作れて非常に手軽い印象を受けました。便利な世の中です。

発表(Node.js所感)

時間が7分しかなかったのでかなり端折ってますが、こんな感じです。Node.jsは手軽さはあるものの、非同期+シングルスレッドで動作するので、サーバサイド負荷が高い処理や同期を取る必要があるアプリはNode.jsを使うと意図しない挙動が起こる可能性があります。これらの諸注意をメンバーがしっかり認識して、少人数で開発をするようなスタイル・規模であれば導入するメリットはあると思います。

開発合宿所感

東京から離れた、普段と異なる場所で状況を共有できる仲間と開発することはホントに大切だと感じました。

  • 会社にいると、、、
    • 問い合わせや障害、突発的な対応によって作業が中断される
  • 1人でやってると、、、
    • スケジュールが決まっているわけではないので、だれる時がある

といった問題がありますが、開発合宿であればこういった問題をクリアできます。また、コンテキストを共有して同じ時間を過ごせるので、自然と仲良く・楽しく開発ができる気がしました。1泊だとちょっと短いので、実際の業務として合宿をする場合は3日間くらいとってガッツリやりたいと思いました。

全体所感(まとめ)

  • 合宿は集中して作業に没頭できる
  • 仕事で開催する場合は2~3泊くらいで定期的に開催したい(1年に2回くらい)
  • 開発合宿は楽しい(大事)

今回は有志でしたが、参加してくれたメンバーは総じて似たような意見だった(気がする)ので、次回はオフィシャルなイベントとして開催したいと感じた「開発合宿ってどうなの?合宿」でした。できれば1年に3回くらいはこういったイベントで開発したいですね〜。次はAirbnbを使ってみたいです。

トライした技術についてのエントリは別途上げる予定なので、お楽しみに!

おまけ

f:id:kentana20:20140808154155j:plain

f:id:kentana20:20140808154132j:plain

f:id:kentana20:20140808154145j:plain

f:id:kentana20:20140811141545j:plain