このエントリは、SmartHR Advent Calendar 2024 シリーズ1の4日目の記事です。
こんにちは!SmartHRでプロダクトエンジニアをしている原田です!
私が所属している共通データ基盤ユニットでは今年、従業員情報への項目追加に取り組み、4月に等級、9月に職種の追加を行いました。これらの項目はSmartHRの文書配布機能やキャリア台帳機能を始めとした様々な機能から求められていたものでした。
一見、項目を追加するだけなら簡単そうに思えるかもしれません。しかし、実際のところ、初めに着手した等級の項目追加では、開発に約4ヶ月半掛かりました。規模の大きなコードベースに手を加えて、項目追加することは予想以上に難しいものでした。
次の項目追加である職種については、等級の開発プロセスを型化して事前に準備していたおかげで、わずか1ヶ月強で完了することができました。職種の追加を行う際にはチーム体制の変更もあったのですが、型化の効果による作業の効率化や成果物の均質化により開発スピードは約3倍に向上しています。
私たちが実践した「開発プロセスの型化」は項目追加に限らず汎用的に活用できる方法だと考えています。ここでは型化の過程と成果、今後の開発にどう活かしていくか紹介したいと思います。
項目追加がなぜ難しいのか
最初に、項目の追加が難しい理由を説明します。
まず、等級の項目追加は前回から約2年半ぶりの対応でした。前回の対応からプロダクトは日々進化を続けており、新しい機能や変更が加わっています。そのため、今回の項目追加は当時とは状況が異なる部分もあります。加えてコア機能への影響が大きく、少しのミスが大きな障害に繋がるリスクがあるため、影響範囲をしっかりと調査しながら開発する必要があり、かなりの労力を要しました。
また、項目を追加するために多くのファイルの作成・修正が必要でした。最終的に私たちが取り組んだ際には、約280件のファイルが作成・修正対象となりました。
型化の取り組み
等級の項目追加において私たちは開発プロセスを記録し、次回以降の作業をスムーズに進められるように型化を進めました。その具体的な方法は以下の通りです。
タスクの全体像と依存関係を可視化する図の作成
最初に、タスクの全体像と依存関係を可視化するための図を作成しました。この図のことをチーム内ではブロッキング図と呼んでいるため、以降の文章ではブロッキング図と書きます。このブロッキング図には、タスクの一覧とそれぞれの工数、タスク間の依存関係、そして作業フローが含まれています。これにより、タスクを効率的に進められる順番や作業内容などが一目で分かるようになり、開発効率が大きく向上しました。
左図はブロッキング図の一部です。右図は1つのグループを拡大したものです。付箋には作業内容の概要が書かれていて、1つのタスクを表します。各タスクは主に機能単位でグルーピングされています。そして、各グループの依存関係や作業フローを整理して、ブロッキング図を作っています。なお、作図ツールはFigJamを利用しています。
ブロッキング図の見方としては例えば、従業員情報の設定とCSVインポートの実装に入るためには権限の実装が必要なことが分かります。つまり、権限周りの実装が終われば上記の二つは並列で進めることができるため、作業者のアサインを最適化し、最短距離で実装が可能になります。
チケットの詳細化
ブロッキング図は、Jiraのチケットに紐づけて管理しています。等級追加後はブロッキング図の付箋とチケットのタイトルを揃えることで紐づけていました。後述しますが職種追加後からは、Jiraの連携機能を使って実際のチケットと紐づけて管理しています。
チケットの内容は以下の項目を持つテンプレートを基に詳細に記載することと、チケットにPull Requestのリンクを貼ることで、作業内容を簡単に把握できるようにしました。
- 背景
- やりたいこと
- 受け入れ条件
- 対応内容
以上のように、開発をスムーズに進めるための型を作り、次回の項目追加に活かせるように準備を整えました。
職種の項目追加での型の活用
さて、次に職種の項目追加において、この型をどのように活用したのか紹介します。
ブロッキング図の活用
職種の項目追加プロジェクトが始まった際、まず最初に行ったのは等級のブロッキング図を基に、タスクの全体像と依存関係を把握することでした。この段階で、どのタスクを先に進めるべきか、どのタスクが他のタスクに依存しているかを明確にしました。また、職種の項目追加に必要なタスクを洗い出し、職種用のブロッキング図を新たに作成しました。
チケットの活用
さらに、開発を進める際には、等級で作成したチケットや紐づくPull Requestを確認し、作業内容を参考にしました。これにより、開発前にどの修正が必要か把握することができて、無駄な手戻りを防げました。特に新しいメンバーが参加する際には、これらの情報のおかげでキャッチアップが捗り、スムーズに作業を進めることができました。
型の効果
以上のように型を活用した結果、リリースまでの期間を大幅に短縮することができ、開発効率が上がりました。具体的には等級の項目追加に掛かった時間は約4ヶ月半でしたが、職種の追加ではその約3分の1の期間で完了することができました。
また、職種追加後には型の効果を持続させるために、以下のメンテンナンスと改善を行いました。
- 新しいタスクをブロッキング図に反映する
- FigJamとJiraの連携機能を利用し、ブロッキング図をより便利にする
メンテナンス後のブロッキング図はこのようになりました。
今後の展望について
私たちのチームは開発プロセスを型化することで、従業員情報の項目追加を迅速に進めることができました。この型化は今回紹介した項目追加に限らず、汎用的に活用できる方法です。例えば他の機能開発でも私たちはブロッキング図を作成して、タスクの全体像や依存関係を整理して、開発を効率化しています。今後も可能なものは型化してチームで開発プロセスを改善していきたいと考えています。
さらに、項目追加に関しては型化に留まらず、自動化も今後の課題として取り組んでいきます。例えば、これまで手動で作成・修正していたファイルを一括で生成できるようにすることで、さらなる開発効率の向上が期待できると考えています。
We Are Hiring!
SmartHRでは一緒にSmartHRを作りあげていく仲間を募集中です! 少しでも興味を持っていただけたら、カジュアル面談でざっくばらんにお話ししましょう!