ハックデイでメンバーそれぞれが思い思いに開発を行い成果を上げました - SmartHR Tech Blog

SmartHR Tech Blog

SmartHR 開発者ブログ

ハックデイでメンバーそれぞれが思い思いに開発を行い成果を上げました

ハックデイでメンバーそれぞれが思い思いに開発を行い成果を上げました

こんにちは!SmartHRで配置シミュレーションの開発を担当している、プロダクトエンジニアの @tnagatomi です。

今回は、配置シミュレーション開発チームで定期的に実施しているハックデイでの取り組みを2024年2月14日のものを例にご紹介します。
ちなみに2024年2月14日は配置シミュレーションが提供されてから1周年の日で、チームでこの日を選んでハックデイを執り行いました。

ハックデイとは?

ハックデイについては弊社テックブログで以前ご紹介しているので、詳しくはそちらをご覧ください:
ハックデイを通して得られたもの - SmartHR Tech Blog

私たちのチームでは、2か月に一度くらいの頻度でハックデイを開催しています。通常のプロダクト開発から離れ、普段取り組めていない改善や新しい技術の調査などを行っています。
そして、ハックデイの1日は「朝の宣言」で今日やることを皆の前で宣言→1日使ってハック→「夕方の自慢タイム」で今日の成果を皆の前で発表という流れになっています。

この皆で発表する時が、自分の成果をみんなから称賛してもらえたり、他の人の成果に深く感心することができたりと、充実した時間になっています。

取り組みのご紹介

それではメンバーそれぞれの取り組みを1つずつご紹介します。

従業員詳細の高速化・リファクタリング

従業員詳細とは、配置シミュレーション上で従業員一人ひとりの詳細な情報を見ることができる画面です。様々なデータ取得が入って複雑化していたこちらのコンポーネントのリファクタリングに取り組みました。

SmartHRでは従業員データの集約に取り組んでいます(参考: SmartHRのマルチアプリケーションに分散した従業員データを集約する - SmartHR Tech Blog)。
その従業員データの利用者として、他プロダクトの従業員データを問い合わせるGraphQLクエリの最適化、およびデータの整形とロジックの密結合を解くといったことを行いました。

その結果、平均4.16sかかっていた表示が平均2.31sで表示されるようになりました!
このリファクタリング、内部的な構造の話になるので詳しくお話することができないのですが、他のメンバーはその成果に感嘆の声を上げていました。

SmartHR UIのバージョンアップ

SmartHRでは、プロダクトで利用するReactコンポーネントをSmartHR UIとしてオープンソース化して公開しています。

配置シミュレーションでは、当時v37を使っており、当時最新のv41に追従できていない形でした。これをまずはv39に上げるということを行いました。
障壁として、breaking changesへの対応や、関連してバージョンアップされる社内共通lintへの対応などがありました。

その結果、一番障壁になっていたところを突破してv39にバージョンアップできたことで、その後すんなり最新バージョンへの追従を達成できました!

プロジェクト一覧画面のパフォーマンス改善

プロジェクト一覧画面とは、配置シミュレーションで配置プロジェクトタブを開いた時に表示される配置プロジェクトを一覧できる画面のことです。

配置シミュレーションではancestryというツリー構造を表現するgemを使っていますが、その利用方法の改善を行い、gemで用意されたメソッドや定義したラムダを上手く使うことで、SQLの発行回数を劇的に減らしました。

その結果、3,000ms強かかっていた処理が180ms前後の処理となり、17倍ほどのパフォーマンス改善となりました!

内部向けリリースノートのフローの自動化

SmartHRでは、外部に公開するリリースノートとは別に、社内共有用の内部向けリリースノートを運用しています。
この内部向けリリースノートは、次のような温かみのある手順で作成されていました。

  • Pull Requestをマージすると、Slackの専用チャンネルにPull Request情報が自動で投稿される
  • 上記Pull Request情報を一時ノートにコピペし、カテゴリごとに整理する
  • リリース時に一時ノートを清書して、最終的に社内公開するドキュメントへコピペする

この取り組みでは、GitHubのラベルを使った自動生成リリースノート機能と、GitHub Actionsで内部向けリリースノートを作成する先の外部メモサービスのAPIを叩くことにより自動化しました。

その結果、運用のためのSlackチャンネルは必要なくなり、人力で行うのはPull Request作成時にラベルを貼るだけでよくなりました!

給与テストデータ作成スクリプト

配置シミュレーションでは給与のデータを確認しながら配置検討することが可能です。

この給与データですが、それまでは給与及び給与明細のテストデータを手作業で作ったCSVで用意していました。10,000人の従業員分の給与・給与明細のテストデータをつくるためには、10,000行のCSVファイルが必要になります。
そこで、ワンコマンドでテストテナントに存在する従業員全員への給与明細発行を気軽に実行できるRubyのスクリプトを作りました。

その結果、スクリプトだけで給与のテストデータが一括で作成できるようになり、テストデータ作成の手間が大幅に削減されました!

まとめ

他にも、CapybaraでのE2EテストをPlaywrightに置き換えるための技術検証をしたメンバー、新機能のプロトタイプ実装をしたメンバー、パフォーマンスやバグの解消に臨んだメンバーなど、それぞれが思い思いの開発を楽しんだ一日となりました。

普段の業務でできないことを1日だけでもやるということが、プロダクトや開発者体験の向上に直接結びついてとても良い取り組みなので、今後も続けていきたいと思っています。

We Are Hiring!

SmartHR では一緒に SmartHR を作りあげていく仲間を募集中です!

ハックデイで成果を上げたいという方もぜひ仲間になってほしいです!

少しでも興味を持っていただけたら、カジュアル面談でざっくばらんにお話ししましょう!

hello-world.smarthr.co.jp