この記事はクラウドワークスAdvent Calendar 2023 シリーズ1の23日目の記事です。
はじめに
こんにちは。crowdworks.jpのエンジニアの @komaitaira です。
現在はcrowdworks.jpにおいて、仕事を獲得できるワーカーを増やすことに注力するチームでエンジニアとして働いています。
私が普段開発をしているcrowdworks.jpは10年以上の歴史を持つとても大きなプロダクトです。
crowdworks.jpに限らずですが、10年も経つと全体のコード量もかなりのものとなり、その機能や仕様を全て把握している人はほとんどいないでしょう。そのような状況でも新たな施策を実施し、ユーザーへ継続的に価値を届けるためには、草の根を分けて探すようにコードを読み、現状の実装や仕様を理解するための調査が必要になってきます。
本記事ではそんな調査タスクをする中で感じた意識するべきこと(実際にやって感じた反省点や、やってよかったこと)を紹介したいと思います。
ゴールを明確にする
まず調査を進めるにあたり、ゴールが抽象的であるとなかなか調査を進めるのが難しいと感じました。
現在私のチームでは、Elasticsearch(全文検索エンジン)をRailsで便利に使うためのgemであるelasticsearch-railsを、代替となるgemであるSearchkickに移行するプロジェクトを進めています。
このプロジェクトの最終的なゴールは「gemが置き換わった上で、置き換え前と同じ挙動でサービスが動作すること」です。
しかし、このゴールを達成するための前段階としてやるべきことは複数あり単純ではありません。elasticsearch-railsやSearchkickは何をしているのかを理解すること、それがプロダクトのどこで使用されているのかの洗い出し、置き換えた時の影響範囲についての調査等々、、挙げたらキリがありません。
そのため、最終的なゴールを達成するために必要なことをタスクとして洗い出し(リスト化)、それら一つ一つのタスクに対して何が分かっている状態でそのタスクを完了と言えるか、というタスクに対するゴールを明確に決めることがとても大事です。
なるべく小さなことから進める
また、調査タスクも大きなものから小さなものまで様々ありますが、なるべく小さなものから進めるのがベターであると感じました。理由としては、gem移行という大きなプロジェクトを達成するにあたり、大きなタスクを長い時間かけて消化するよりも、小さな調査タスクをコツコツ消化した方が、プロジェクトを着実に前進させることができますし、成功体験を少しずつ積み重ねることでモチベーションの維持にもつながると思ったためです。
一方で、タスクの依存関係等で特定の順番で調査したい場合もあったりなど一概には言えないかと思うので、その場合は適宜やりやすい方法で進めるのが良いかと思います。
あまり深追いしすぎない
コードの詳細な部分まで追っていく必要がある場面と無い場面があると思いますが、大きなプロジェクトにおいては上記で設定したタスクごとのゴールを達成できた時点で、そのタスクは一旦完了させ、そのコードが何をしているのかという概要が分かっていれば、詳細まではその時点では深追いする必要はないと思っています。理由としては、その時点で理解できても時間が経って後から忘れてしまっていたりして再度コードリーディングすることになりがちだからです。後から調べられるように軽いメモは残しておくといいと思いました。
また、時間を設けたりすることも有効だと思います。制限がないといくらでもやってしまいますし、こういった調査系タスクは芋づる式に調査対象が出てきてしまうので、あえて区切りをつけるのも大事だと感じました。
定期的に共有の場を設ける
普段のデイリースクラム以外の時間で、開発陣で定期的に共有の場を設けるようにしていました。これはその調査がゴールの達成に向かっているかどうか、達成に必要な情報を調査できているかを客観的な目で見てもらうためにも必要です。調査の方向が間違っていた場合は早めに軌道修正できますし、進捗がなかった場合はなぜ進められていないのか、調査で詰まっている箇所がある等、相談をすることもできるので、日時を決めて実施するのが良いと思います。
調査していることは透明性が高い状態を保つ
具体的な調査内容は開発陣しか分からないとしてもチームで進めているプロジェクトなので、開発陣だけでなく、誰がどんな調査を行なっているのか等の活動状況がチーム全体、第三者がわかるような状態にするべきです。
調査タスクを細かく分けて、毎日のデイリースクラムでもいいので、調査の中でも具体的に何をやっているのか共有することが大事です。
また、定期的に調査ログの整理(ドキュメント化)もできると、後任も困ることが少なくなるはずです。
おわりに
いかがでしたでしょうか。
調査系タスクに正解はないと思いますが、参考になると幸いです。
最後にクラウドワークスでは様々な仲間を募集しております。
ご興味のある方は以下のリンクからご応募ください!