SlideShare una empresa de Scribd logo
1 de 78
Descargar para leer sin conexión
この RSpec には 
夢があるッ!! 
inspire the るびま&ジョジョ 
今さらながら 
RSpecに入門してみた
さくらば@ZARU 
株式会社ベーシック&株式会社フルセイル 
TwitterとQiita、やってます。 
楽しいことは誰にも譲らないで、自分で楽しむタイプです。 
! カレーと寿司とラーメンが好き 
! プログラミングが好き 
! どんな言語も好きだけど、JavaScriptが大好き 
! 娘、産まれて育ってます
今日は 
Railsアプリで、RSpec使った 
テストに入門した話をします。
その前に…
宣伝!
今月もQiita投稿大会やってます! 
ルール 
! 月内に獲得したストック数が一番多いものが優勝 
! 月内に投稿された記事で咲いたストック数は優秀賞 
! 9月は優勝/優秀賞には天ぷら 
! さくらばが優勝したら、割り勘ね…
宣伝ここまで
はじめます
? 
そもそもテストって何?
…っていう話は今回はしません。
まず、テストコードを 
書けるようになってから考えよう。 
道具について語るには、まず道具を知ることから。
TDD is dead. Long live testing. 
Rails作者:David Heinemeier Hansson
偏った原理主義に走るなよ、環境は変わってきているんだし 
テストのあり方も変えていこうぜ。っていう話…と思ってます。
「磯野ー!テストしようぜ!」
テストの原則 
! テストは信頼できるものであること 
! テストは簡単に書けること 
! テストは簡単に理解できること 
RSpecによるRailsテスト入門より引用
前置きは終了。
この本を 
ベースに 
話します。 
分かりやすく 
とてもいい本です。 
RSpec3用にリニューアルも 
予定しているっぽいです。 
買いましょう。
RSpecに 
入門してみる
今日、話すこと 
! Gemfile + RSpec設定 
! モデルスペック 
! ファクトリ 
! コントローラスペック
Gemfile
group :development, :test do 
gem "rspec-rails", "~> 2.14.0" 
gem "factory_girl_rails", "~> 4.2.1" 
end 
group :test do 
gem "faker", "~> 1.1.2" 
gem "capybara", "~> 2.1.0" 
gem "database_cleaner", "~> 1.0.1" 
gem "launchy", "~> 2.3.0" 
gem "selenium-webdriver", "~> 2.39.0" 
end 
RSpec3が2014年6月くらいにリリースされているけど、今回は2系を使用。 
3については下記ページ参照。 
http://qiita.com/yujinakayama/items/a1d31b2caa35642e8e69 
http://nilp.hatenablog.com/entry/2014/05/28/003335
紹介
rspec-rails 
RSpec本体 + RailsでRSpec使うためのもろもろ。 
factory_girl_rails 
標準フィクスチャをもっと便利なファクトリとして提供してくれる。 
テストデータをさくっと作るのにイケてるガール。 
faker 
名前・メールアドレスなどダミーデータを作ってくれる。 
日本名に対応したFaker::Japaneseというのもある。 
capybara 
Webアプリテストをコードレベルで行うことができる。 
色々連携する。
database_cleaner 
まっさらな環境で、テストが実行できるように 
テストデータを消してくれる。 
launchy 
好きなタイミングでブラウザを開くことができる。 
selenium-webdriver 
Seleniumでブラウザ上テストを実行できる。 
他にもGuard・RuboCopとかテスト周りで便利なGemある
RSpecの設定
$ bundle exec rails g rspec:install 
create .rspec 
create spec 
create spec/spec_helper.rb 
.rspec 
--color 
--format documentation 
RSpecの実行結果を、見やすく楽しくしてくれる設定
こんな感じ
/config/application.rb 
config.generators do |g| 
g.test_framework :rspec, 
fixtures: true, 
view_specs: false, 
helper_specs: false, 
routing_specs: false, 
controller_specs: true, 
request_specs: false 
g.fixture_replacement :factory_girl, dir: "spec/factories” 
end 
ジェネレータで作成されるスペックファイルの設定。 
ビューはRSpecではテストしないので作らない。 
フィクスチャの代わりにファクトリを使う。
モデル 
スペック
名前とメールアドレスを持つContactという 
モデルがあったとして、Contactモデルの 
スペックを書いてみる。 
Contact 
name 
email 
さくっと、scaffoldしておく。 
$ bundle exec rails g  
scaffold contact  
name:string  
email:string:unique 
$ bundle exec rake db:migrate 
Rails4.1からdb:test:cloneなどは、自動で行われるので必要なくなった
テストって 
どう書くの?
モデルスペックを書いてみる
$vi /spec/models/contact_spec.rb 
require 'spec_helper' 
describe Contact do 
it "全てのデータが有効な状態であること" 
it "名前がなければ無効な状態であること" 
it "メールがなければ無効な状態であること" 
it "重複したメールアドレスなら無効な状態であること" 
end 
まず、期待する動作をアウトライン的に 
書き出してみる。
おもむろにテストを実行してみる。 
$ bundle exec rspec
scaffoldで勝手に作られた 
コントローラースペックが動いてます。 
+今作ったContactモデルのも。 
当然、テストの中身を書いてないので、 
pendingという状態になってます。
テストコードを書いてみる
require 'spec_helper' 
describe Contact do 
it "全てのデータが有効な状態であること" do 
contact = Contact.new( 
name: 'zaru', 
email: 'zaru@example.com' 
) 
expect(contact).to be_valid 
end 
end 
Contactモデルを作成する(DBには保存しない) 
expect(オブジェクト).to 期待するもの、でテストできる 
RSpec2.11から、オブジェクト.should が expect() に変更になりました
おもむろにテストを実行してみる。 
$ bundle exec rspec
テスト通ってる!
でも、実はこれ…
中身ないContactオブジェクト 
でもテスト通る!
require 'spec_helper' 
describe Contact do 
it "全てのデータが有効な状態であること" do 
contact = Contact.new() 
expect(contact).to be_valid 
end 
end 
通る!
なので、バリデーション設定しましょう。
$vi /app/models/contact.rb 
class Contact < ActiveRecord::Base 
validates :name, presence: true 
validates :email, presence: true, uniqueness: true 
end 
nameもemailも必須で、emailはユニーク扱い。
中身のないContactオブジェクトのまま… 
再度、実行!
失敗してる!
1個ずつバリデーションのテストしましょう
require 'spec_helper' 
describe Contact do 
it "名前がなければ無効な状態であること" do 
contact = Contact.new( 
name: nil 
) 
expect(contact).to have(1).errors_on(:name) 
end 
it "メールがなければ無効な状態であること" do 
contact = Contact.new( 
email: nil 
) 
expect(contact).to have(1).errors_on(:email) 
end 
end 
nameのデータを空にして 
エラーがでるかテスト
重複のテストもしましょう
require 'spec_helper' 
describe Contact do 
it "重複したメールアドレスなら無効な状態であること" do 
Contact.create( 
name: 'zaru', 
email: 'zaru@example.com' 
) 
contact = Contact.new( 
name: 'tofu', 
email: 'zaru@example.com' 
) 
expect(contact).to have(1).errors_on(:email) 
end 
end 
createは、テストデータを 
DBに登録をしてくれる。
CPC設定完了 
ニューラルリンケージ 
イオン濃度正常 
メタ運動野パラメータ更新 
原子炉臨界 
パワーフロー正常 
全システムオールグリーン 
ストライクフリーダム、システム起動
テストコードの書き方ポイント
! スペックはアウトラインと考える 
! describeでまとめて、itで期待する結果を書く 
contextは、状態の変化で使い分ける 
! itには1個につき、結果を1つだけ期待する 
! itは、◯◯である/◯◯すること、などの動詞にする 
! 起きてほしいことと、起きてほしくないことを書く 
! 境界値テストをすること 
◯文字以上~◯文字以内の場合、その前後の値で
ついでに、 
インスタンスメソッドをテストしてみる
名前付きメールアドレスを返すメソッド 
class Contact < ActiveRecord::Base 
def nameAddr 
"%s<%s>" % [name, email] 
end 
end
require 'spec_helper' 
describe Contact do 
it "名前付きメールアドレスを返すこと" do 
contact = Contact.new( 
name: 'zaru', 
email: 'zaru@example.com' 
) 
expect(contact.nameAddr).to 
eq 'zaru<zaru@example.com>' 
end 
end 
nameAddrを実行して、かえってくる文字列を比較する
テストコードをDRYに
beforeフックで、まとめる 
require 'spec_helper' 
describe Contact do 
before :each do 
@contact = Contact.new( 
name: 'zaru', 
email: 'zaru@example.com' 
) 
end 
end 
Contactオブジェクトをインスタンス変数に格納 
beforeは、describe中の各テストの前に実行される
ファクトリ
Factory 
Girl 
ひな形から 
テストデータを 
量産できる可愛い子
Contactファクトリ作る
$vi /spec/factories/contacts.rb 
FactoryGirl.define do 
factory :contact do 
name "zaru" 
sequence(:email) { |n| "zaru#{n}@example.com" } 
end 
end 
内部でインクリメンタルして、 
違うメールアドレスを作ってくれる
テストコードを書きなおしてみる
it "全てのデータが有効な状態であること" do 
contact = Contact.new( 
name: 'zaru', 
email: 'zaru@example.com' 
) 
expect(contact).to be_valid 
end 
it "全てのデータが有効な状態であること" do 
expect(FactoryGirl.build(:contact)).to be_valid 
end 
こうなる 
FactoryGirl.buildで、Contact.newと同様のことができる。 
FactoryGirl.createで、Contact.createと同じ。
FactoryGirlって 
打つの面倒
省略できます
$vi /spec/spec_helper.rb 
RSpec.configure do |config| 
config.include FactoryGirl::Syntax::Methods 
end 
it "全てのデータが有効な状態であること" do 
expect(build(:contact)).to be_valid 
end 
FactoryGirl省略できる
はい…
今日はここまで!
サンプルコードはGitHubにあります。 
https://github.com/zaru/rials_rspec_sample
次回
! コントローラースペック 
! Capybaraさん 
! REST WebAPIテスト
予定は 
未定…
$ shutdown -h now

Más contenido relacionado

La actualidad más candente

Pycairo を使ってみる その1
Pycairo を使ってみる その1Pycairo を使ってみる その1
Pycairo を使ってみる その1ryos36
 
Prophet入門【理論編】Facebookの時系列予測ツール
Prophet入門【理論編】Facebookの時系列予測ツールProphet入門【理論編】Facebookの時系列予測ツール
Prophet入門【理論編】Facebookの時系列予測ツールhoxo_m
 
アプリケーションの性能最適化2(CPU単体性能最適化)
アプリケーションの性能最適化2(CPU単体性能最適化)アプリケーションの性能最適化2(CPU単体性能最適化)
アプリケーションの性能最適化2(CPU単体性能最適化)RCCSRENKEI
 
SQiP2015-研究のデザイン入門
SQiP2015-研究のデザイン入門SQiP2015-研究のデザイン入門
SQiP2015-研究のデザイン入門Hironori Washizaki
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるShintaro Fukushima
 
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試みSusumuOTA
 
関数型プログラミング入門 for Matlab ユーザー
関数型プログラミング入門 for Matlab ユーザー関数型プログラミング入門 for Matlab ユーザー
関数型プログラミング入門 for Matlab ユーザーIchiro Maruta
 
scryptos onsite(plaid CTF)
scryptos onsite(plaid CTF)scryptos onsite(plaid CTF)
scryptos onsite(plaid CTF)RKX1209
 
社内論文読み会資料 Image-to-Image Retrieval by Learning Similarity between Scene Graphs
社内論文読み会資料 Image-to-Image Retrieval by Learning Similarity between Scene Graphs社内論文読み会資料 Image-to-Image Retrieval by Learning Similarity between Scene Graphs
社内論文読み会資料 Image-to-Image Retrieval by Learning Similarity between Scene GraphsKazuhiro Ota
 
Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略Yamashita Takeshi
 
3. Vertex AIを用いた時系列データの解析
3. Vertex AIを用いた時系列データの解析3. Vertex AIを用いた時系列データの解析
3. Vertex AIを用いた時系列データの解析幸太朗 岩澤
 
知識ベース型推薦の解説
知識ベース型推薦の解説知識ベース型推薦の解説
知識ベース型推薦の解説Takahiro Kubo
 
LDA等のトピックモデル
LDA等のトピックモデルLDA等のトピックモデル
LDA等のトピックモデルMathieu Bertin
 
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化Lintaro Ina
 
[Dl輪読会]dl hacks輪読
[Dl輪読会]dl hacks輪読[Dl輪読会]dl hacks輪読
[Dl輪読会]dl hacks輪読Deep Learning JP
 
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なことアプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なことTakao Sumitomo
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 
Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?jundoll
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Hiro H.
 

La actualidad más candente (20)

Pycairo を使ってみる その1
Pycairo を使ってみる その1Pycairo を使ってみる その1
Pycairo を使ってみる その1
 
Prophet入門【理論編】Facebookの時系列予測ツール
Prophet入門【理論編】Facebookの時系列予測ツールProphet入門【理論編】Facebookの時系列予測ツール
Prophet入門【理論編】Facebookの時系列予測ツール
 
アプリケーションの性能最適化2(CPU単体性能最適化)
アプリケーションの性能最適化2(CPU単体性能最適化)アプリケーションの性能最適化2(CPU単体性能最適化)
アプリケーションの性能最適化2(CPU単体性能最適化)
 
SQiP2015-研究のデザイン入門
SQiP2015-研究のデザイン入門SQiP2015-研究のデザイン入門
SQiP2015-研究のデザイン入門
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み
 
関数型プログラミング入門 for Matlab ユーザー
関数型プログラミング入門 for Matlab ユーザー関数型プログラミング入門 for Matlab ユーザー
関数型プログラミング入門 for Matlab ユーザー
 
scryptos onsite(plaid CTF)
scryptos onsite(plaid CTF)scryptos onsite(plaid CTF)
scryptos onsite(plaid CTF)
 
社内論文読み会資料 Image-to-Image Retrieval by Learning Similarity between Scene Graphs
社内論文読み会資料 Image-to-Image Retrieval by Learning Similarity between Scene Graphs社内論文読み会資料 Image-to-Image Retrieval by Learning Similarity between Scene Graphs
社内論文読み会資料 Image-to-Image Retrieval by Learning Similarity between Scene Graphs
 
Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略
 
3. Vertex AIを用いた時系列データの解析
3. Vertex AIを用いた時系列データの解析3. Vertex AIを用いた時系列データの解析
3. Vertex AIを用いた時系列データの解析
 
知識ベース型推薦の解説
知識ベース型推薦の解説知識ベース型推薦の解説
知識ベース型推薦の解説
 
LDA等のトピックモデル
LDA等のトピックモデルLDA等のトピックモデル
LDA等のトピックモデル
 
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
 
[Dl輪読会]dl hacks輪読
[Dl輪読会]dl hacks輪読[Dl輪読会]dl hacks輪読
[Dl輪読会]dl hacks輪読
 
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なことアプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
 

Destacado

正規表現勉強会
正規表現勉強会正規表現勉強会
正規表現勉強会zaru sakuraba
 
初心者のためのキャラクターの描き方のコツ 入門編
初心者のためのキャラクターの描き方のコツ 入門編初心者のためのキャラクターの描き方のコツ 入門編
初心者のためのキャラクターの描き方のコツ 入門編shinta rock
 
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへアプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへTomohiro Yamasaki
 
WEBページを表示するまで
WEBページを表示するまでWEBページを表示するまで
WEBページを表示するまでShoichi Kakizaki
 
少し未来のコードレビュー
少し未来のコードレビュー少し未来のコードレビュー
少し未来のコードレビューzaru sakuraba
 
エンジニアでもできる⁉︎それっぽいデザイン
エンジニアでもできる⁉︎それっぽいデザインエンジニアでもできる⁉︎それっぽいデザイン
エンジニアでもできる⁉︎それっぽいデザインshinta rock
 
スマホフロントエンド最速化手法
スマホフロントエンド最速化手法スマホフロントエンド最速化手法
スマホフロントエンド最速化手法zaru sakuraba
 
非エンジニア向けHTML勉強会その1
非エンジニア向けHTML勉強会その1非エンジニア向けHTML勉強会その1
非エンジニア向けHTML勉強会その1Karino Kyohei
 
アプリデザインのお勉強 UI/UXのお話
アプリデザインのお勉強 UI/UXのお話アプリデザインのお勉強 UI/UXのお話
アプリデザインのお勉強 UI/UXのお話shinta rock
 
ほんわかSwift勉強資料
ほんわかSwift勉強資料ほんわかSwift勉強資料
ほんわかSwift勉強資料kouhei kawamata
 
0528 kanntigai ui_ux
0528 kanntigai ui_ux0528 kanntigai ui_ux
0528 kanntigai ui_uxSaori Matsui
 
見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版MOCKS | Yuta Morishige
 
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識Tsutomu Sogitani
 
どうしてプレゼン研究会を始めたのか
どうしてプレゼン研究会を始めたのかどうしてプレゼン研究会を始めたのか
どうしてプレゼン研究会を始めたのかMasahito Zembutsu
 
SINAP TALK Vol.04「プレゼンテーションについて」鷹野雅弘
SINAP TALK Vol.04「プレゼンテーションについて」鷹野雅弘SINAP TALK Vol.04「プレゼンテーションについて」鷹野雅弘
SINAP TALK Vol.04「プレゼンテーションについて」鷹野雅弘swwwitch inc.
 
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】MOCKS | Yuta Morishige
 
色彩センスのいらない配色講座
色彩センスのいらない配色講座色彩センスのいらない配色講座
色彩センスのいらない配色講座Mariko Yamaguchi
 

Destacado (20)

正規表現勉強会
正規表現勉強会正規表現勉強会
正規表現勉強会
 
初心者のためのキャラクターの描き方のコツ 入門編
初心者のためのキャラクターの描き方のコツ 入門編初心者のためのキャラクターの描き方のコツ 入門編
初心者のためのキャラクターの描き方のコツ 入門編
 
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへアプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
 
WEBページを表示するまで
WEBページを表示するまでWEBページを表示するまで
WEBページを表示するまで
 
少し未来のコードレビュー
少し未来のコードレビュー少し未来のコードレビュー
少し未来のコードレビュー
 
エンジニアでもできる⁉︎それっぽいデザイン
エンジニアでもできる⁉︎それっぽいデザインエンジニアでもできる⁉︎それっぽいデザイン
エンジニアでもできる⁉︎それっぽいデザイン
 
スマホフロントエンド最速化手法
スマホフロントエンド最速化手法スマホフロントエンド最速化手法
スマホフロントエンド最速化手法
 
ワクワク電子工作
ワクワク電子工作ワクワク電子工作
ワクワク電子工作
 
非エンジニア向けHTML勉強会その1
非エンジニア向けHTML勉強会その1非エンジニア向けHTML勉強会その1
非エンジニア向けHTML勉強会その1
 
アプリデザインのお勉強 UI/UXのお話
アプリデザインのお勉強 UI/UXのお話アプリデザインのお勉強 UI/UXのお話
アプリデザインのお勉強 UI/UXのお話
 
ほんわかSwift勉強資料
ほんわかSwift勉強資料ほんわかSwift勉強資料
ほんわかSwift勉強資料
 
0528 kanntigai ui_ux
0528 kanntigai ui_ux0528 kanntigai ui_ux
0528 kanntigai ui_ux
 
見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版
 
しょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedeeしょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedee
 
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
 
どうしてプレゼン研究会を始めたのか
どうしてプレゼン研究会を始めたのかどうしてプレゼン研究会を始めたのか
どうしてプレゼン研究会を始めたのか
 
社内勉強会を継続成長させる方法
社内勉強会を継続成長させる方法社内勉強会を継続成長させる方法
社内勉強会を継続成長させる方法
 
SINAP TALK Vol.04「プレゼンテーションについて」鷹野雅弘
SINAP TALK Vol.04「プレゼンテーションについて」鷹野雅弘SINAP TALK Vol.04「プレゼンテーションについて」鷹野雅弘
SINAP TALK Vol.04「プレゼンテーションについて」鷹野雅弘
 
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
 
色彩センスのいらない配色講座
色彩センスのいらない配色講座色彩センスのいらない配色講座
色彩センスのいらない配色講座
 

Similar a 今さらながらRSpecに入門してみた

魂のコーディング
魂のコーディング魂のコーディング
魂のコーディングDaisuke Tasaki
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめYu Nobuoka
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テストKen Morishita
 
プログラミングの基礎振り返りスライド1
プログラミングの基礎振り返りスライド1プログラミングの基礎振り返りスライド1
プログラミングの基礎振り返りスライド1sunotora
 
CakePHP Kansai 2008-12-12
CakePHP Kansai 2008-12-12CakePHP Kansai 2008-12-12
CakePHP Kansai 2008-12-12Yasuo Harada
 
実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜
実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜
実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜Chihiro Fukazawa
 
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Taisuke Shiratori
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめhakoika-itwg
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストSeiji KOMATSU
 
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsqlToshi Harada
 
JJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPAJJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPANaoya Kojima
 
よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだNarami Kiyokura
 
(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話Masanori Masui
 
Erlangご紹介 websocket編
Erlangご紹介 websocket編Erlangご紹介 websocket編
Erlangご紹介 websocket編Masatoshi Itoh
 
私のSql -My Sql
私のSql -My Sql私のSql -My Sql
私のSql -My Sqlstiq 2e
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documentsbleis tift
 
Stan勉強会資料(前編)
Stan勉強会資料(前編) Stan勉強会資料(前編)
Stan勉強会資料(前編) daiki hojo
 

Similar a 今さらながらRSpecに入門してみた (20)

魂のコーディング
魂のコーディング魂のコーディング
魂のコーディング
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
 
プログラミングの基礎振り返りスライド1
プログラミングの基礎振り返りスライド1プログラミングの基礎振り返りスライド1
プログラミングの基礎振り返りスライド1
 
Haikara
HaikaraHaikara
Haikara
 
CakePHP Kansai 2008-12-12
CakePHP Kansai 2008-12-12CakePHP Kansai 2008-12-12
CakePHP Kansai 2008-12-12
 
実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜
実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜
実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜
 
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
 
Rspec
RspecRspec
Rspec
 
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql
 
JJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPAJJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPA
 
よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだ
 
(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話
 
Erlangご紹介 websocket編
Erlangご紹介 websocket編Erlangご紹介 websocket編
Erlangご紹介 websocket編
 
私のSql -My Sql
私のSql -My Sql私のSql -My Sql
私のSql -My Sql
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documents
 
Stan勉強会資料(前編)
Stan勉強会資料(前編) Stan勉強会資料(前編)
Stan勉強会資料(前編)
 

Más de zaru sakuraba

WebAssembly と Rust の入口の向かいにある道路のベンチに腰掛けるレベルのさわってみた感想を共有
WebAssembly と Rust の入口の向かいにある道路のベンチに腰掛けるレベルのさわってみた感想を共有WebAssembly と Rust の入口の向かいにある道路のベンチに腰掛けるレベルのさわってみた感想を共有
WebAssembly と Rust の入口の向かいにある道路のベンチに腰掛けるレベルのさわってみた感想を共有zaru sakuraba
 
Goでこれどうやるの? 入門
Goでこれどうやるの? 入門Goでこれどうやるの? 入門
Goでこれどうやるの? 入門zaru sakuraba
 
CarrierWaveにちょっと互換あるGCP Storage対応クラス
CarrierWaveにちょっと互換あるGCP Storage対応クラスCarrierWaveにちょっと互換あるGCP Storage対応クラス
CarrierWaveにちょっと互換あるGCP Storage対応クラスzaru sakuraba
 
パフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したいパフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したいzaru sakuraba
 
普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見zaru sakuraba
 
スクラム導入に向けて:スクラムは救世主となるのか?
スクラム導入に向けて:スクラムは救世主となるのか?スクラム導入に向けて:スクラムは救世主となるのか?
スクラム導入に向けて:スクラムは救世主となるのか?zaru sakuraba
 
GitHub Appsの作り方
GitHub Appsの作り方GitHub Appsの作り方
GitHub Appsの作り方zaru sakuraba
 
Railsモデル設計ケーススタディ
Railsモデル設計ケーススタディRailsモデル設計ケーススタディ
Railsモデル設計ケーススタディzaru sakuraba
 
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門zaru sakuraba
 
Service workerとwebプッシュ通知
Service workerとwebプッシュ通知Service workerとwebプッシュ通知
Service workerとwebプッシュ通知zaru sakuraba
 
良いプログラマーとは
良いプログラマーとは良いプログラマーとは
良いプログラマーとはzaru sakuraba
 

Más de zaru sakuraba (11)

WebAssembly と Rust の入口の向かいにある道路のベンチに腰掛けるレベルのさわってみた感想を共有
WebAssembly と Rust の入口の向かいにある道路のベンチに腰掛けるレベルのさわってみた感想を共有WebAssembly と Rust の入口の向かいにある道路のベンチに腰掛けるレベルのさわってみた感想を共有
WebAssembly と Rust の入口の向かいにある道路のベンチに腰掛けるレベルのさわってみた感想を共有
 
Goでこれどうやるの? 入門
Goでこれどうやるの? 入門Goでこれどうやるの? 入門
Goでこれどうやるの? 入門
 
CarrierWaveにちょっと互換あるGCP Storage対応クラス
CarrierWaveにちょっと互換あるGCP Storage対応クラスCarrierWaveにちょっと互換あるGCP Storage対応クラス
CarrierWaveにちょっと互換あるGCP Storage対応クラス
 
パフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したいパフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したい
 
普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見
 
スクラム導入に向けて:スクラムは救世主となるのか?
スクラム導入に向けて:スクラムは救世主となるのか?スクラム導入に向けて:スクラムは救世主となるのか?
スクラム導入に向けて:スクラムは救世主となるのか?
 
GitHub Appsの作り方
GitHub Appsの作り方GitHub Appsの作り方
GitHub Appsの作り方
 
Railsモデル設計ケーススタディ
Railsモデル設計ケーススタディRailsモデル設計ケーススタディ
Railsモデル設計ケーススタディ
 
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
 
Service workerとwebプッシュ通知
Service workerとwebプッシュ通知Service workerとwebプッシュ通知
Service workerとwebプッシュ通知
 
良いプログラマーとは
良いプログラマーとは良いプログラマーとは
良いプログラマーとは
 

Último

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Último (9)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

今さらながらRSpecに入門してみた