Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ENGINEER WORK!!

312 views

Published on

表参道.rb #45
https://omotesandorb.connpass.com/event/125126/

Published in: Internet
  • Be the first to comment

ENGINEER WORK!!

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

×