運営側として参加しました。
- 第4回Symfony2勉強会 第1部基礎編
- 第4回Symfony2勉強会 第2部実践編
- 第4回Symfony2勉強会 懇親会
第1部基礎編
@uechocoさんによるSymfony2をはじめて触る人向けのワークショップです。
1系と比べて、3倍速いとされているSymfony2の重要なキーワードをおさえつつ、実際に手を動かしてHello, World!的なことをしました。
実際に使われた資料
第2部実践編
より良いアプリケーションをつくるために、様々な視点でのプレゼンテーションがありました。
BDD
@hidenorigotoさんによる、BeHatを使って、シナリオBDDしようというお話。
Symfony2で使えることはもちろん、1系でも使えるBeHat。RubyのCucumberをパクってInspireされたシナリオBDDをおこなうためのツール。
個人的なシナリオBDDへの思い
個人的にはシナリオBDDは、TDDと比べるとハードルが高いと思っている。テストファーストやTDDが十分にできない人がBDDをすると、無駄にテストが多すぎたり、テストすることが目的になってしまう傾向があると感じている。シナリオBDDは使いどころさえ間違えなければ、それなりに効果を発揮するだろうが、僕の周りでは適応できるケースが非常に限られていることが多い。
最初の一歩としては、BDDをいきなりはじめるのではなく、TDDでユニットテストを効果的に書けるようになって欲しい。
テスト駆動開発できるようになるためには?
テストファースト等のアプローチがこく自然にできるようになる方法は、「慣れろ」という表現をでは不足していると考えている。捕捉して伝える。
テスト駆動開発(TDD)はスキルである
TDD事態がプログラマーとしてのスキルである。よって、このスキルを身につけなければ、ごく普通にテストファーストのアプローチをするようになることはできない。
では、そのスキルであるテスト駆動開発(TDD)を身につけるためには何をしたらいいのか?
テストファーストのアプローチを実際に手を動かして、まねて、体験して、自分の中に身につける。体得するのである。
体得するとは?
たとえ話として、野球の送りバントをあげよう。みんなは、送りバントできるだろうか?
ちなみに、僕は野球をあまりやったことがないから、まず、送りバントできない。だが、送りバントが何であるかは知っている。
つまり、ある程度の知識がある状態である。送りバントの時にバットのどの部分にボールを当てるべきかなど詳しいことは知らない。
それで、ここから送りバントを身につけようとすると…。
- バットのどこにボールをあて、構えはどうするべきかなど詳細な知識を学習する
- 実際に体を動かして、バットにボールを当ててみる。同時に指導者に指導してもらえると、なお効果的だろう。
スキルを身につけるとは、こうやって体を動かして知識を知っている状態から理解して、使える状態にすること。
テスト駆動開発(TDD)を体得しようとするならば?
まず、TDDとはなんなのか?やるメリットとデメリットは理解しておこう。体系的に学べるのがこの一冊だ。
ケント ベック¥ 3,150
|
習得するメリットがわからないものに3千円もする書籍を買うのは、ちょっとな。と考える人もいるだろう。
そんな人たちは、先人達の資料をインターネットで無料で入手しよう。
日本のTDDで有名な和田さんのプレゼン資料
技術評論社と協力して和田さんがおこなったテスト駆動開発講座のニコニコ動画
写経せよ
個人的にはテスト駆動開発入門のソースコードを最初から丸写しして、手を動かすことを一番推奨する。
ケント ベック¥ 3,150
|
それが、体得するための近道。
TDD Boot Campとかに出るのもオススメ
TDD Boot Campなどのイベントに参加して、他のエンジニアとペアになって後には引けない状況をつくって、TDDを体験するのもとても勉強になるはず。一人で、本を写経していくだけに挫折しそうな人はこれが良い。
まとめ
PHP使いながら、TDDできるようになりましょう。体得しましょう。それはこれからのエンジニアの必須スキルです。
Symfony2のフォームコンポーネント
@fivestrさんによるSymfony2のフォームコンポーネント。1系で鬼門なフォームだが、Symfony2になって、どうなったのか?というお話。コンポーネントという形でまとめられているので、他からもこのコンポーネントを利用することが可能になっているはず。
Silex
@brtriverさんのマイクロフレームワークのお話。
RubyのSinatraをパクってInspireされたマイクロフレームワーク。
Symfony2のコンポーネントを利用しているので、Silexをつかってれば、Symfony2がつかえるようになるそな。
本日のメイン「Symfony2でより良いソフトウェアを作るために」
関西からお越し頂いた@itemanさんによるお話。
ドメイン駆動設計などのお話を関西でされていて、今回お越し頂きました。
という発言をSymfony2勉強会でいただいて、ほんと、そのとおりとか思う僕がいます。
仕事以外ではRubyやRailsを使うようにしていて、とても思想が違ったりツールなどの違いから仕事(PHP)に反映できるような内容に衝撃を受けるようなことが多々あります。
本件のお話ではそういう内容ではありませんが、なぜSymfony2を使うのか?使わない選択肢も考慮しなければいけない。それはなぜなのか?というDDDの視点で具体的にお話がありました。「なるほどー。」の一言につきます。
「アジャイルソフトウェア開発の奥義」などからも引用をして説明していただき、この書籍に個人的にフラグ立ちました。
ロバート・C・マーチン¥ 6,090
|
そして、極めつけがコレ。
あー。もうDDDの視点も身につけるしかないなこれ。
というわけで、こっちの書籍にもフラグ立ち。
エリック・エヴァンス¥ 5,460
|
懇親会でもお話しさせていただき、違う視点での刺激を受けたのは、大きな収穫でした。ありがとうございます。
LT
LTが4件ありました。最後のは無茶ぶりとな(w
面倒なので、嫌煙しがちなモックですが、使うべき所では使った方が良い。はい。使いましょう。
大笑いした。
DDDに興味を持つ良い機会だった
やっぱり、違う視点からの刺激を受けるってのは、自分の視野を広げる上ですごく重要。
僕もTDDやテストのイベントを通して、他の人の視野を広げれるようになろう。
余談
Symfonyのサンフランシスコのイベント?でプレゼン資料の2枚目にイケメンの写真がでてきて、話題になったことから、本イベントでは2枚目のページに自分のイケメン写真を使わねばならないイベントになっておりました(w
facebookで写真公開
当日の様子を撮影してfacebookで公開しています。せっかくですから僕とも友達になってくださいね。
次回は、僕の写真も誰か撮ってね…。