SlideShare ist ein Scribd-Unternehmen logo
1 von 19
簡単なものこそBDDで!(for LTSpiral #2) By しずと (Ryo Nagai) @shizuto_a 2010/11/27 簡単なものこそBDDで! 1
Person(:Shizuto).introduce 組込み系のソフトやさん だいたいC。ログ解析などでTclとかRubyとか。 元数学やさん 整数論(数論幾何)やってました。 言語好き 日本語 英語 フランス語 タガログ語 Ruby 2010/11/27 簡単なものこそBDDで! 2
伝えたいこと 仕事の補助にRubyで小物ツールを作っていました。 ある日、RSpecなるものを発見。 使ってみた。 効率が上がった! これはぜひとも紹介せねば! そんなわけでRSpecの紹介です ……と、いきたいところですが Ruby勉強会じゃないので、BDDに焦点を当てます。 2010/11/27 簡単なものこそBDDで! 3
BDDって何? Behavior Driven Development ビヘイビア(振舞い)駆動開発 スペックファースト TDD(テスト駆動開発)+ α 「テストとして動く仕様書」 2010/11/27 簡単なものこそBDDで! 4 仕様書 テスト スペック
BDDのためのツールの例 RSpec (Ruby) 今回の例はRSpecで書きます。 Cucumber (Ruby, 他) 小物ツールではたぶん使わない。 ごめんなさい、Ruby以外のBDDはあんまり知りません。 C,Java,PHP,JavaScript,.NET もいろいろあるみたいです。 ○○Specとか、JBehaveとか、Specterとか。 2010/11/27 簡単なものこそBDDで! 5
開発はじめ 2010/11/27 簡単なものこそBDDで! 6 では、実際にBDDやってみましょう。 題材は、動物園のモデル化です。(動物と、ケージと) ↓ 写真はマニラ動物園
Programming テストを書いて、失敗するのを確認。 ソースは何も書いてないからね。 テストが通るように、コードを書く。 成功するのを確認。 Green! テストを追加、そして失敗するのを確認。 テストが通るように、コードを書く。 成功するのを確認。 All Green! 2010/11/27 簡単なものこそBDDで! 7
うれしいことその1 どう作ればいいか分からなくても、まず作り始められる。 とにかく手が動く。 少し作ってみると、どう作るかも考えやすくなってくる。 ここまではTDDのうれしさ。 2010/11/27 簡単なものこそBDDで! 8
余談:スペックを何語で書くか がんばれば日本語でもできるけど・・・ “The common language in the scientific world should be poor English, just as I am speaking now.” 科学の世界はそう。 数学の世界もそう。 ITの世界でもたぶんそう。 なので、僕はRSpecは英語で書きます。 そもそもRSpecは英文法に近くなるように設計されてるし…… Cucumberとかは日本語でもいいかも。 2010/11/27 簡単なものこそBDDで! 9
プログラミングのつづき では、開発を進めていきましょう。 2010/11/27 簡単なものこそBDDで! 10
Programming 中身がだんだん大きくなってきた。 今までのコードもちゃんと動いてるだろうか。 All Green! (or ...?) アルゴリズム変えたくなった! 変えてみよう。 All Green! (or ...?) 2010/11/27 簡単なものこそBDDで! 11
作る途中のうれしさ 作るたびにレグレッションテスト(退行テスト)ができる。 気軽にリファクタリングできる。 臭いを嗅ぎつけたら、勇気を持ってリファクタリング! これもTDDのうれしさ。 2010/11/27 簡単なものこそBDDで! 12
Programming さらにプログラミングを進めて、できあがり! 仕事もはかどって、めでたしめでたし。 サンプルが実用的じゃなくてすいませんでした。 2010/11/27 簡単なものこそBDDで! 13
それで、後日 使う環境が変わった! (例えばRuby 1.8.7 ->1.9.2) 何かが変わっていて動かない! 前に使ったあのツールを使いたい! でも、どう使うんだっけ? 今回のデータもそのまま使えるっけ? 他に使いたい人が現れた! 使い方を教えている余裕がない。 改造して使いたいらしいけど、あの人Ruby知らないはず…… 2010/11/27 簡単なものこそBDDで! 14
BDDで作っていればスペックがある! スペックは仕様書 それぞれが何をしているか書いてある。 考え方が分かれば、他人は他の言語に移植できるかも。 どこまでケアしているかが書いてある。 スペックはマニュアル 使い方が書いてある。 スペックはテスト どれだけ実装できているかは動かせば分かる。 どこが動かないのか、一目瞭然。 2010/11/27 簡単なものこそBDDで! 15
Programming, once more では、あらためてソースとスペックを見てみる。 いろいろ作り込みを考えてみよう。 1匹(1頭)なのに複数形なので直したい。 Mouseクラスを追加しよう。 ちなみに、mouseの複数形は? 特定の種類の動物が何匹いるか調べたい。 ケージから出したい。 複数のケージを合併させたい。 さあ、軽い気持ちで追加できる? 2010/11/27 簡単なものこそBDDで! 16
さらにいいこと テストしやすいコードを強要される。 最初は窮屈かも。 でも、だんだん慣れてくる。 改良したり直したりしやすいコードを自然と書くようになる。 やりたいことに素直なソースを強要される 最初は窮屈かも。 でも、だんだん慣れてくる。 後で読みやすいコードを自然と書くようになる。 2010/11/27 簡単なものこそBDDで! 17
まとめ 2010/11/27 簡単なものこそBDDで! 18 テストファーストは開発しやすい。 テストをスペックにしておくと何かとうれしい。 スペックファーストしていると頭がよくなる。 だから、簡単なものこそBDDで!
おしまい 2010/11/27 簡単なものこそBDDで! 19 興味がある方はRuby勉強会@関西もどうぞ。 次回は12/4 京都女子大学 S108にて 僕もいち参加者で、スタッフではないですが・・・

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (8)

再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20
 
Use Japanese with vcd/vcdExtra package
Use Japanese with vcd/vcdExtra packageUse Japanese with vcd/vcdExtra package
Use Japanese with vcd/vcdExtra package
 
2つのmosaic plotと日本語表示
2つのmosaic plotと日本語表示2つのmosaic plotと日本語表示
2つのmosaic plotと日本語表示
 
もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか
もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったかもうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか
もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか
 
Exaリーディングのすゝめ
ExaリーディングのすゝめExaリーディングのすゝめ
Exaリーディングのすゝめ
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
 
PyKon JP 2014
PyKon JP 2014PyKon JP 2014
PyKon JP 2014
 
Introduction r (R入門)
Introduction r (R入門)Introduction r (R入門)
Introduction r (R入門)
 

Andere mochten auch (7)

組み込みとITのお話 (LTSpiral03)
組み込みとITのお話 (LTSpiral03)組み込みとITのお話 (LTSpiral03)
組み込みとITのお話 (LTSpiral03)
 
20130518 アラビア語を入力してみよう
20130518 アラビア語を入力してみよう20130518 アラビア語を入力してみよう
20130518 アラビア語を入力してみよう
 
あらためてWorld Wide Web
あらためてWorld Wide WebあらためてWorld Wide Web
あらためてWorld Wide Web
 
20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う
 
الدرس اللغة العربية وروبي (関西闇Ruby会議)
الدرس اللغة العربية وروبي (関西闇Ruby会議)الدرس اللغة العربية وروبي (関西闇Ruby会議)
الدرس اللغة العربية وروبي (関西闇Ruby会議)
 
PDCAのΠ
PDCAのΠPDCAのΠ
PDCAのΠ
 
ドラッカーの読み方 (LTSpiral01)
ドラッカーの読み方 (LTSpiral01)ドラッカーの読み方 (LTSpiral01)
ドラッカーの読み方 (LTSpiral01)
 

Ähnlich wie 簡単なものこそBDDで! (LTSpiral02)

るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。
Sho Hashimoto
 
Perlto ruby
Perlto rubyPerlto ruby
Perlto ruby
sy250
 

Ähnlich wie 簡単なものこそBDDで! (LTSpiral02) (13)

Ruby関西勉強会発表資料
Ruby関西勉強会発表資料Ruby関西勉強会発表資料
Ruby関西勉強会発表資料
 
るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。
 
PHPカンファレンス関西2017 PHPにおけるDSL
PHPカンファレンス関西2017 PHPにおけるDSLPHPカンファレンス関西2017 PHPにおけるDSL
PHPカンファレンス関西2017 PHPにおけるDSL
 
RDBってなに?
RDBってなに?RDBってなに?
RDBってなに?
 
おれはコーディングをやめるぞ!
おれはコーディングをやめるぞ!おれはコーディングをやめるぞ!
おれはコーディングをやめるぞ!
 
Ruby Introduction
Ruby IntroductionRuby Introduction
Ruby Introduction
 
Jupyter x rise
Jupyter x riseJupyter x rise
Jupyter x rise
 
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)
 
RvizPlugin作成入門
RvizPlugin作成入門RvizPlugin作成入門
RvizPlugin作成入門
 
#027 tddのさわり
#027 tddのさわり#027 tddのさわり
#027 tddのさわり
 
今から始めるDocument db
今から始めるDocument db今から始めるDocument db
今から始めるDocument db
 
Perlto ruby
Perlto rubyPerlto ruby
Perlto ruby
 
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
 

Kürzlich hochgeladen

Kürzlich hochgeladen (7)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

簡単なものこそBDDで! (LTSpiral02)