Slide 1

Slide 1 text

Ruby、一緒に成長しよう! 
 ~アップグレード奮闘記 ~ Hashino Mikiko

Slide 2

Slide 2 text

アジェンダ 
 - Findy Team+ 開発組織
 - Rubyアップグレード手順 概要 
 - 実際 アップグレード 
 - 遭遇した課題と解決方法 
 - さいごに


Slide 3

Slide 3 text

Hashino Mikiko / みっきー
 ファインディ株式会社 2024年7月入社
 Findy Team+ バックエンド開発 
 shibuya.rb / TechBull
 3月に初ランニングイベントに出場 󰝋
 : @mikiko_bridge

Slide 4

Slide 4 text

開発組織体制
 - アップグレード担当するチームがある わけで ない
 - 事業KPIごとに分けてチーム作成
 
 参照: エンジニア向け 会社紹介資料より(2月版)

Slide 5

Slide 5 text

開発組織体制
 - Dependabotでアップグレードを検知 
 - issueを立てておく
 - やりたい人が自分でissueにアサイン


Slide 6

Slide 6 text

アップグレード手順 
 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIが通ること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース


Slide 7

Slide 7 text

1. リリースノートを読む - it 追加 - パーサー 変更 https://www.ruby-lang.org/ja/news/2024/12/25/ruby-3-4-0-released/

Slide 8

Slide 8 text

アップグレード手順 
 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. 自動CIが通ること 確認 6. 自動CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース


Slide 9

Slide 9 text

2. 対応箇所 洗い出しを行う - 非推奨 確認
 - 新機能で使うも があれ 別issueにして対応

Slide 10

Slide 10 text

2. 対応箇所 洗い出しを行う - 非推奨 確認
 - 新機能で使うも があれ 別issueにして対応
 3. 今回、特別対応するところ なさそう

Slide 11

Slide 11 text

アップグレード手順 
 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIが通ること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース


Slide 12

Slide 12 text

4. PR作成

Slide 13

Slide 13 text

アップグレード手順 
 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIが通ること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース


Slide 14

Slide 14 text

5. CIが通ること 確認 CIでチェックしているも Rubocop Brakeman RSpec

Slide 15

Slide 15 text

5. CIが通ること 確認 - RSpec ❌ - RSpec 起動時点でエラーが起きていた - Rubocop ✅ - Brakeman ✅

Slide 16

Slide 16 text

アップグレード手順 
 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIが通ること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース


Slide 17

Slide 17 text

6. CI 修正 2つ 問題

Slide 18

Slide 18 text

1つ目: Datadog gem 原因 - datadog gemが1系で、Ruby3.4系に対応していなかった 解決法 - datadog gemを2系にアップグレードした

Slide 19

Slide 19 text

RSpecが起動し、全て通る ず✅

Slide 20

Slide 20 text

6. CI 修正 - RSpec ❌😕 - Rubocop ✅ - Brakeman ✅

Slide 21

Slide 21 text

2つ目: Kernel#system

Slide 22

Slide 22 text

2つ目: Kernel#system 目標: - 再現コード を用意すること - issueを立てること

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

Ruby 3.4.1 結果 Ruby 3.3.6 結果

Slide 28

Slide 28 text

https://bugs.ruby-lang.org/issues/21125

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

6. CI 修正 CI を通すため 解決法💡 delegateを使わず、 system メソッドを作成

Slide 31

Slide 31 text

6. CI 修正 - ✨RSpec ✅✨ - Rubocop ✅ - Brakeman ✅

Slide 32

Slide 32 text

アップグレード手順 
 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIがパスすること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース


Slide 33

Slide 33 text

7. 動作確認 ● ステージング環境に反映させる ● ハッピーパスで動作 確認をしていく ● バッチ処理が正常に動いていることを確認する

Slide 34

Slide 34 text

アップグレード手順 
 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIがパスすること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース


Slide 35

Slide 35 text

2025年1月30日 Ruby 3.4.1にアップグレード完了 🎉

Slide 36

Slide 36 text

さいごに - マイナーバージョンでも困ることがある - 機能開発で経験できないことが経験できるかも - 周りを頼ること がとても大切 - テストを堅牢 にしておいてよかった