TDDBC Tokyo 1.7 for PHP を開催しました

f:id:shishi4htn:20150601234212j:plain

TDDBC Tokyo 1.7 for PHP #tddbc : ATND
TDDBC Tokyo 1.7 for PHP #tddbc 女性枠 : ATND
当日の写真をFacebookにアップロードしてあります。TDDBC Tokyo 1.7
一般公開ではないようにしてあります。タグ付け、コメント、是非お願いします!G+等、他のプラットフォームの方が良いという方はお気軽にご連絡ください!

facebook Shigenobu Nishikawa

2011年8月21日、TDDBC Tokyo 1.7 for PHP を開催しました。
今回、初めての PHP 限定での TDDBC 開催となりました。定員の 2 倍以上の方々にお申し込み頂き、改めて TDD 熱の高まりと TDDBC が今求められているのだなと実感しました。 初めての勉強会主催であり、多くの方々に助けて頂いての開催、運営となりました。

  • TDDBC の創始者である 和田卓人 @t_wada さん
  • 開催前から多くの運営アドバイスをいただき、当日でも多くの助け船を出して頂いた @ShiroKappa さん
  • 今回のかっこいい参加者用名刺、TDDBC 1.7 シールを作成して頂いた @NEKOGET さん
  • お題を一緒に考えてくれた @_nishigori さん
  • 会場を提供していただいた @n416 さん、株式会社タイレルシステムズ
  • UST職人として今回も高品質な放送をしていただいた @brtriver さん
  • タイムテーブルの適時更新など、細かくサポート頂いた @gilbite さん

達、スタッフの方々を始め、当日の参加者の方々、大変ありがとうございました。 みなさんのおかげで大変良い勉強会になりました。

基調講演

TDDBCではまず、和田さんの TDD とは、という基調講演から始まります。 やはり5つのステップ、黄金の回転から、リファクタリングの実施こそがポイントなのだと再確認しました。
和田さんが何度も今日何か一つだけ持って帰ってもらうとしたら、この黄金の回転の図だと仰っていました。 参加された皆さんはバッチリ覚えてらっしゃることと思います。
プロジェクタ不調でご迷惑をおかけしてしまいました。

f:id:shishi4htn:20150601234245j:plain

(画像は福岡での講演のもの)

お昼

TDDBC 1.5 にならい、お弁当を注文しておきました。後でまとめますが、KPT でも好評を頂いていたので、この試みは定番になってくれればなと思っています。反省点としてはヘルシーなお弁当がなかったことです…

LT

4 人の方に LT していただきました。

  • @gilbite 「Stagehand_TestRunner やってみた」
    • Stagehand_TestRunner という、PHPの汎用テスティングフレームワークランナーを使用して、というお話でした。Stagehand_TestRunner は私も少し関わらせてもらったこともあって、是非色んな人に使ってもらいたいと思っています。
  • @madapaja 「Gitのおさらい」
  • @_nishigori 「PHPerの為のVim TDD環境入門」
    • Vimにこだわる元同僚@_nishigoriさんによる、Vim で TDD 用環境はこう出来る!という内容のお話でした。Vim さばきはなかなかのもので、参考にしようという方もおられました。
  • @ShiroKappa 「奇跡を軌跡に変える ~継続可能な開発へTDDから~」
    • LTのトリは、私が多方面でお世話になっている@ShiroKappaさんによるお話でした。LTの時間帯は元々終わりの方にとっていたものを、お昼後に移動させてもらったため、疲れている状態でも聞きやすい、親しみやすい内容のお話をされました。本勉強会で一番ウケた発表であったと思います。
      奇跡から軌跡へ
      View more presentations from Kiichi Kajiura

デモ

LT の後、私が TDD チートシートを用いて今回特に抑えてやってほしいところ、

  • 左側和田さんの講演内容、5つのステップ、1人ずつ仕留める、黄金の回転
  • 独立したテスト
  • テストファースト
  • アサートファースト
  • 仮実装
  • 三角測量
  • 明白実装

についての説明の後、FizzBuzz を例題に和田さんとペアプロ TDD 実演を行いました。和田さんとペアプロできる機会を主催者特権を乱用して作ってしまいした。
FizzBuzz とはいえ、すごいドキドキしながらやっていました。typo やぶっとんだ思考がたびたび出ましたが、つまり緊張していたのです。
マシントラブルで再起動せざるをえなかったときは焦りました…

TDD・ペアプロ実習

デモのあと、すぐにお題を発表し、ペアを組んで TDD 演習に入ってもらいました。
お題は2題用意しました。

お題 1 Wiki Engine
お題 2 Amazon的カート

お題 1 は札幌の TDDBC 0.5 のものからアイデアを拝借しました。TDD チートシートとともに @shuji_w6eには感謝申し上げます。難易度としては パースに使う正規表現だけ超えれば、あとは色々な例外的なパターンとかを考えられる、面白い問題だと思います。

お題 2 はなかなか難易度はある方だと思います。和田さんも色々考える範囲があり、面白い問題だと評して頂きました。自分の考えていた範囲を超えて色々なパターンを試される方がいて、やはり演習が一番楽しかったです。今日など、後日挑戦されている方もいて、なかなかやりがいのある問題になったのではと思います。

レビュー

TDDBC の醍醐味その2、レビューは1組15分とり、一通り意図を説明してもらう時間と 2,3 の質疑応答を出来る時間をとりました。
皆で真剣に同じ問題を考え、違う考え方を聞ける、なんて機会は中々ないので、実習でうまくいかなくてモヤモヤしていたものがレビューで他ペアの考え方を聞いて一気に吸収できたりしたのではないでしょうか。
レビューをしたことがない、という方もいらっしゃいました。この多人数でなく、1対1でもレビューするきっかけになってくださればと思います。

基調講演・応用編

ペアプロ + レビュー を 2 セット行った後、TDDBC 1.6 からのスタイルであるという実習が終わった後での 基調講演・応用編を聞かせて頂きました。
応用編ではより実際にシフトされた内容で、どのように勉強するかという内容等が含まれたものでした。すっかりおなじみとも言える写経 (本に登場するコードを自分でそのまま書き写すことにより学習する方法) の仕方もここで登場しました。
https://twitter.com/#!/t_wada/status/9000231741

勉強して現実に適用していきましょうという本の中には、私がバイブルとしていつも上げる レガシーコード改善ガイド も含まれておりました。みなさん是非この本をもとに、各々の職場、手の届く範囲のレガシーコードを葬り去って頂きたいと思います。
その他に上げられた本は記事末尾にまとめて掲載します。 TDD を実際に演習し終えた後と言うことで、より現実味を帯びて講演を聴けたのではないかと思います。

ふりかえり

ふりかえりでは、みなさんに KPT を上げて頂きました。是非次の機会、もしくは次にTDDBCや勉強会を開いてくれるどなたかの参考にして頂きたく思います。 TRY の部分も撮影したつもりだったんですが、撮れていませんでした…
KPT を書き起こしました。できる限り文字は原文のままを保っています。参加者の皆さんのふりかえり、これからの勉強会の開催に是非お役立てください。
レガシーコード改善勉強会、開催の際には是非参加したいです。
ちなみに私は迷惑をかけられたなど思っていませんのでご安心ください! むしろなんのことだか分かりません…

KEEP

  • ことなる文化の人とコーディングできた。
  • 普段つかわない環境やメソッドにさわる事ができた。
  • 初めてテストを書いた!面白かった!
  • どんなテストを行うか認識して書けるのでどんなことを意識してるか把握できる
  • 課題2の図をかいてみたらわかりやすくなった。
  • 初めてペアプロを体験した。
  • Macでコーディング出来た。
  • ペアプロにみな熱中
  • ペアプロでのコミ二ケーションを大切に。
  • ペアプロは決定事項の責任分解にもなるので精神的に楽
  • ネットワーク快適だった
  • TDDBCを次回も参加
  • 女子枠
  • 和田さんの過去の講演を予めチェックしたことで、今回、知識がより深めることができた。
  • 黄金の回転を意識する
  • 規模感。このぐらいがちょうどいい気がする
  • 言語しばりでもいろいろな人の書きかたが見れてよかった
  • keepともいいがたいですが、ひとつの言語に特化したTDDBCもよいと思った
  • めし
  • お弁当
  • おべんとう
  • おかしおいしかった
  • シール!!

PROBLEM

  • ペアプロでレベルが違いすぎて教えてもらうばかりになってしまった。次回はせめて予習してから来たい
  • ペアプロのペアわけ
  • ペアプロのナビゲートが上手くできなかった (意見がだせなく、パートナーの方にリードしてもらった)
  • スキル差
  • 相手の方と意思疎通するのが難しいが、後半は早くなるのを実感出来た
  • お弁当にヘルシーな選択肢がない
  • コード規約があるともう少しサクサクできたかも。
  • ペアプロの時、かんきょうが人それぞれで大変
  • 環境をもう少しこまかく定義もしたほうがよかった
  • 馴染むのに時間がかかってしまった。
  • ペアプロ/TDD の時間が足りない
  • もっと達成できるお題が良かったかも
  • 課題のむずかしさ
  • ポジションペーパーをうまく活かしきれていない気がする
  • そもそもPHPをもっと書けるように (個人的に)
  • 実装方針をもっとうまく伝えられるように
  • Toolを使いこなせていない
  • 実際にペアプロできる工程数をとれるか疑問。組み体も考慮する必要がある。
  • 主催者にご迷惑をかけてしまった。

TRY

  • お題を最後までやりきる
  • 参加者に予め指定の(PHPUnit の)使い方を覚えてもらって参加してもらうことを強制する(その方が早くすすめられる)
  • テスト駆動開発入門写経
  • DB をからめたテスト
  • レガシーコードからテストを後付けで書いていくワークショップを開きたい。
  • ショッピングカートの問題をじっくり時間とってやりたい
  • 2日間かけてもっとキッチリ!
  • 今回初心者が多かったので、開発環境構築説明あるいはツールの紹介
  • kent本を写経する
  • 実務でもTDDを取り入れる(少しずつでも…)
  • 自動化。保存するだけでTest実行
  • TDDを実践していく。まず写経から
  • まず自己紹介する
  • データベースリファクタリング
  • レガシーコード改善もやりたい!
  • PHP以外の言語のTDDも調べたい。
  • きちんと道具を選んで使いこなしたい
  • VimでのTDD
  • 色んな本をたくさん読む

f:id:shishi4htn:20150601234321j:plain

f:id:shishi4htn:20150601234401j:plain

懇親会


ふりかえり、後片付けのあとには懇親会を行いました。
とても良い懇親会会場を見つけていただき、@416 さんと役員の方には会場を提供に協力頂いたこととともに感謝しきりです。
懇親会でしか出来ない、しない話もたくさんあるわけで、ここにはとても書けませんが、みなとても充実し、楽しかったと言って頂けて、開催者冥利に尽きました。とても幸せです。 力を振り絞った後の宴は格別です。みなさん最後まで楽しい時間を過ごして頂けたと思います。

終わりに

初の勉強会主催で TDDBC という名の知られた勉強会名を冠することになり、多くの方に協力を頂きました。冒頭でも述べさせて頂きましたが、改めて感謝申し上げます。みなさんのご協力なくしては、開催前も、開催中も、もっとひどいことになっていたことは想像に難くありません。
しかし、私の至らなさから、もっと改善できる点は KPT にもあげられていることと思いますが、是非ご指摘頂き、次回の糧にしたいと思っておりますので、よろしくお願いいたします。

初の PHP 単独 TDDBC を終え、次に予定されている TDDBC もゲーム業界向けという、今までにないジャンルとなっています。これらから分かるように、和田さんらが種をまいてこられたことにより、TDDBC は既に一つの大きな波になりつつあります。これからも途切れることなく、TDD を広めていきたいと思います!

今回のTDDBCでブログを書いて頂いた方々