• このエントリーをはてなブックマークに追加

はじめまして。ドワンゴモバイル事業でエンジニアをしております入木田(@irimo1026)と申します。

去る2013年6月15日(土)、ドワンゴ本社の社内リフレッシュルームにて、ドワンゴ社員限定のハッカソンを行いました。
計20名の参加で、皆、思い思い趣味のコードを書く、楽しい会となりました。

当日の様子

7b5b2d502b5defacf0ef5661f935c586e390edae

雰囲気

特に雑談で笑いが起こり、特にまじめにシーンとなり。エンジニアリングに関する高度な話題が飛び交ったりもしました。社内チャットやTwitterで面識がある者同士が、オフ会の如く初顔合わせをしているという、社内でもIDで呼び合う文化のあるドワンゴならではのシーンもありました。

昼食

昼食はBROZERS'のデリバリー。

ブラザーズ BROZERS' | 人形町のハンバーガーレストラン26abf49c0195a19e6cc7b0975a8f0b414b682b3b

ひとつ1000円もする高級ハンバーガーで、人形町名物のひとつ。 ドワンゴ社員御用達です。主催他数名は、近くのコンビニ等で先に買ってしまい、指をくわえながらハンバーガーの香りを嗅いでいました。

LightningTalk(発表会)

19:00から1時間、希望者によるLTを行いました。笑いあり、「お〜!」あり……皆、毛色は違えど「自分が欲しい物」を発表していて興味深く、面白かったです。

成果物

匿名希望の者もおり、全員分ではないですが、成果物をご紹介します。

動画サイトのスクリーンショットをTumblrに / @sifue

動画サイトなどのスクリーンショットを作って、Tumblrに貼付けられるChrome拡張です。 画像をアップロードできないため、data属性にbase64エンコードした文字列を渡しています。 そのためテキストとしても貼れます。

fdbdedc9919d3554028ea458c9c40acf7ec80efb

頒布場所 / サンプル / github

はてなダイアリー予約投稿 / @k_bigwheel

2年前に作った『はてなダイアリー予約投稿サービス』を、 play, herokuで作り直しました。

お薬飲んだ? / @tanapro

老人 is 記憶力悪い という前提で、 今日飲んだ薬の数を記録するiPhoneアプリを作りました。 Cookpadのコンテストお題『年をとった自分が使うサービス』合わせのものです。9eef2b218605a5f23adee2376b5bc9643e62aabc

なんとこのアプリが特別賞を受賞しました!!

WebGLで動画の画像処理 / @binzume

WebGLのフラグメントシェーダで、動画の画像処理をしてみました。

WebLibrary / @deflis

社内図書データベース。 社内チャットで挙がっているお題です。

長文を便利にTumblrにポスト / @sett4

ローカルで書いたMarkdownをTumblrにポストします。 Flickr URLはimgに変換されます。

ズッ友達 / @irimo1026

こちらもCookpad合わせ。 若い頃親しかった人を今のうちに登録しておいて、将来振り返って楽しむサービスです。 サービス / github

みんなのホワイトボード / @kiri1120

ブラウザでホワイトボードを実現。 付箋を貼ると、開いているブラウザ全てにリアルタイムで反映されます。
b967295e20998e7e40bc308031ee8941f5234379

体年齢と脳年齢測定アプリ / @saiten

こちらもCookpad合わせ。 毎日肉体年齢と脳年齢を測り、推定年齢を記録していくアプリです。

bb327fef78e8cd10423ceefda0ef1d154a3ec134

紹介記事 / github

老害チェッカー / @meso

6/15夜、twitterを賑わせた『老害チェッカー』。 こちらもCookpad合わせになります。 サービス / github

寿命.com / @yoshiki6119 & @JAGAxIMO

こちらも、Cookpad合わせです。 健康になる行動を取ったら実績を解除して、寿命が変動していきます。 playとscalaを使いました。
d4424924cb580c5a48a972632d64463a16a125d8

腹がへるMAP / 松尾 壮紘

会社近辺のランチ共有簡易化が目的。 カメラでご飯の写真を撮り、社内にあるアドレスに送信するだけで、ランチMAPに情報が追加されます。 GPS、写真、fromアドレスを利用して実現します。

クレジットカードと銀行口座連携 / 匿名

クレジットカードの残高に応じて、銀行口座の残高を振り替えてくれるもの。

「アニメワン」代替サービス / @masarakki

「アニメワン」が終了してしまうので、代替サービスを作成中。 LTでは、「アニメワン」が情報を取得しているサイトのAPIの罠を数カ所紹介しました。

Evernote記事の「〆切り」管理 / @Bob_Mk2

Evernoteの記事に『〆切』の情報を付与し、残り時間を表示します。 コメントに〆切時刻を記述し、Androidのアプリで見ると、残りの時間が分かるもの。

gistもどき / @erukiti

作りかけだそうです。

社内ハッカソンを行うにあたって注意すべきこと

この記事をお読みの皆さまの会社でハッカソンを開催する際は、以下の二点を気に留めてみてください。

  • 事前の空調申請が必要。この時期、休日のオフィスは間違いなく暑いです。
  • 電源タップも事前に確保しておきましょう。

次回に向けて

今回はおそらく、現在の本社オフィスで行う最後の社内ハッカソンとなりました。 次は歌舞伎座タワーの新社屋で開催したいところです。全員に終了時アンケートを取ったところ、満足度は高めでした。注意することを一番に解決した上、次回は発表会のニコ生配信など、社外の方も間接的にでも参加できるようにしたいです。

ドワンゴでエンジニアの教育を担当しているmesoです。

今回は、新生dwangoエンジニアブログの初回ということで、今年のドワンゴエンジニアの新人教育の内容について、ご紹介します。

ドワンゴでは、入社後に約半月かけて社会人としてのビジネスマナー研修や、チームで課題に取り組むことを学ぶ合宿研修などを行います。その後、エンジニアとして採用された新入社員は、エンジニアとしての研修を受けることになります。

今年の新入社員は46人中45人がエンジニア採用でしたので、45人がエンジニアとしての研修を受けました。研修で用いるPCは各自の希望によりWindows/Macが選べ、キーボードも日本語/USが選べます。

言語研修

4月の後半から5月1日にかけての12日間で、まずは、プログラミング言語の研修を受けてもらいました。昨年まではPHPの研修を行っていたのですが、今年はJavaに変更しました。

ニコニコ動画の既存システムは多くがPHPで書かれているので、例年は即戦力となってもらうべくPHPで研修を行なっていたのですが

1. PHPが書ける人がJavaを修得するコストより、Javaを書ける人がPHPを修得するコストの方が低い
2. PHPにはデザインパターンやオブジェクト指向設計、テストの重要性などを説いた良い本が少ない
3. ドワンゴ社内では新規開発においてScalaを採用する事例が増え、PHP離れが進んできている

などの理由から、Javaを選択しました。即戦力になってもらうことよりもエンジニアとしての底上げを目指した結果です。

研修では、一般的なJavaの言語仕様から、Eclipseを用いた開発、JUnitを使ったテスト、JDBCを使ったDBアクセスまでを学習しました。
特にJUnitを使ったテストについては、テキストとして全員に「JUnit実践入門 ~体系的に学ぶユニットテストの技法」を配布して学習してもらいました。

基礎講習

言語研修までは社外の会場を借りて研修を行なっていたのですが、ここからは社内に場所を移しての研修です。
基礎講習としては、2週間でドワンゴで開発を行なっていく上で必要な、以下の知識を学んでもらいました。

1. ドワンゴエンジニアとしての心構え
   - エンジニアとして一般的に言われている大事なこと
   - ドワンゴエンジニアが特に大事にすべきこと
   - IRC, Confluence/JIRA/FeCru, GitHub Enterpriseなどの社内ツールの使い方

2. Webの基礎知識
   - 「Webを支える技術 -HTTP、URI、HTML、そしてREST」を教科書として全員に配布

3. SCMの使い方
   - Subversionの使い方
   - Gitの使い方
     - GitHub Enterprise特有の機能について
     - git-flowやgithub-flowなどのブランチ戦略

4. Linuxの基礎知識
   - Vagrantを使って、社内のBaseBoxを元に自動でVMを立ち上げる
   - コマンドやパイプ、アクセス権限やシェルスクリプトなど

5. Webアプリ開発の基礎知識
   - JavaによるWeb開発の歴史(ServletやJSP、StrutsやSpringなど)
   - Play Framework 2.1.1 for Javaを用いたWebアプリ開発の実践
   - MVC, DBマイグレーション, テスト
     - 「テストのないコードは成果物ではなく、負債である

6. セキュリティ
   - XSS, SQLインジェクション, CSRFなど
   - 脆弱性を実際に攻撃するのを体験し、原理や防御方法を学ぶ

7. チーム開発の進め方
   - アジャイル開発の基本
   - スクラムとは
     - スクラム開発の流れと役割
   - アジャイル開発のプラクティス
     - ペアプロ, TDD, リファクタリング, CIなどのXPのプラクティスも

チーム開発研修

基礎講習が終わると、今度は新人でチームを組んで課題に取り組んでもらいます。今年の課題は「私たちが考える最高に面白いニコニコ生放送@スマホ」で、スマホ(Android 4.0端末)の標準ブラウザ上で動作するニコニコ生放送を作ってもらいます。
生放送を配信する仕組みやコメントをやり取りする仕組み、TwitterのOAuth認証などの必須要件の他に、スマホでのコメントのしにくさを解消するアイデアや、ありとあらゆる面白い要素を任意で盛り込んでもらいます。また、要件は途中で変化する可能性があるため、拡張性の高いコードを書くことも要求されます。

他にも

1. 1チームは6-7人で、期間は5週間とする。出退勤の時間はチームで決めてよいが、残業は不可。
2. 開発手法はスクラムをベースとし、1スプリントは1週間とする。
3. 毎日スタンディングのデイリースクラムを行い、そこにはメンターとして先輩社員が参加する。また毎週振り返りを行う。
4. テストを必ず書き、JenkinsでCIする。

などのルールがあります。

91b4194675f84e4979d45250da8d7760fd0b1d2c

開発が終わると、プレゼンテーションとデモを行い、投票で選ばれた最も優秀なチームには表彰がなされます。
現在は、まさにこのチーム開発研修を行なっている最中です。

配属前研修

チーム開発研修が終わるころには、実際に配属されるシステムが発表されます。そして受け入れるチームの各リーダーに、配属される前にこれだけは学んでおいて欲しいという課題をもらいますので、それを完了したら配属となります。

想定している課題としては

1. 読書系
   - Scalaのコップ本, Effective Java, Exceptional C++, パーフェクトPHPなど、を理解して欲しい
2. 開発系
   - 要件を満たすWebアプリケーションを作って欲しい

などがあります。

まとめ

研修の内容が今年から大幅に変わり、カリキュラムの立案から準備、実施までを短期間で行わなければならなかった関係上、不慣れなところや準備が不足している部分もあり、研修を受けている皆さんには多少ご不便をお掛けしている面もあるかもしれません。
しかし、今年の変革により、よりドワンゴらしい研修になったのではないかと思っています。

2013年新入社員の今後の活躍に、どうぞご期待ください。
dwango エンジニア ブロマガ

ニコニコ動画を始めとした niconico サービスの開発を行なっているドワンゴのエンジニアが、日々の業務で培った開発ノウハウや裏話などをお届けするブログ(ブロマガ)です。

著者イメージ

ドワンゴエンジニア

ニコニコ動画の開発を行なっているドワンゴを始めとしたドワンゴグループのエンジニア

http://dwango.co.jp/recruit/
メール配信:あり更新頻度:不定期※メール配信はチャンネルの月額会員限定です