2014-07-02

Node.js で仕事をするための研修を実践してみた

ちょっと前から社外の学校で Node.js の授業の先生をやったり、社内でも Node.js 人材の育成で 79school という研修をやっていて、 @oranie 先生からリクエストを頂いたので内容を紹介してみます。

やっていること

1. JavaScript 基礎 (1 - 3 days)

Code School ( https://www.codeschool.com/ ) で自己学習。jsに触れてもらいます。

Check point

Code School がそのままテストになっているので、完了することができればOK。

2. JavaScript 実践 (1 day)

js を使用して簡単な web アプリ作成。デフォルトで TodoMVC の Todo、電卓、カラーピッカー。他には Flappy Bird 、マインスイーパーの様なゲームを個人のやりたいようにやってもらいます。
ここからは jsHint, editorconfig 等の静的解析ツールやコーディングツールを導入して貰います。

Check point

jsHint, editorconfig の使い方が分かり、自分の作ろうとしていたモノのコア部分が完成していればOK。

3. Node.js 基礎 (3 days)

Code School で自己学習。 Node.js に触れてもらいます。fs を使った非同期処理の基礎、websocket の使い方、 redis を使ったデータストアとの連携などを学びます。

Check point

Code School がそのままテストになっているので、完了することができればOK。

4. Node.js 実践 (5 days)

Node.js を使用して簡単な web アプリ作成。掲示板・socket.io を使ったゲーム等、規模が大きくならない程度で個人の好きなモノを作って貰います。
ここでは mocha + expect.js を使ってロジック部分のテストコードを書きます。

Check point 

自分の作ろうとしていたモノのコア部分が実装でき、 mocha + expect.js を使ったテストを書けるようになっていたらOK (余裕があればカバレッジも見る)

5. 社内フレームワーク実践 (5 days)

社内の express の middleware などをモジュール化したようなフレームワークがあって、それを使ったダミープロジェクト(稼働中プロジェクトの fork )の機能を実装する。
フレームワークのコードリーディングを座学として簡単に行い、ダミープロジェクトのテストコードを残した状態で実装を削除したものを教材とする。受講者はテストコードが通るまで実装を進めて貰います。

Check point

テストを100%通すことが出来、GitHub を用いた pull request レビュー時にフレームワークの機能を使った実装ができていればOK。

79school の狙い

仕事でJavaScriptを使う

JavaScript はゆるく書いても動いてしまう言語です。その分、自分のコードを厳しく管理しなければ仕事で使うコードとしては良い品質を保つことが出来ません。
これは 79school の前任者、自分の元上司のジョナサンが言っててそれを引き継いでいます。

そのために jsHint, editorconfig みたいなツール、mocha + expect.js でのテスト、Github を使った Pull request 中心の開発フローを社内の新規プロジェクトで実践しました。
この研修でも同じフローを JavaScript に慣れるのと一緒に少しずつ導入していきます。

好きなモノを作って行く中で jsHint に怒られながら自分の js を見直す機会を持ち、テストコードを書き、実際のチーム開発フローと同じ方法で OJT と同等のことをする。
全てが終わってから配属され、卒業生は同じ開発フローの中に組み込まれることでスムーズなスタートダッシュを切ることが出来ます。

コードを読む

あとはフレームワークのコードを読むことを凄くオススメというか強要してます。
作ってくれたのは弊社No.1エンジニアの御方なので、良いJavaScriptのデパート状態なんです。
フレームワークの使い方がわからなければ、そのモジュールのテストコードを読むことが出来るようになっているので、そのとおりに動かせば使えます。テストコードがあってよかった!→自分もテストコード書いておこうという好循環にもなると尚良い。

おまけ

Code School はフル英語のサービスです。英語のビデオと教材をみて、英語の問題をコードを書いて答える。
これでちょっとでも英語を読むってことに慣れてもらえれば、沢山利用している npm のREADME を頑張って読もうとも思えるし、pull request のコメント英語も書いてみようって気に少しはなってもらえるんじゃないかなと勝手に思ってますw

1 件のコメント:

クボタ さんのコメント...

社外の学校での Node.js 授業でお世話になりました。

正直なところ、このブログに書かれている「79school の狙い」のために「やっていること」こそ、経験あるプロの指導のもとで練習して正しい作法を脊髄に染み込ませたかったので、79schoolの受講生がすごくうらやましいです。

このブログを参考に、練習させていただきます。勉強になる文章をありがとうございます。