SlideShare a Scribd company logo
1 of 34
いこーよチケットサービスを
Rails6にアップデートしました
自己紹介
・中村 雅行(なかむら まさゆき)
・Sier in 東京(6年くらい)
・Webエンジニア in London(9年くらい)
・市役所職員 in 茨城県某市(2年半くらい)
・Webエンジニア@五反田(1年ちょっと) ← 今ここ
アクトインディ株式会社
https://actindi.net/
🍻cheers!
5・22リリース!
ついに、いこーよで
Webチケットが買えるように!
リリース時
2.6.3
5.2.3
Rails6がそろそろリリースされるってよ。
やっててよかったこと
・テストをちゃんと書く
・Gemのアップデート
SimpleCov
https://github.com/colszowka/simplecov
Amazon SNSGithub Lambda
CodeBuild
CouldWatchEventLambdaSlack
やっててよかったこと
・テストをちゃんと書く
・Gemのアップデート
・更新確認。
・更新されてたらRedmineでチケット切る。
・コミットログ、リリースノートを確認する。
・テストする。
・落ちたら、通過するように修正する。
・動作確認を実行する。
手動でやるとまぢで大変
😩
開発が忙しくて忘れる
😫
自動化しよう!
各Gem個別ブランチ 動作検証ブランチ masterブランチ
修正
pull push
Rails6
アップデート成功!
いや、ちょっと嘘。
テストが盛大に落ちた
😢
enum
😭
まとめ
・テストは思い切る時の安心材料
・なるべく効率的な仕組み化
参考
アクトインディ開発者ブログ
https://tech.actindi.net/
ご静聴ありがとうございました。

More Related Content

What's hot

Ruby/PureImage: 第2回岡山Ruby会議LT
Ruby/PureImage: 第2回岡山Ruby会議LTRuby/PureImage: 第2回岡山Ruby会議LT
Ruby/PureImage: 第2回岡山Ruby会議LTNISHIMOTO Keisuke
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたしRyunosuke SATO
 
RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方Satomi Tsujita
 
PWAをWebサービスに導入した話
PWAをWebサービスに導入した話PWAをWebサービスに導入した話
PWAをWebサービスに導入した話dobby618
 
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始めToshiaki Aoike
 
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるRailsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるHirata Tomoko
 
WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築Hirata Tomoko
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメTakafumi ONAKA
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースよしだ あつし
 
在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選Tomoe Sawai
 
Rubyコミッタのいる開発いい話
Rubyコミッタのいる開発いい話Rubyコミッタのいる開発いい話
Rubyコミッタのいる開発いい話Kenichi Murahashi
 
WordBench Kyoto & Osaka Gutenbergで作るランディングページ
WordBench Kyoto & Osaka Gutenbergで作るランディングページWordBench Kyoto & Osaka Gutenbergで作るランディングページ
WordBench Kyoto & Osaka Gutenbergで作るランディングページtakashi ono
 

What's hot (16)

Ruby/PureImage: 第2回岡山Ruby会議LT
Ruby/PureImage: 第2回岡山Ruby会議LTRuby/PureImage: 第2回岡山Ruby会議LT
Ruby/PureImage: 第2回岡山Ruby会議LT
 
RSpecしぐさ
RSpecしぐさRSpecしぐさ
RSpecしぐさ
 
Wt2015
Wt2015Wt2015
Wt2015
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方
 
PWAをWebサービスに導入した話
PWAをWebサービスに導入した話PWAをWebサービスに導入した話
PWAをWebサービスに導入した話
 
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
 
片手間JS on Rails
片手間JS on Rails片手間JS on Rails
片手間JS on Rails
 
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるRailsのフロントエンド開発を考える
Railsのフロントエンド開発を考える
 
WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメ
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
 
在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選
 
Gemの話 紹介編
Gemの話 紹介編Gemの話 紹介編
Gemの話 紹介編
 
Rubyコミッタのいる開発いい話
Rubyコミッタのいる開発いい話Rubyコミッタのいる開発いい話
Rubyコミッタのいる開発いい話
 
WordBench Kyoto & Osaka Gutenbergで作るランディングページ
WordBench Kyoto & Osaka Gutenbergで作るランディングページWordBench Kyoto & Osaka Gutenbergで作るランディングページ
WordBench Kyoto & Osaka Gutenbergで作るランディングページ
 

Recently uploaded

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

Recently uploaded (9)

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

Rails devs bb lt

Editor's Notes

  1. みなさん、こんばんわ。 いこーよチケットサービスをRails6にアップデートしましたということで、LTは始めたいと思います。まずは、 https://www.slideshare.net/sinsoku/gem-122656455 https://speakerdeck.com/masayoshi2018/wen-xi-karaban-nian-deruby-sinatra-rails-woxue-ndararen-sheng-bian-watuta-at-chong-nawa-rubyhui-yi-02?slide=25
  2. 自己紹介です。 中村雅行といいます。 新卒で都内にあるSier企業に6年くらいお世話になりました。 そのあと何を思ったか、会社をやめて渡英します。 そこで、オンラインショップの梱包作業のアルバイトに申し込んだら、Railsっていういけてるミドルウェアがあるから、一緒にやらない?って誘われて、エンジニアとして働くことになりました。で、9年くらいロンドンで働いてたんですけど、5年くらい前に帰国して、一回、市役所職員として働いてます。 でも、やっぱり、先生、コーディングがしたいです。ということになり。もう1度、エンジニアとして働くことになりました。 そんなブランクありのエンジニアを採用してくれたのが、
  3. アクトインディ株式会社という素晴らしい会社です。
  4. Cheers! はい、
  5. で、アクトインディでは、主に子育て世代向けに3つの情報サイトを運営していて、
  6. 今回、僕のいるチームではお出かけ情報サイトいこーよで、Webチケットが購入できるようにサービスリリースしました。その時点での環境が、
  7. rubyが2.6.3、railsが5.2.3でリリースしてます。ただ、GW周辺で、
  8. Rails6がそろそろリリースされるかもよ?的な話で周りがざわついていたので、Rails6でいっちゃうか、5.2にしておこうか、チーム内でもかなりざわざわしてました。 結果的に、Rails5.2でリリースしたのですが、Rails6が正式リリースされたらサクッとあげれるように準備しておこうということをサービスリリース後の目標の1つにしました。 今回は、その中で、やってきてよかったことを2つほど紹介したいと思います。
  9. まずは、テストをちゃんと書く。ということ。
  10. 僕らのチームはRSpecでテスコードを書いていて、SimpleCovでカバレッジを計測しています。 カバレッジの指標値は90%以上としています。
  11. まず、担当者がレビュー依頼を出す際にGithub上で「自動テスト対象」というラベルを貼ると、Codebuidが自動テストを回してくれます。
  12. テスト以外にも、rubocop、rails_best_practice、brakemanを実行させて、チーム内でコード規約が自動で保たれるような仕組みも導入しています。
  13. 規約に違反しているところが見つかると、github上にコメントを残してくれます。
  14. あまりにぬるいコードを書いていると、容赦ないツッコミが入ります。だいだい、50を越えると、ページを開くのも大変。みたいな結果になったりして苦労したことがありました。
  15. 結果はスラック上にも通知されるので、revieweeもreviewerもこの値を確認して、カバレッジが維持されているか確認しています。 前回よりも大きく下がっていたりすると、詳細を確認して実際ちゃんとテストコードが書かれて、パスしているかを確認します。
  16. 全体図はこんな感じです。まず、GithubからAmazonSNSへイベントを通知し、それをトリガーにしてLambdaがCodeBuildを起動します。 CodeBuildが終了すると、CloudWatchEventが、イベントを受けてLambdaがSlackに通知するといった流れになっています。この辺の詳しい設定などは後ほど紹介するアクトインディ開発者ブログに詳しく書かれているので興味のある方はのぞいてみてください。次に、
  17. サービスで使っているRails以外のGemのアップデートです。これは、
  18. 各Gemの更新確認。更新されてたら、作業チケットを切る、担当者がコミットログ、リリースノートを確認する、テストする、落ちたら通過するように修正す。動作確認を実行する。これを、
  19. 手動でやるとまぢで大変です。大変だし、
  20. 開発が忙しくて、更新するのを忘れます。なので、
  21. 自動化しよう!という結論に至りました。そこで、
  22. ぼくたちのチームは、dependabotというサービスを採用しました。dependabotは更新のあったgemをチェックしてくれて、更新があったら自動でプルリクを作成してくれます。実は、このdependabotの導入を検証してくれたのが、社内で一番新しいエンジニアさんなんですが、弊社では社歴とかに関係なく新しいことにチャレンジできる文化と、それに快くおっけーを出してくれるチームメーンバーなので、その辺も手前味噌ながら、いい会社だなぁとおもっています。で、dependabotなんですが、
  23. 僕らのチームは毎週、金曜日にアップデートチェックが走るような設定にしていて、そのタイミングで更新があったGemは自動でプルリクが作成され、自動テストが実行されるようになっています。
  24. 全体イメージはこんな感じです。 問題がなかったブランチに関しては、一旦、動作確認用のブランチに自動マージするようになっていて、問題があったブランチに関しては、リリースノートや変更内容のコミットログを確認し、テストが通過するように修正を行いプッシュし、動作検証ブランチにマージします。
  25. その後、動作確認用のブランチでrevieweeがまとめて動作確認を行い問題がなければ、レビュー依頼を出し、reviewerがレビューします。 こういったことを毎週繰り返すことで、
  26. 結果的に、他Gemと同様のプロセスで特に問題なくRails6へのアップデートに成功しました。
  27. とはいっても、やっぱり、少し引っかかったところがありました。まず、やはりRails6のアップデートブランチでは、
  28. テストが盛大に落ちました。でも、これは、
  29. rspec-railsのアップデートで解決してます。次に、
  30. enumのnegative scopeです。これは、
  31. Rails6から、negative scopeが採用されているので、該当箇所を修正しています。enumは以外と他でも使っていたのですが、僕らのチームでは影響範囲が少なかったので、助かりました。最後に、
  32. まとめです。 テストはやっぱりちゃんと書いておくと、「多分動くと思うからリリースしようぜ」的な思い切りが必要なときの1つの指標にもなるし、安心材料にもなり得るということ。 あとは、なるべく効率的な仕組み化を検討していくことはとても大事だなと実感しました。
  33. 今日、話した内容の具体的な設定やコードなどは、開発者ブログがあるので興味のある方はこちらも参考にしてみてください。 https://tech.actindi.net/2017/10/23/codebuild-rspec.html https://tech.actindi.net/2018/08/31/120906 https://tech.actindi.net/2019/06/21/181709