今回は、Coderetreatというイベントとそこで知ったBDDとATDDについて調べた話を書こうと思います。Coderetreatについて先日、Coderetreatというイベントが秋葉原で開催されたので参加してきました。minna-de-ochakai.connpass.com先ずはCoderetreatについて簡単に説明します。お題は固定で、コンウェイのライフゲームを作る。*11セッション45分で1日通して複数セッション行う。セッション終了時に成果物は全て消す。各セッションペアプロで行う。*2使用する言語、フレームワークは自由。参加費は無料!さらに昼食、おやつ、飲み物も全て主催およびスポンサーが提供する。*3とまぁこんな感じで、丸1日ガッツリプログラミングします。今回はファシリテーターの方がTDD*4に詳しいということで、TDDを使ってみようという全体方針でした。会場の雰囲気はかなりよく、お互いに「おー!これは完璧!」と褒めあったり、拍手が起こったりとワイワイ開発してました。*5事の発端そんな中、あるセッションでの設計中にこんな案が出ました。・ライフゲームの機能を実装して完成させるのではなく、ある初期系に対する完成系をベタで出力して、そこにロジックを入れていけばライフゲームになるはず。ふむ、文字にすると当たり前に感じますね。当日はTDDでロジックを実装していたので、テスタブルなロジックの集合を作っていくことに思考が持っていかれていたので、面白い発想だと感じました。ファシリテーターの方が、この手法はBDDやATDDに近い手法だと教えてくれました。今回出た案、普段の業務で考えると、画像も文字列もベタ書きのモックアップにロジックを実装して行くイメージです。BDDとATDDとはどんなものなのか見てみましょう。BDDって?振る舞い駆動開発、ビヘイビア駆動開発と呼ばれ、TDDの1種とされています。作業手順としてはTDDと同じでRED/GREEN/REFACTORを繰り返します。TDDとの違いは思想的な部分で、何のためのテストを書くか。いう部分に差があります。BDDはその名の通り、「振る舞い」を記述するためにテストを書く。コードを考える上では、必然的にTDDよりもスコープが広めのテストを考えることになります。ユニットテストや結合テストのレベルのイメージです。今回のライフゲームの例で言うと、初期系に対する完成系を出力するための1つ1つのロジック。「振る舞い」ということになります。基本的にTDDと同じ作業で、実装者もイメージしやすい形に設計されている感じですね。ATDDって?受け入れテスト駆動開発と呼ばれ、よりユーザー(顧客)向けのテストを想定したものです。そのため、TDD、BDDに比べて粒度は大きくなります。テストの組み方の難易度が上がり、REDである状態がどうしても長くなってしまいますが、開発最終段階のテストが早い段階で自動化できます。今回のライフゲームの例で言うと、初期系に対する完成系が出力されること。テストスコープとなります。こちらはBDDに比べて実装難易度がかなり上がりそうです。大きな枠組みのテストの中に、粒度の小さなテストをつめていく感じになるのでしょうか。反面、ユーザー側にもわかりやすいテストに出来るので、要求の齟齬を抑えられるメリットがありそうです。まとめかなりざっくりですが、BDDとATDDについて調べてみました。どちらも、いかにわかりやすくテストを作っていくか。考えて設計されているように感じます。この他にもTDD関連の手法がいくつもあり、取り入れる場面ごとで考える必要性を感じました。TDDそのものも使いこなせていないので、鍛えないといけませんが、コードの保守性、開発スピードなどを改善できる手法はどんどん取り入れていきたいですね。出来る有意義なイベントでした。tech.misoca.jpさて、次回は@kentaro_tsujinoさんの「オンプレ仮想基盤かAzureについて」のお話です。単純ルールですが、ライフゲームの仕組みだけでプログラムが作れたりします。*2:今回参加したイベントはモブプロもありでした。*3:全ては休日返上でがんばるプログラマへの想いで作られているそうです。学ばなければならないプレッシャーも感じます。*4:テスト駆動開発*5:参加当日まで、結構不安でドキドキだったことは内緒です。00:00Coderetreatと、たまたま知ったBDDとATDDについてざっくり調べてみるTweet関連記事2018-12-15アセンブラ短歌で遊ぼう!こんにちは。Autumn"が開催されました!こんにちは。VBAアプリケーションを作った話こんにちは。この記事はMisoca+弥生+ALTO...2018-12-01JavaScriptでテキストを整形するコードを書くこんにちは。Ad...2018-10-09もくテク「最近のWeb技術についてワイワイ語る会」を開催しました!こんにちは。アーカイブはてなブログをはじめよう!yayoiTechさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。