SlideShare a Scribd company logo
1 of 17
Download to read offline
株式会社エクストーン
下っ端
豊田陽一
  Turnip
◦  概要説明
  外部テストツール
  実践的なお話
◦  Turnip + Capybara + ?
  Capybara-webkit
  PhantomJS + Poltergeist
  Selenium WebDriver
  Ruby第三世代テストツール
◦  第一世代:Test::Unit
◦  第二世代:Rspec
◦  第三世代:Gherkin (Cucumber / Turnip)
  作者
◦  Jonas Nicklas さん
◦  Capybara開発者
  Cucumberが微妙に使われてない
◦  Rspecと完全に別系統のテストとして存
在している
◦  ステップファイル書くのが大変
  正規表現の箇所とか特に
◦  関連する技術大杉
  CapybaraとかSeleniumとか、なんとかJSと
か、どれがなにやってるのかさっぱり分からん
  この部分は別にTurnipでも解決しないですw
  ステップ記述に正規表現を使わない
  RSpec内で実行可能
Cucumber Turnip
When(/^"([^"]*)"ページを表示する$/ do |page|
visit path_to page
end
When /^"([^"]*)"に"([^"]*)"と入力する$/ do |field, value|
fills_in(field, :with => value)
end
When /^"([^"]*)"ボタンをクリックする$/ do |button|
click_button(button)
end
Then /^"([^"]*)"と表示されていること$/ do |text|
response.body.should =~
/#{Regexp.escape(text)}/m
end
step “:page を表示する” do |page|
visit path_to page
end
step “:field に :value と入力する” do |field, value|
fills_in(field, :with => value)
end
step “:button ボタンをクリックする” do |button|
click_button(button)
end
step :text と表示されていること” do |text|
response.body.should =~
/#{Regexp.escape(text)}/m
end
  ブラウザテスト
◦  Turnip
  テストを記述するためのライブラリ
◦  Capybara
  Webブラウザを操作するためのライブラリ
  クリックする、特定の要素を取得する、etc.
  ドライバによって、操作対象のブラウザを選ぶ
  Capybaraのドライバ
◦  Capybara-webkit
  Rubyから操作可能なヘッドレスなWebkit
  Capybaraのドライバ
◦  Poltergeist
  PhantomJSを叩くためのドライバ
◦  Selenium WebDriver
  Seleniumサーバを叩くためのドライバ
  Selenium経由で実際のブラウザを叩くことが
出来る
  以下の構成で実現可能
◦  Turnip + Capybara + Selenium
◦  Android上で動作するSeleniumサーバ
  http://code.google.com/p/selenium/wiki/
AndroidDrive
◦  adb
  Android上のSeleniumサーバにテストサー
バーへのリクエストをフォワードする
  テストしたい実機にインストールする
◦  エミュレータでも問題なし
◦  手順
  http://code.google.com/p/selenium/wiki/
AndroidDriver
  上記サイトの Install th WebDriver APK に書
いてある
◦  http://localhost:8080/を叩いて何かし
ら表示されたら準備完了
  Capybara Driverの定義
◦  spec_helper.rbあたりに書くと良さげ
Capybara.register_driver :remote_android do |app|
caps = Selenium::WebDriver::Remote::Capabilities.chrome
url = "http://localhost:8080/wd/hub"
opts = { desired_capabilities: caps, browser: :remote, url: url }
Capybara::Selenium::Driver.new(app, opts)
end
NFC.pptx
機能: 登録関連(スマートフォン版)
背景:
前提 Android(実機)で接続
シナリオ: ログイン前にトップページを表示
もし "/" を表示する
ならば "smartphone/トップページ(未ログイン)" にス
ナップショットを保存
シナリオ: ログイン
前提 "/" を表示する
もし "マイページ" をクリックする
ならば "/login" へ遷移する
ならば "smartphone/ログイン" にスナップショットを保存
step "Android(実機)で接続" do
Capybara.default_driver = :remote_android
end
step ":path を表示する" do |path|
visit path
end
step ":name にスナップショットを保存" do |name|
page.save_screenshot(
File.expand_path("../../../snapshot/#{name}.png",
__FILE__)
)
end
step ":next_page へ遷移する" do |next_page|
page.html.should match /#{next_page}/
end
$ bundle exec rspec
  Android実機側へのポートフォワード
◦  127.0.0.1:8080 -> (Android):8080
◦  外部から叩けない
  (テストサーバ) -> (Androidエミュレータホス
ト) -> (Androidエミュレータ)が出来ない
  実際にIPアドレスを付与してある実機とかなら
直接叩けば出来るかも(まだ試してない)
  Capybaraのドライバによって出来る
ことが違う
Poltergeistでテスト動作確認
↓
Seleniumで実機テストする
↓
(́・ω・`) ショボーン
◦  慣れましょう
  実機の自動テストが出来た
◦  Turnipあんまり関係ないw
  それはそれとしてTurnip書きやすい
◦  自動テストの環境を整えるきっかけには
なった
◦  Capybaraが2.0になって進化してた
  要素のマッチングは厳密にしないとエラーが出
るようになった
  要素の名前付けを意識する良い機会になるかも

More Related Content

What's hot

Great Ideas in GraalVM
Great Ideas in GraalVMGreat Ideas in GraalVM
Great Ideas in GraalVMKoichi Sakata
 
Seurity Camp Award 2016
Seurity Camp Award 2016 Seurity Camp Award 2016
Seurity Camp Award 2016 slankdev
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうKoichi Sakata
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会slankdev
 
Clean Architectureで設計してRxJSを使った話
Clean Architectureで設計してRxJSを使った話Clean Architectureで設計してRxJSを使った話
Clean Architectureで設計してRxJSを使った話_kondei
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualYuji Kubota
 
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料slankdev
 
スレッドダンプの読み方
スレッドダンプの読み方スレッドダンプの読み方
スレッドダンプの読み方Funato Takashi
 
OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT slankdev
 
サイボウズ・ラボユース中間報告会
サイボウズ・ラボユース中間報告会サイボウズ・ラボユース中間報告会
サイボウズ・ラボユース中間報告会slankdev
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」y torazuka
 
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係yy yank
 
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみたPhpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみたAkira Kaneda
 
Seccamp 2016 チューター成果報告
Seccamp 2016 チューター成果報告Seccamp 2016 チューター成果報告
Seccamp 2016 チューター成果報告slankdev
 
libpgenでパケット操作
libpgenでパケット操作libpgenでパケット操作
libpgenでパケット操作slankdev
 
Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011Andrew Grimm
 

What's hot (20)

Great Ideas in GraalVM
Great Ideas in GraalVMGreat Ideas in GraalVM
Great Ideas in GraalVM
 
Seurity Camp Award 2016
Seurity Camp Award 2016 Seurity Camp Award 2016
Seurity Camp Award 2016
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会
 
Clean Architectureで設計してRxJSを使った話
Clean Architectureで設計してRxJSを使った話Clean Architectureで設計してRxJSを使った話
Clean Architectureで設計してRxJSを使った話
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
 
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料
 
スレッドダンプの読み方
スレッドダンプの読み方スレッドダンプの読み方
スレッドダンプの読み方
 
OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT
 
Javaに這いよる.NET
Javaに這いよる.NETJavaに這いよる.NET
Javaに這いよる.NET
 
サイボウズ・ラボユース中間報告会
サイボウズ・ラボユース中間報告会サイボウズ・ラボユース中間報告会
サイボウズ・ラボユース中間報告会
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
 
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
 
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみたPhpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
 
Seccamp 2016 チューター成果報告
Seccamp 2016 チューター成果報告Seccamp 2016 チューター成果報告
Seccamp 2016 チューター成果報告
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
 
Ruby紹介
Ruby紹介Ruby紹介
Ruby紹介
 
Ruby24
Ruby24Ruby24
Ruby24
 
libpgenでパケット操作
libpgenでパケット操作libpgenでパケット操作
libpgenでパケット操作
 
Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011
 

Viewers also liked

Strategie editoriali. Il caso dei libri abbinati ai giornali
Strategie editoriali. Il caso dei libri abbinati ai giornaliStrategie editoriali. Il caso dei libri abbinati ai giornali
Strategie editoriali. Il caso dei libri abbinati ai giornaliLorenzo Fabbri
 
Github時代のgitのはなし
Github時代のgitのはなしGithub時代のgitのはなし
Github時代のgitのはなしYoichi Toyota
 
Erlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみたErlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみたYoichi Toyota
 
Garageをもうちょっと触ってみた
Garageをもうちょっと触ってみたGarageをもうちょっと触ってみた
Garageをもうちょっと触ってみたYoichi Toyota
 
Aws s3+cloud frontでウェブサイトを構築してみた
Aws s3+cloud frontでウェブサイトを構築してみたAws s3+cloud frontでウェブサイトを構築してみた
Aws s3+cloud frontでウェブサイトを構築してみたYoichi Toyota
 
Garageを触ってみた
Garageを触ってみたGarageを触ってみた
Garageを触ってみたYoichi Toyota
 
Rails開発におけるキャッシュあれこれ
Rails開発におけるキャッシュあれこれRails開発におけるキャッシュあれこれ
Rails開発におけるキャッシュあれこれYoichi Toyota
 
Elastic searchをrailsから使ってみた
Elastic searchをrailsから使ってみたElastic searchをrailsから使ってみた
Elastic searchをrailsから使ってみたYoichi Toyota
 
Werckerを使ってみた
Werckerを使ってみたWerckerを使ってみた
Werckerを使ってみたYoichi Toyota
 
Amazon api gatewayで web apiをサーバーレスで構築しよう
Amazon api gatewayで web apiをサーバーレスで構築しようAmazon api gatewayで web apiをサーバーレスで構築しよう
Amazon api gatewayで web apiをサーバーレスで構築しようYoichi Toyota
 
Principi di marketing editoriale
Principi di marketing editorialePrincipi di marketing editoriale
Principi di marketing editorialeLorenzo Fabbri
 
ActionCableを触ってみた
ActionCableを触ってみたActionCableを触ってみた
ActionCableを触ってみたYoichi Toyota
 
Awsをちゃんと使ってみた 監視編
Awsをちゃんと使ってみた   監視編Awsをちゃんと使ってみた   監視編
Awsをちゃんと使ってみた 監視編Yoichi Toyota
 
React starter-kitでとっとと始めるisomorphic開発
React starter-kitでとっとと始めるisomorphic開発React starter-kitでとっとと始めるisomorphic開発
React starter-kitでとっとと始めるisomorphic開発Yoichi Toyota
 
Erlangを触ってみた
Erlangを触ってみたErlangを触ってみた
Erlangを触ってみたYoichi Toyota
 
Benvenuti nella tv_al_tempo_di_internet_tv_zap
Benvenuti nella tv_al_tempo_di_internet_tv_zapBenvenuti nella tv_al_tempo_di_internet_tv_zap
Benvenuti nella tv_al_tempo_di_internet_tv_zapLorenzo Fabbri
 
Elementi di marketing strategico
Elementi di marketing strategicoElementi di marketing strategico
Elementi di marketing strategicoLorenzo Fabbri
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかYoichi Toyota
 

Viewers also liked (18)

Strategie editoriali. Il caso dei libri abbinati ai giornali
Strategie editoriali. Il caso dei libri abbinati ai giornaliStrategie editoriali. Il caso dei libri abbinati ai giornali
Strategie editoriali. Il caso dei libri abbinati ai giornali
 
Github時代のgitのはなし
Github時代のgitのはなしGithub時代のgitのはなし
Github時代のgitのはなし
 
Erlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみたErlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみた
 
Garageをもうちょっと触ってみた
Garageをもうちょっと触ってみたGarageをもうちょっと触ってみた
Garageをもうちょっと触ってみた
 
Aws s3+cloud frontでウェブサイトを構築してみた
Aws s3+cloud frontでウェブサイトを構築してみたAws s3+cloud frontでウェブサイトを構築してみた
Aws s3+cloud frontでウェブサイトを構築してみた
 
Garageを触ってみた
Garageを触ってみたGarageを触ってみた
Garageを触ってみた
 
Rails開発におけるキャッシュあれこれ
Rails開発におけるキャッシュあれこれRails開発におけるキャッシュあれこれ
Rails開発におけるキャッシュあれこれ
 
Elastic searchをrailsから使ってみた
Elastic searchをrailsから使ってみたElastic searchをrailsから使ってみた
Elastic searchをrailsから使ってみた
 
Werckerを使ってみた
Werckerを使ってみたWerckerを使ってみた
Werckerを使ってみた
 
Amazon api gatewayで web apiをサーバーレスで構築しよう
Amazon api gatewayで web apiをサーバーレスで構築しようAmazon api gatewayで web apiをサーバーレスで構築しよう
Amazon api gatewayで web apiをサーバーレスで構築しよう
 
Principi di marketing editoriale
Principi di marketing editorialePrincipi di marketing editoriale
Principi di marketing editoriale
 
ActionCableを触ってみた
ActionCableを触ってみたActionCableを触ってみた
ActionCableを触ってみた
 
Awsをちゃんと使ってみた 監視編
Awsをちゃんと使ってみた   監視編Awsをちゃんと使ってみた   監視編
Awsをちゃんと使ってみた 監視編
 
React starter-kitでとっとと始めるisomorphic開発
React starter-kitでとっとと始めるisomorphic開発React starter-kitでとっとと始めるisomorphic開発
React starter-kitでとっとと始めるisomorphic開発
 
Erlangを触ってみた
Erlangを触ってみたErlangを触ってみた
Erlangを触ってみた
 
Benvenuti nella tv_al_tempo_di_internet_tv_zap
Benvenuti nella tv_al_tempo_di_internet_tv_zapBenvenuti nella tv_al_tempo_di_internet_tv_zap
Benvenuti nella tv_al_tempo_di_internet_tv_zap
 
Elementi di marketing strategico
Elementi di marketing strategicoElementi di marketing strategico
Elementi di marketing strategico
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
 

Similar to Turnip

Testing in Sinatra
Testing in SinatraTesting in Sinatra
Testing in SinatraUchio Kondo
 
RubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフRubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフNarihiro Nakamura
 
20180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol120180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol1Keisuke Nakata
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews, Inc.
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活をRyunosuke SATO
 
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2Mitsutoshi Nakano
 

Similar to Turnip (6)

Testing in Sinatra
Testing in SinatraTesting in Sinatra
Testing in Sinatra
 
RubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフRubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフ
 
20180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol120180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol1
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活を
 
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
 

More from Yoichi Toyota

超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をするYoichi Toyota
 
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押しジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押しYoichi Toyota
 
ライブラリを作る思考回路
ライブラリを作る思考回路ライブラリを作る思考回路
ライブラリを作る思考回路Yoichi Toyota
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技Yoichi Toyota
 
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計Yoichi Toyota
 
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないことオブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないことYoichi Toyota
 
Ruby is comming ractor編
Ruby is comming ractor編Ruby is comming ractor編
Ruby is comming ractor編Yoichi Toyota
 
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねんarray.map(&:key)ってなんやねん
array.map(&:key)ってなんやねんYoichi Toyota
 
はじめてのPull Request
はじめてのPull RequestはじめてのPull Request
はじめてのPull RequestYoichi Toyota
 
Railsの開発環境作るぞ
Railsの開発環境作るぞRailsの開発環境作るぞ
Railsの開発環境作るぞYoichi Toyota
 
jqで極めるシェル芸の話
jqで極めるシェル芸の話jqで極めるシェル芸の話
jqで極めるシェル芸の話Yoichi Toyota
 
足し算をつくろう
足し算をつくろう足し算をつくろう
足し算をつくろうYoichi Toyota
 
React Hooksでカスタムフックをつくろう
React HooksでカスタムフックをつくろうReact Hooksでカスタムフックをつくろう
React HooksでカスタムフックをつくろうYoichi Toyota
 
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかYoichi Toyota
 
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方Yoichi Toyota
 
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方Yoichi Toyota
 
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活Yoichi Toyota
 
Docker in production
Docker in productionDocker in production
Docker in productionYoichi Toyota
 
How to fight against “full scratch disease”
How to fight against  “full scratch disease”How to fight against  “full scratch disease”
How to fight against “full scratch disease”Yoichi Toyota
 
Amazon lexを触ってみた
Amazon lexを触ってみたAmazon lexを触ってみた
Amazon lexを触ってみたYoichi Toyota
 

More from Yoichi Toyota (20)

超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする
 
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押しジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押し
 
ライブラリを作る思考回路
ライブラリを作る思考回路ライブラリを作る思考回路
ライブラリを作る思考回路
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
 
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
 
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないことオブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
 
Ruby is comming ractor編
Ruby is comming ractor編Ruby is comming ractor編
Ruby is comming ractor編
 
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねんarray.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
 
はじめてのPull Request
はじめてのPull RequestはじめてのPull Request
はじめてのPull Request
 
Railsの開発環境作るぞ
Railsの開発環境作るぞRailsの開発環境作るぞ
Railsの開発環境作るぞ
 
jqで極めるシェル芸の話
jqで極めるシェル芸の話jqで極めるシェル芸の話
jqで極めるシェル芸の話
 
足し算をつくろう
足し算をつくろう足し算をつくろう
足し算をつくろう
 
React Hooksでカスタムフックをつくろう
React HooksでカスタムフックをつくろうReact Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
 
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
 
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
 
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
 
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
 
Docker in production
Docker in productionDocker in production
Docker in production
 
How to fight against “full scratch disease”
How to fight against  “full scratch disease”How to fight against  “full scratch disease”
How to fight against “full scratch disease”
 
Amazon lexを触ってみた
Amazon lexを触ってみたAmazon lexを触ってみた
Amazon lexを触ってみた
 

Turnip