Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SmartHR の `rails stats`―― 良いところ・伸びしろ全部語り尽くしちゃいます

yuriko
December 10, 2024
420

SmartHR の `rails stats`―― 良いところ・伸びしろ全部語り尽くしちゃいます

rails stats 2024 ~ Kaigi on Rails 2024 アフターイベント https://andpad.connpass.com/event/337371/ の発表資料です。

yuriko

December 10, 2024
Tweet

Transcript

  1. SmartHR の `rails stats` 良いところ・伸びしろ全部語り尽くしちゃいます 2024.12.10 Tue. rails stats 2024

    〜 Kaigi on Rails 2024 アフターイベント@株式会社アンドパッド yuriko SmartHR プロダクトエンジニア mkmn SmartHR プロダクトエンジニア
  2. サービスローンチ時 初期の構成 • View ◦ Haml ◦ CoffeeScript ◦ bootstrap

    ◦ simple_form ◦ cell • SmartHR API ◦ Grape • その他 ◦ Pundit ◦ CarrierWave ◦ Sidekiq ◦ etc…
  3. 2024年11月 最近の構成 • フロントエンドは別で管理 ◦ ほぼReact/TypeScript • New! ◦ GraphQL

    ◦ Packwerk ◦ など • 変わらない部分も多い ◦ Grape ◦ Pundit ◦ CarrierWave ◦ Sidekiq ◦ etc…
  4. • BiTemporal Data Modelを採用 ◦ activerecord-bitemporal gem • 参考: ◦

    操作履歴/時点指定アクセスの実現 - BiTemporal Data Model の実践 ◦ https://speakerdeck.com/f440/implementi ng-command-history-and-temporal-access SmartHRの履歴機能
  5. • system specが多い、テストの実行時間が長い • 混沌としたディレクトリ構成 • コードコメントが少ない • ドキュメントが少ない •

    flakyテスト • マジックナンバーが含まれたクラス名・ファイル名 • ActiveRecord::Bitemporal の罠 • jQueryを使用した古い画面が生き残っている 伸びしろ/こうすればよかった…と思う点
  6. • system specが多い、テストの実行時間が長い ◦ CIの実行時間が約30分 ◦ flakyなテストもあり、30分待ってから再実行することも… • 混沌としたディレクトリ構成 ◦

    ディレクトリのどこに新規ファイルを置くべきなのか迷う ◦ この処理どこに定義されているんだろう? ▪ modelにあったりserviceにあったり 伸びしろ/こうすればよかった…と思う点
  7. • デッドコードの削除、古い年末調整のコード削除 • モジュラモノリスの試験的導入 • コメントを書く • むやみにsystem specを増やさない •

    細かなリファクタリング • ドキュメント修正 • jQueryを使用した画面のReact化 改善への取り組み