オブラブ2011夏イベントに登壇させていただきます

7/4 (月)に開催されるオブラブの 2011 夏イベントに登壇させていただきます。オブラブイベントへの登壇は久しぶりです。今回のオブラブは「この 10 年で変わったもの、変わらなかったもの」がテーマということで、私の講演も 10 年というキーワードを意識してみました。

業界の10年、私の10年


ヤング側にカウントされてはおりますが、私もこの仕事を始めて10年が経ちました。俗説にてプログラマの定年とされている35歳も近づいてきました。10年経ってもまだ残っているもの、10年の間に廃れたもの、逆に10年の間に出てきたもの。上手くいっているものの共通項は何でしょうか? 失われたものはあるでしょうか。人、技術、考え方。大きな変化やゆっくりとした変化。出会いと別れ。私が見てきたもの、考えたことを喋ってみようと思います。

セッション内容


オブラブ、そして永和の方々にはたくさんの思い出があります。今回またオブラブから登壇依頼をいただけたたことは光栄で、私からオブラブへの恩返しをしたいと思います。また今回のイベントは他の登壇者の方々も多士済々で、楽しみでありつつも緊張します。


申し込みはオブラブイベントのサイトから行えますので、皆様ぜひ参加をご検討ください!
http://www.objectclub.jp/event/2011summer/

TDD Boot Camp 札幌 2.0 に登壇させていただきました

6/4,5 の2日間開催された「TDD Boot Camp 札幌 2.0」に登壇させていただきました。札幌で二回目の TDDBC 開催です。参加くださった皆様、そして主催してくださった id:shuji_w6e さん、ありがとうございました。二回目も、素晴らしいイベントになったと思います。


当日の #tddbc タグのまとめはこちらです
http://togetter.com/li/144153


今回の TDDBC は2日間二部構成のコースをややアレンジして行われました

一日目午前その1
@shuji_w6e さんによる導入講演
一日目午前その2
TDDBC サポートスタッフの方々による自己紹介 LT
一日目午前その3
TDD についての講演
一日目午前その4
肉さん、オム子さんによるペアプロについてのデモ
一日目午後その1
各言語に分かれての TDD or レガシーコード改善実習(コーディング道場乱取り版)
一日目午後その2
各チームによる発表とふりかえり
一日目夜
懇親会
二日目午前
まったりと自習モード
二日目午後
ソフトウェア開発の三本柱(バージョン管理、テスト、自動化)実習


前回一月に私が札幌に来て TDDBC 札幌に登壇させていただいてから、そんなに日を空けずに二回目の TDDBC 開催になりました。一都市で二回目の開催を行うのは札幌が最初になりましたね。実は TDDBC 札幌 2.0 の前に "1.5" が開催されていて、札幌では都合四回目の TDDBC になるのだそうです。札幌のコミュニティに TDD の文化が根付きつつあるということを感じ、嬉しかったです。


今回は前回より人数を増やし、賑やかに行われました。各言語毎にサポートしてくださるスタッフも加わり、非常に頼もしかったです。また今回は学生さんも含めた若い参加者の方も多く、道外からの参加者もいました。この二点は非常に嬉しいものでした。


TDDBC の報告のたびにこの blog に書いていて恐縮ですが、 TDDBC は開発の楽しさ、ペアプロ/TDD/コードレビューの楽しさ、そしてレガシーコードとの戦い方を伝え広めていけるようなイベントにしたいと考えています。TDDBC は「やりたい」と手をあげれば始められるイベントです。このようなイベントをこれからも続けていきたいと考えています。

今後の TDDBC の予定

現時点で、以下の開催が決定、もしくは企画されています

  • 仙台 (デブサミ東北の1トラックとして 7/2 開催。募集はまだです)
  • 東京1.5 (7/9 開催)
  • 横浜 (11/5 開催予定)
  • 大阪 (9月頃に企画中)
  • 新潟 (企画中)
  • 岡山 (企画中)
  • 四国 (企画中)

TDDBC の開催、運営に関しては今回の主催者の id:shuji_w6e さんが詳しいエントリを書いてくださっています。TDDBC の開催に興味のある方は是非ご一読ください。

以下 140 字形式で個人の感想を記してゆきます(随時書き足します)

  • 4sq でいつもどおり恵庭にチェックインしたら mayor になってしまった
  • 東北大の学生さんが仙台から参加してくださったのは嬉しかった
  • 北大の学生さんも含め、 Twitter 上で知り合った(と思われる)若い参加者の方々が賑やかにペアプロしている姿を見るのはとても楽しい
  • ついに男子校状態を脱却した! (北陸以来)
  • @shuji_w6e さんのプレゼンは綺麗でやや嫉妬を覚える
  • @giginet さん(TDDBC 歴代最年少サポートスタッフ)の LT (やる夫 & 阿部さん)に美味しいところを持っていかれた感
  • コードを書きながらいろいろ説明が必要だったため、やはり TDD やレガシーコード改善のデモは私自身が行うべきだったかなと思った
  • レガシーコード改善の演習はバランスが難しく、毎回悩ましい
  • 毎回とても盛り上がるため、レビューの時間をきちんと取っておくことが大事。
  • C++ チームの方の「テストがあると安心して攻められる」という感想が嬉しかった
  • @ayumin さんがコードを書くところを見るのは初めてだったが、見事 Ruby チームを引っ張っていた。コードが書けるスーツかっこいい
  • チームは人数順に Java, Python, Smalltalk, Ruby, C++ だったと思う
  • Smalltalk は6人。再び無双状態に。
  • "「目に映る全てのものはメッセージ」は Smalltalk の本質を捕らえている" by @sumim さん
  • message = selector + argument (で合っていますか? → 合っているとのこと)
  • protocol はメソッドのカテゴリのようなものだが、期待される役割としては Java における interface のように理解する方が良い
  • 「仮実装はテストのテスト」と sumim さんに伝えることができた
  • Python 組も多く、同じく無双状態になった
  • 「若者の emacs 離れ」を食い止めるべくベテラン勢がんばる
  • 二日目の SCM は Mercurial が最大派閥に(Java 組 & Python 組)
  • Java 組は Bitbucket + Jenkins を使っていた
  • 二日目の ruby 組のトリオプログラミング(あえて open class を使いまくった)は私自身も勉強になり面白かった
  • 二日目の ruby 組は emacs + git + rspec + guard-rspec でやりました
  • 二つのファイル(本のリストと参加者のリスト)から抽選で当選者を当てるワンライナーruby で書くとこうかしたという話をちょっとした IO.readlines("books.txt").map(&:chomp).zip(IO.readlines("attendees.txt").shuffle.map(&:chomp)) どうかなぁ
  • Python 組が Jython を使って Java のレガシーコード(テストの無いコード)に対する仕様化テスト(Characterization Test)を書いていました。テストの形で既存の動きを写し取れれば、 Python による動く仕様書ができあがるわけで、良いアイデアだと思いました
  • しかし Jython の起動速度が遅く、 TDD のリズムを妨げかねないという意見が出ました。確かに遅いです。で、起動速度を GroovyServ で改善できたりしないだろうかと Twitter で @nobeans さんに無茶ぶりしたらエントリを書いてくださいました。やはり劇的に起動速度が速くなったようです。流石 GroovyServ かっこいい!
  • Python 組はかなり仲良くなり次の日に北大祭に行ったりカラオケに行ったりしたみたいで、なによりです。
  • ruby 組は一日目から autotest や guard-rspec を使っていて、 Continuous Testing の考え方が浸透してきていることを感じました
  • TDDで大事なのはリファクタリングであると強調してみた
  • 今回レビューは最後の発表のみだったが、中休みでレビューを入れるべきだっただろうか。どちらがいいだろう
  • 前回ヒートテックで灼熱地獄を経験したので今回は T シャツで講演したら「軽装ですね」「札幌なめんな」という風味のコメントをいただきました。ちなみに一日目は上からジャケットを羽織っただけで大丈夫でした。二日目は途中でヒートテックを着ました。
  • ディスプレイが豊富にあったのが素晴らしかったです。事前の周知とスタッフワークのおかげだと思います。
  • emacs-lisp でのペアプロが実現できなかったのが少し残念
  • 今回は emacs 使いが意外と多かったような気がします(目立っていただけかも)
  • SCM に関しては、 Java,PythonMercurial, Ruby は Git とはっきり分かれていた印象
  • 一日目の @ayumin さん、二日目の Java チームがやっていたように、github や bitbucket に push したら Twitter に post するようにすると盛り上がって良いですね
  • 今回も修了証としてグリーンバンドを配りました
  • 手持ちのグリーンバンドが全部なくなってしまったので、また発注しなければ…

TDD Boot Camp 福岡に登壇させていただきました

TDDBC 福岡

五回目の TDD Boot Camp (TDDBC) は九州に上陸し、福岡で開催させていただきました。3/19, 3/20 の2日間開催された「TDD Boot Camp 福岡」に登壇させていただき、 TDD とペアプロに関する体験型イベントを行いました。参加くださった皆様、そして企画を立ち上げ主催した id:pocketberserker さん、おつかれさまです。そしてありがとうございました。


当日の Twitterハッシュタグ #tddbc のつぶやきまとめはこちらです - TDD Boot Camp福岡 - Togetter


今回の TDDBC は構成を変える試みをしました。具体的には、これまで TDDBC 2日間二部構成のコースでは二日目がレガシーコード改善でしたが、今回は実験的にバージョン管理システムの学習へと差し替えました。これは TDDBC に関する Twitter や ML 上での議論を経て決定した構成で、私としても、これまで私への一極集中になってしまっていた TDDBC の構成にバリエーションをもたらし、イベントとしてより多様性をもたらすための試みでもあります。結果的に、今回の TDDBC 福岡は以下のようなスケジュールになりました。

一日目午前
TDD についての講演
一日目午後その1
TDD & ペアプロについてのデモ (with @tan_go238 さん)
一日目午後その2
(ペアプロ+コードレビュー)×2
一日目夜
懇親会
一日目深夜
自重しないハッカソン
二日目午前その1
Git についての講演 (by @bleis さん)
二日目午前その2
OMake & 自動テストについての講演 (by @akineko さん)
二日目午後
Git を活用しての TDD & ペアプロ演習


(更新) 当日の私の講演資料はこちらです TDDBC Fukuoka Day1


今回の TDDBC の主催者 @pocketberserker さんは、佐賀大学の学生さんです。 TDDBC 名古屋に勉強会として佐賀から初めて参加し(初めてが TDDBC というのも非常に嬉しいことです)、帰ってすぐに「九州でも開催したい」ということを口にされていました。スポンサーとして @pocketberserker さんの教授であるみかままさん(テストに関する研究や C++, CVS の本を書かれたことで有名なみかままさんです)にご協力いただき、学生でありながら日本各地から参加者が集まる TDDBC を九州で開催するという大きな仕事を成し遂げていただきました。開催までの準備など、いろいろと大変な事も多かったと思いますし、学ぶことや発見も多かったのではないかと思います。今後の研究や人生にも、ぜひこの経験を生かしていただければと思います。


主催者の @pocketberserker さんだけでなく、講師陣も若くなり、私ひとりではなくなりました。今回は私の他に @bleis さん、 @akineko さんにも講師として登壇いただき、一日目の課題とインフラ作成、および二日目の講演を行っていただきました。これまで TDDBC の課題準備はある意味私ひとりの孤独な作業でしたが、今回は @bleis さんに課題作成の大筋をお任せし、私はこれまでの経験で課題作成に対してアドバイスするという立場をとりました。 @akineko さんは深夜バスで福岡まで駆けつけ、本番の日の朝早くから開催準備に合流してくださいました。


@bleis さんと @akineko さん に講師として主体的に TDDBC に関わっていただけたことは、私にとっても大きな意味を持っています。今回の @bleis さん、 @akineko さんに代表される、これまでの TDDBC に参加された若くそして技術を持っているプログラマに今度は講師として登壇いただくことは、イベントとしての知識の循環と技術鮮度の維持をもたらし、結果として TDDBC の継続可能性(sustainability)を上げるための大事な試みであると言えます。 TDD やペアプロの楽しさを体験しつつ現場で役に立つ技術を身につけられるイベントにしたいという、 TDDBC を立ち上げたときからの思い、理念をより多くの人に届けるためには、 TDDBC は私一人に依存してはならないと考えます。その意味で、今回の試みは私にとって非常に意義深いものですし、いざ本番を終えてみて感じることは、二人の若き技術者に TDDBC の半分を任せたことは成功であったということです。もちろん私も含めていまだ課題点がありますので、今後改善していきたいと考えています。


最後に、この blog に何度も書いていることではありますが、懲りずに繰り返します。 TDDBC は開発の楽しさ、ペアプロ/TDD/コードレビューの楽しさ、そしてレガシーコード改善やバージョン管理システムの使いこなしなど、実践的なプログラミングの手法を伝え広めていけるようなイベントです。そしていまや TDDBC は私だけでなく、複数の講師を伴う構成で開催できるようなところまで育ちました。 TDDBC は「やりたい」と手をあげれば始められるイベントです。このようなイベントをこれからも各地で続けることができたらいいなと思っています。

以下 140 字形式で個人の感想を記してゆきます(ちょくちょく足します)
  • 東北を襲った震災の影響もあり、直前まで開催するべきかどうかを開催者の @pocketberserker さんと悩みました。しかしこんなときだからこそ、開催しようということにしました
  • 講師の一人として参加を予定していた @kaorun55 さんは、家族を守るため東京に残ることを選択されました。大事なことだと思います。 @kaorun55 さんには、ぜひ別の TDDBC でお手伝いをお願いしたいと考えています
  • 交通機関の不安もあって前日入りし、 TDDBC 0日目として @cz75hiro さんの案内で少しの観光と美味しいもつ鍋、そして先に会場入りして深夜にかけて準備を行いました
  • 0日目に @bleis さんが食べていたコーンポタージュ味のアイスクリームがとても…コーンポタージュでした
  • 0日目の夜に食べた「やま中」のモツ鍋は、これまでの人生で一番美味いモツ鍋でした。博多に行ったら是非また食べたいです。
  • TDD & ペアプロ演習に参加する際の希望言語として1位が Java なのはまあ予想どおりなのですが、2位は .NETOCaml が同数で並んでいて、いかにも TDDBC だと思いました(主に名古屋クラスタの影響と考えられます)
  • 東京からも複数の人に参加いただきました。遠くから、かついろいろ不安があるなかで参加いただき、とても嬉しかったです
  • t_wada 賞は『プログラマが知るべき97のこと』『UNIX という考え方』『レガシーコード改善ガイド』にしました。それぞれ @genta0406 さん、 @irof さん、 @tan_go238 さんに贈呈しました
  • @genta0406 さんの受賞理由は、 JavaScript での参加で @cubeon さんといろいろ試行錯誤していたことと、じゃんけんに強かったことです
  • @tan_go238 さん、 @irof さんペアの受賞理由は、設計判断のタイミングが良かったことと、コードが Java 的に綺麗だったことです
  • @mzp さんや @suer さんと @ukstudio が意気投合していたのが良かった
  • というか 86 世代の勢いが輝いて見える
  • 会場内に Trac のサーバを立ててチケットで課題を出すアイデアはなかなか良かった
  • TDDBC 会場での、ネットワークまわりのインフラ確立は常に悩ましい
  • 一日目夜のハッカソンも盛り上がりました
  • AsakusaSatellite がなかなか面白そう
  • 本編の休み時間に LT を入れるアイデアは良かったので、今後も採用したい
  • TDDBC 大阪も開催に向けて動き出す予感
  • 名古屋は静的型付け関数型言語の国らしい
  • 開催を影で支えてくれたみかままには、ただひたすら感謝です
  • 名古屋 Ruby 会議 01 のときに私の手元の gitk を見せたのが、 @bleis さんが Git を使うきっかけの一つになっているらしくて驚いた
  • その @bleis さんは今では遥か先を走っていて、俺の方が教わっている。若者にヒントを与えるとあっさりとブチ抜かれて、後にいろいろと教わることができる。とても嬉しい瞬間でした
  • 二日目に時間が空いたので、現実と戦うための三冊『レガシーコード改善ガイド』『データベースリファクタリング』『xUnit Test Patterns』に関する講演と、 JavaScript のテストに関する講演(Shibuya.js で行ったもの)のダイジェスト版を行いました
  • t_wada 賞として『テスト駆動開発入門』や『プログラミング作法』も贈りたかったのだけれど、どちらも博多のヨドバシカメラ(にある本屋)には売っていませんでした。残念です。
  • テスト駆動開発入門(二冊目)』『リファクタリング』『Clean Code』『レガシーコード改善ガイド』『データベースリファクタリング』などを自炊して iPad に入れたので講演時の荷物が劇的に減りました
  • 参加された型のエントリを読んでいると、ペアプロでの TDD や JavaScript のテストなど、デモからインパクトを受けた方も多いようです。デモ重要。