ソフトウェア開発で「ベストプラクティス」を実施することは、時にやや手ごわい先行投資になることがある。結果、開発者に工程をはしょらせて「とにかく終わらせる」ことになってしまうことが多い。これとは別に、ビヘイビア駆動開発(BDD)は、開発者とテスター、経営陣、事業参加者(顧客など)の間の協力関係を、大きく改善することができる技術である。ソフトウェア開発プロジェクトで実行すべき価値のある実践として、着実に採用・評価されてきている。
BDDの空間にはいくつかのフレームワークがあり、それが開発者たちにそのような思考様式で仕事をすることを可能にさせる。フレームワークには、Rspec(リンク)、Jbehave(リンク)、JSSpec(リンク)、Nspec(リンク)などがある。しかしこれとは別に、BDDをできるだけ簡単にしようと設計されたフレームワークがある。easybである。
easybとは(リンク)、
Javaプラットフォーム向けのビヘイビア駆動開発のフレームワークです。仕様に基づいたドメイン固有言語(DSL)を使うことにより、実行可能であるが読みやすい文書化を可能にすることを目標としています。
先日、ロッド・コフィン(リンク)(2008年9月20日時点でサイト閉鎖中)が「easybを使ったビヘイビア駆動開発(リンク)」という標題で記事を書いている。ロッドはここで、BDDと特にeasybのフレームワークを紹介するという素晴しい仕事をしている。easybによって何がもたらされるか、どのようにそれがなされるかが、次のようにまとめられている。
easybを使えば、ユーザーストーリーを書き、システム構成要素の仕様を開発し、UIのインタラクションを記述するだけでなく、さらに多くのことができます。easybの仕様は、Groovyスクリプトとして記述されます。Groovy言語の性質のため、および各クラスを通してGroovyスクリプトに許された寛大さのため、easybの仕様にはプログラマー特有の構文が比較的少なく、その代わりに通信振舞に重点を置いています。
記事全体にわたって、ロッドはeasybで定義された振舞のサンプルを提供しており、さらに多くを学ぶためには、この記事をじっくりと読む価値がある。InfoQはこれまで既に報じられている事柄を繰り返すのではなく、何がパイプラインを流れてきているのか知るため、プロジェクトの進む方向についてeasyb開発チームにインタビューした。
InfoQ: easybのロードマップはどのようになっていますか?
easyb開発チーム: easybは近々バージョン1.0をリリースします。これには、全ての報告のhtmlバージョンなど、報告機能の強化が多く含まれています。Intellijプラグインでは多くの機能のアップグレードがあり、お気に入りのIDEでeasybを使うことが楽しくなります。Junitとの統合もまもなくです。目標が、既存のテストライブラリーと接続させてeasybを使うことであろうと、新しい概念には適さないことが多い環境にeasybを簡単に導入する方法を探すことであろうと、こうした障壁を下げたいと思っています。
いくつかの新しい構成要素が、1.0のリリースで初登場する予定です。平易さ、ストーリーの構築とその実施のためのウェブアプリケーションによって、振舞のテストが私たちの中では技術者以外でも可能になりました。最も易しいウェブフレームワーク(Grails)と最も簡単なBDDツール(easyb)を結合させてはどうでしょう? まさしくそれが新しいGrailsプラグインによって可能になったことであり、1.0の期限あたりで少なくともベータ版を発表する見込みです。(1.0以降の)ロードマップでの大きなポイントはEclipseプラグインです。Intellijプラグインはとても楽しいので、IDEユーザーの残りの半分を蚊帳の外には置きたくないのです。
InfoQ: MavenやSpring(あるいは他のフレームワーク)との統合について、easybウェブサイトに今後新たな情報が出ますか?
easyb-dev開発チーム: easyb.org(リンク)のページから目を離さないでください。詳しい説明書がそろそろ登場します。ここでは、一般的な(そしてあまり一般的でない)easybの使い方の数々を、例を挙げて説明します。SpringやJunit、モッキングなどのホットな話題も必ず登場します。
InfoQ: easybのポートを別の言語にすることについて(すなわち、ActionScriptやPython、Ruby)、何か考えがおありですか?
easyb-dev 開発チーム: Rubyコミュニティーはすでに、rspecという名前の、easybに極めて類似した素晴しい製品を持っています。開発チームのメンバーは皆、ご指摘になった言語のいくつかについて関心は寄せていますが、easybをjvm以外の何かにするという計画は現在のところはありません。同じ素晴しい製品をこれらのプラットフォームに適切に適用することに必要なだけの時間と注意を割り振ることはしないというのが、チームメンバーの総意だと思われます。しかし、easybを他の言語に拡張することに興味がある人がいれば、easybチームに入ることを薦めます。
最後に、ビヘイビア駆動開発は、ソフトウェア開発プロジェクトにおいて、技術陣(開発者、テスターなど)と特に非技術陣(経営陣、顧客など)間の協力関係を向上させるための技術です。easybは、全ての参加者にとってプロセスが簡単になるようにするフレームワークをお届けすることを目標としており、活発な開発を現在も続けています。
ソフトウェアプロジェクトでBDDをお使いですか? もしお使いであれば、プロジェクトがもっと成功を収めたかもしれないことについて、どのようにお考えでしょうか? お使いでなければ、なぜこれまで試されたことがなかったのでしょう? もし試したことがおありなら、なぜ御社のプロジェクトに「耐え」なかったのでしょう?