Coding dojoガイドライン - hamamatsu-rb/hamamatsu-rb.github.com GitHub Wiki
Coding dojoとは
皆で1つの課題をプログラミングし、書いたコードをお互いにレビューします。 ペアプログラミング、TDD/BDD、コードレビューなどを体験できます。 ( http://www.atmarkit.co.jp/fcoding/rails/articles/passionate/03/passionate03a.html )
- ランダムでペアを作る
- テストを書き、テストが通るようにコーディングする
- 2を繰り返して課題を完成させる
- 各ペア間でコードを見せ合い、レビューを行う。
- 次回のお題を決める
- PCが持ち込めなかった人は持ってる人とペアになりましょう
- プロジェクタに繋げるとコードレビューが楽です
- 次のお題の持ち込みを歓迎します。できれば数十分でできるようなサイズが良いです。
お題
課題リストにストック中
ペアプログラミング
自由にルールを作り、カスタマイズしながら進めればよいのですが(ルールは明示化した方が良いです)、その基本となるルールがない場合の叩き台にどうぞ(suchi)
- ドライバー: キーボードを打っている人
- ナビゲーター: 横でレビューしている人
ペアプログラミング10箇条
古いメモからなので出典がわかりませんでした→オブラブ(旧オブジェクト倶楽部)でした。
- ドライバー、ナビゲーターは5-10分毎で適当に交代しよう。ドライバーは引き際が肝心。ナビゲーターの助言が多くなったら交代。
- やることを紙に項目として書き出そう。終わった項目を横線で消そう。
- コードより先にテストを書こう。テストをパスさせるための最もシンプルな実装をしよう。
- ナビゲーターは、ツッコミの要領で助言しよう。
- もっとシンプルな方法はないか
- コードは意図を表現しているか
- クラスやメソッド、変数の名前は意図を表しているか。
- タイプミスはないか。括弧の数は合っているか。
- テストは先に書いたか。
- 次のテストはどう書こうか。テストし忘れていることはないか。
- 全体から俯瞰してバランスはとれているか。ヘンな方向に突き進んでいないか。
- コーディング標準にあっているか。
- ナビゲーターは、じれったくなったら「わたしにやらせて!」と言おう。
- ナビゲーターは、理解できないコードを見たらドライバーに聞こう。「なんでそうなの?」
- ドライバーは、ナビゲーターの助言にいつでも耳を貸そう。そしてその助言に返事をしよう。
- ドライバーは、行き詰まったら助けを求めよう。このメソッド、ちょっとお願いできないかな?
- 腹が減ってはプログラミングはできぬ。一緒にお菓子を食べよう。
- 楽しくやろう。Enjoy Pair Programming!
TIPS
上に独自ルールを加えるとよいでしょう。たとえば「ナビゲータがコメント(とくに間違いの指摘)するときは5秒待ってから」(ドライバーが直そうとしているときに横から指摘されるとストレスになる(今やろうと思っていたのに))、「画面を指で触らない」(そういうメンバがいた)、「モニタに付箋を貼らない」(視線にモニタ以外の文字が入ることが気になるメンバがいた)などがあります。
エディタやキーバインドをカスタマイズしていると作業効率が落ちるので、事前にどちらのマシンを使うか、どのエディタを使うか、もしくはファイルを共有して個々のマシンを使う、など進め方を相談してから始めるのがお奨めです。
TDD(Test Driven Development)
テストを書く→エラーになる(赤)→コードを書く→テストが通る(緑)→リファクタリングする→テストが通る(緑)→新しい機能のためのテストを書く→エラーになる(赤)→コードを書く→テストが通る(緑)→ …… と、新しいコードの追加をテストから始める(駆動する)開発方法です。
@t_wada さんの「RSpecの入門とその一歩先へ」を写経してみるのが良いとおもいます。
Coding Dojoに来る前にやっておくこと
-
環境
- ruby(1.9推奨)を使えるようにしておく
- rspecが使えるようにしておく
- gitが使えるようにしておく
- githubのhamamatsu.rbに参加する(@suchi or @mackato or @Cherenkov にユーザ名を連絡してください)
- githubのcoding dojoを取得したりブランチしておく
- work/test.txtを適当に変更してpushやpullリクエストを送る練習をしておいてください。
-
知っているとスムーズに進めること
-
gitの基本
-
git init
-
git clone
-
git branch
-
git checkout
-
git add
-
git commit
-
git log
-
git push
-
git pull
-
git remote
-
-
簡単なrspecの使い方
- 前述のt_wadaさんの「RSpecの入門とその一歩先へ」 を写経してみるのがオススメ
-
RSpecのマッチャ-一覧
綺麗にまとまっていたので載せておきます。[「RSpecの標準matchers(マッチャー)一覧」] (http://morizyun.github.io/blog/rspec-builtin-matcher-rails/)