狠狠撸

狠狠撸Share a Scribd company logo
1
2
Railsで機能追加するときの
開発の進め方を話します
3
自己紹介
名前: 神速
GitHub: @sinsoku (アイコン右上)
Twitter: @sinsoku_listy (アイコン右下)
Rails歴: それなり
仕事: Railsエンジニア スクラムマスター
4
!
仕事の進め方
1. 要望を聞く
2. 仕様を考える
3. 提案する
4. 実装して、動作確認する
5
1. 要望を聞く
6
!"
要望の例
架空の名刺管理サービスSevenで、上司が挙げた要望を例にして
話します。
?
?
管理している名刺データをcsvでダウンロードしたい
?
?
自分が渡した名刺を登録したユーザーを探したい
?
?
名刺を役職で検索したい
? ...etc
7
「なぜ?」を聞いて目的を探る
8
なぜcsvでダウンロードしたいのか?
? PCにもバックアップを残しておきたい
? 他社サービスへのデータ移行が簡単になる
? え、退会しやすくするの?
!
? スプレッドシートでデータ分析できる
? データ分析するユーザーって何%います?
9
なぜcsvでダウンロードしたいのか?
?
!
PCにもバックアップを残しておきたい
?
"
他社サービスへのデータ移行が簡単になる
? え、退会しやすくするの?
#
?
"
スプレッドシートでデータ分析できる
? データ分析するユーザーって何%います?
10
2. 仕様を考える
11
ざっくりした流れ
1. 目的を満たす機能を考える
? 目的: PCにもバックアップを残しておきたい
2. 画面イメージを作る
3. URL設計を考える
4. モデルとDBの設計をする
12
雑な画面イメージA(デモ)
13
雑な実装イメージA
class BusinessCardsController < ApplicationController
def index
respond_to do |format|
format.html { ... }
format.csv { ... } # こんなので実装できそう
end
end
end
14
名刺が多いと遅くなりそう
15
雑な画面イメージB(デモ)
16
雑な実装イメージB
class CardExportingsController < ApplicationController
def index
@card_exports = current_user.card_exportings.all
end
def create
@card_export = CardExporting.new(card_exporting_params)
@card_export.user_id = current_user.id
if @card_export.save
# 非同期処理でcsvのダウンロード準備をする
CardExportingJob.perform_later(@card_export)
redirect_to card_exporting_path(@card_export)
else
render :new
end
end
end
17
雑な非同期処理B
class CardExportingJob < ApplicationJob
def perform(card_export)
data = card_export.to_csv
client = Aws::S3::Client.new
status = client.upload(data) ? :success : :failed
card_export.update(status: status)
end
end
18
目的: PCにもバックアップを残しておきたい
19
AWS S3に保存する方が楽??
20
雑なイメージC(デモ)
21
3. 提案する
22
顧客と交渉する
1. AWS S3に保存する案
2. csvのダウンロード(遅)
3. csvのダウンロード(速)
開発の大変さやプロダクトの状況、相手の期待値を考慮して交渉
する。
23
顧客と交渉する
1. AWS S3に保存する案
2. csvのダウンロード(遅)
3. csvのダウンロード(速)
全ての提案を見せるのが最善とは限らない。
24
4. 実装して、動作確認する
25
簡単なので省略?
26
結論
仕様を決める >> コードを書く
ご静聴ありがとうございました
27
Ad

Recommended

趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方
Koichi Ota
?
Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例
Koichi Ota
?
2017/02/18冲第5回奥辞谤诲叠别苍肠丑山口冲尝罢
2017/02/18冲第5回奥辞谤诲叠别苍肠丑山口冲尝罢
Takeshi Furusato
?
ヘルシーフ?ロク?ラマ?翻訳と実践
ヘルシーフ?ロク?ラマ?翻訳と実践
Ryuji Tamagawa
?
Works of site reliability engineer
Works of site reliability engineer
Shohei Kobayashi
?
ソフトウェア开発が好きだ
ソフトウェア开発が好きだ
Koichi Ota
?
ヤマハルーターとクラウドを痴笔狈で繋いで顿补补厂环境を构筑しよう
ヤマハルーターとクラウドを痴笔狈で繋いで顿补补厂环境を构筑しよう
Yasutaka Hamada
?
搁贰厂罢と搁补颈濒蝉スタイル
搁贰厂罢と搁补颈濒蝉スタイル
Toru Kawamura
?
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
Michihito Shigemura
?
NoNoSQL
NoNoSQL
Yuichiro Ebihara
?
20191030 RPA makes us Anything.
20191030 RPA makes us Anything.
riscurred
?
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
Nao Minami
?
Cognitive serviceのすゝめ
Cognitive serviceのすゝめ
Tsubasa Yoshino
?
惭颈测补锄补办颈流蝉辩濒
惭颈测补锄补办颈流蝉辩濒
hafuu
?
データベース2.0
データベース2.0
Shuichi Takaku
?
Rails Controller Fundamentals
Rails Controller Fundamentals
Takashi SAKAGUCHI
?
そんな装备で大丈夫か?
そんな装备で大丈夫か?
2celeb
?
はし?めての Rails アフ?リ開発
はし?めての Rails アフ?リ開発
n-fukidome
?
Rails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2edition
Satomi Tsujita
?
フレームワーク品評会 Ruby on Rails #crossjp
フレームワーク品評会 Ruby on Rails #crossjp
Shiro Fukuda
?
食べログ流 - Rails Upgrade Practices
食べログ流 - Rails Upgrade Practices
Kaito Minatoya
?
nomlab_okayamaruby_slide
nomlab_okayamaruby_slide
nomlab
?
【入门】3时间でアプリ公开!ゼロからのプログラミング搁补颈濒蝉讲座
【入门】3时间でアプリ公开!ゼロからのプログラミング搁补颈濒蝉讲座
DIVE INTO CODE Corp.
?
nomlab_okayamaruby_subslide
nomlab_okayamaruby_subslide
nomlab
?
Rails初心者レッスン lesson2 3edition
Rails初心者レッスン lesson2 3edition
Satomi Tsujita
?
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
DIVE INTO CODE Corp.
?
搁补颈濒蝉ハイパー実践讲座-第35回狈补颁濒勉强会
搁补颈濒蝉ハイパー実践讲座-第35回狈补颁濒勉强会
Narihiro Nakamura
?
【勉強会】 はし?めてのRuby on Rails 4入門
【勉強会】 はし?めてのRuby on Rails 4入門
Yuta Nakamura
?
リソースモデリングパターンの提案 #sendagayarb
リソースモデリングパターンの提案 #sendagayarb
Toru Kawamura
?

More Related Content

What's hot (8)

軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
Michihito Shigemura
?
NoNoSQL
NoNoSQL
Yuichiro Ebihara
?
20191030 RPA makes us Anything.
20191030 RPA makes us Anything.
riscurred
?
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
Nao Minami
?
Cognitive serviceのすゝめ
Cognitive serviceのすゝめ
Tsubasa Yoshino
?
惭颈测补锄补办颈流蝉辩濒
惭颈测补锄补办颈流蝉辩濒
hafuu
?
データベース2.0
データベース2.0
Shuichi Takaku
?
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
Michihito Shigemura
?
20191030 RPA makes us Anything.
20191030 RPA makes us Anything.
riscurred
?
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
Nao Minami
?
Cognitive serviceのすゝめ
Cognitive serviceのすゝめ
Tsubasa Yoshino
?
惭颈测补锄补办颈流蝉辩濒
惭颈测补锄补办颈流蝉辩濒
hafuu
?

Similar to ENGINEER WORK!! (20)

Rails Controller Fundamentals
Rails Controller Fundamentals
Takashi SAKAGUCHI
?
そんな装备で大丈夫か?
そんな装备で大丈夫か?
2celeb
?
はし?めての Rails アフ?リ開発
はし?めての Rails アフ?リ開発
n-fukidome
?
Rails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2edition
Satomi Tsujita
?
フレームワーク品評会 Ruby on Rails #crossjp
フレームワーク品評会 Ruby on Rails #crossjp
Shiro Fukuda
?
食べログ流 - Rails Upgrade Practices
食べログ流 - Rails Upgrade Practices
Kaito Minatoya
?
nomlab_okayamaruby_slide
nomlab_okayamaruby_slide
nomlab
?
【入门】3时间でアプリ公开!ゼロからのプログラミング搁补颈濒蝉讲座
【入门】3时间でアプリ公开!ゼロからのプログラミング搁补颈濒蝉讲座
DIVE INTO CODE Corp.
?
nomlab_okayamaruby_subslide
nomlab_okayamaruby_subslide
nomlab
?
Rails初心者レッスン lesson2 3edition
Rails初心者レッスン lesson2 3edition
Satomi Tsujita
?
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
DIVE INTO CODE Corp.
?
搁补颈濒蝉ハイパー実践讲座-第35回狈补颁濒勉强会
搁补颈濒蝉ハイパー実践讲座-第35回狈补颁濒勉强会
Narihiro Nakamura
?
【勉強会】 はし?めてのRuby on Rails 4入門
【勉強会】 はし?めてのRuby on Rails 4入門
Yuta Nakamura
?
リソースモデリングパターンの提案 #sendagayarb
リソースモデリングパターンの提案 #sendagayarb
Toru Kawamura
?
クライアントの要望にこたえる奥别产サービス开発 ~「らせん型ワークフロー」のススメ~
クライアントの要望にこたえる奥别产サービス开発 ~「らせん型ワークフロー」のススメ~
Mayuko Sekiya
?
Ruby on Rails Tutorial Chapter8-10
Ruby on Rails Tutorial Chapter8-10
Sea Mountain
?
Ruby on Rails Tutorial
Ruby on Rails Tutorial
Ken Iiboshi
?
Ruby on Rails Overview
Ruby on Rails Overview
Koki Shimizu
?
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
Sea Mountain
?
そんな装备で大丈夫か?
そんな装备で大丈夫か?
2celeb
?
はし?めての Rails アフ?リ開発
はし?めての Rails アフ?リ開発
n-fukidome
?
Rails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2edition
Satomi Tsujita
?
フレームワーク品評会 Ruby on Rails #crossjp
フレームワーク品評会 Ruby on Rails #crossjp
Shiro Fukuda
?
食べログ流 - Rails Upgrade Practices
食べログ流 - Rails Upgrade Practices
Kaito Minatoya
?
nomlab_okayamaruby_slide
nomlab_okayamaruby_slide
nomlab
?
【入门】3时间でアプリ公开!ゼロからのプログラミング搁补颈濒蝉讲座
【入门】3时间でアプリ公开!ゼロからのプログラミング搁补颈濒蝉讲座
DIVE INTO CODE Corp.
?
nomlab_okayamaruby_subslide
nomlab_okayamaruby_subslide
nomlab
?
Rails初心者レッスン lesson2 3edition
Rails初心者レッスン lesson2 3edition
Satomi Tsujita
?
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
DIVE INTO CODE Corp.
?
搁补颈濒蝉ハイパー実践讲座-第35回狈补颁濒勉强会
搁补颈濒蝉ハイパー実践讲座-第35回狈补颁濒勉强会
Narihiro Nakamura
?
【勉強会】 はし?めてのRuby on Rails 4入門
【勉強会】 はし?めてのRuby on Rails 4入門
Yuta Nakamura
?
リソースモデリングパターンの提案 #sendagayarb
リソースモデリングパターンの提案 #sendagayarb
Toru Kawamura
?
クライアントの要望にこたえる奥别产サービス开発 ~「らせん型ワークフロー」のススメ~
クライアントの要望にこたえる奥别产サービス开発 ~「らせん型ワークフロー」のススメ~
Mayuko Sekiya
?
Ruby on Rails Tutorial Chapter8-10
Ruby on Rails Tutorial Chapter8-10
Sea Mountain
?
Ruby on Rails Tutorial
Ruby on Rails Tutorial
Ken Iiboshi
?
Ruby on Rails Overview
Ruby on Rails Overview
Koki Shimizu
?
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
Sea Mountain
?
Ad

More from sinsoku listy (20)

搁补颈濒蝉6にいつ上げるか?
搁补颈濒蝉6にいつ上げるか?
sinsoku listy
?
Rails Testing on Fargate
Rails Testing on Fargate
sinsoku listy
?
Search Form for Rails
Search Form for Rails
sinsoku listy
?
自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-
sinsoku listy
?
毎日驳别尘をアップグレードする生活
毎日驳别尘をアップグレードする生活
sinsoku listy
?
Rails 5.2: credentials
Rails 5.2: credentials
sinsoku listy
?
Randomly Failing Specs
Randomly Failing Specs
sinsoku listy
?
技术的负债とリファクタリンク?
技术的负债とリファクタリンク?
sinsoku listy
?
Git 初心者講座 by forkwell
Git 初心者講座 by forkwell
sinsoku listy
?
Swift on Docker
Swift on Docker
sinsoku listy
?
贰厂2015のカハ?レッシ?计测
贰厂2015のカハ?レッシ?计测
sinsoku listy
?
颁厂厂のカハ?レッシ?ツール
颁厂厂のカハ?レッシ?ツール
sinsoku listy
?
本当にあった怖い話 7つの幽霊 7つの成仏
本当にあった怖い話 7つの幽霊 7つの成仏
sinsoku listy
?
础飞蝉て?飞颈苍诲辞飞蝉ケ?ームを动かす
础飞蝉て?飞颈苍诲辞飞蝉ケ?ームを动かす
sinsoku listy
?
Action pack variantsの話
Action pack variantsの話
sinsoku listy
?
LT_Gitのfast fowardと継続的テ?リハ?リー
LT_Gitのfast fowardと継続的テ?リハ?リー
sinsoku listy
?
バージョン管理と骋颈迟
バージョン管理と骋颈迟
sinsoku listy
?
骋颈迟天空闘技场冲ハンズオン
骋颈迟天空闘技场冲ハンズオン
sinsoku listy
?
顿痴颁厂と骋颈迟の基础
顿痴颁厂と骋颈迟の基础
sinsoku listy
?
20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare
sinsoku listy
?
搁补颈濒蝉6にいつ上げるか?
搁补颈濒蝉6にいつ上げるか?
sinsoku listy
?
Rails Testing on Fargate
Rails Testing on Fargate
sinsoku listy
?
自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-
sinsoku listy
?
毎日驳别尘をアップグレードする生活
毎日驳别尘をアップグレードする生活
sinsoku listy
?
技术的负债とリファクタリンク?
技术的负债とリファクタリンク?
sinsoku listy
?
Git 初心者講座 by forkwell
Git 初心者講座 by forkwell
sinsoku listy
?
贰厂2015のカハ?レッシ?计测
贰厂2015のカハ?レッシ?计测
sinsoku listy
?
颁厂厂のカハ?レッシ?ツール
颁厂厂のカハ?レッシ?ツール
sinsoku listy
?
本当にあった怖い話 7つの幽霊 7つの成仏
本当にあった怖い話 7つの幽霊 7つの成仏
sinsoku listy
?
础飞蝉て?飞颈苍诲辞飞蝉ケ?ームを动かす
础飞蝉て?飞颈苍诲辞飞蝉ケ?ームを动かす
sinsoku listy
?
Action pack variantsの話
Action pack variantsの話
sinsoku listy
?
LT_Gitのfast fowardと継続的テ?リハ?リー
LT_Gitのfast fowardと継続的テ?リハ?リー
sinsoku listy
?
バージョン管理と骋颈迟
バージョン管理と骋颈迟
sinsoku listy
?
骋颈迟天空闘技场冲ハンズオン
骋颈迟天空闘技场冲ハンズオン
sinsoku listy
?
顿痴颁厂と骋颈迟の基础
顿痴颁厂と骋颈迟の基础
sinsoku listy
?
20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare
sinsoku listy
?
Ad

ENGINEER WORK!!