レガシーシステムの調査をモブでやってみた
はじめに
システムリニューアルや障害などで、古いシステムを調査することって良くありますよね。
この調査というタスク、非常に厄介です。
いつもは一人でやる(やらされる)ことが多いのですが、
今回モブでやってみたら最高に幸せだったよという話をします。
レガシーシステムとは
まず、今回のレガシーシステムを定義しておきます。
みなさんも一度は見たことあるかもしれませんね。
どれか一つでも当てはまれば、それを想像しながら読み進めていただければと思います。
- 初期リリースから10年以上経っている
- 誰も全ての仕様を把握していない
- 見たことない言語で動いている
- 誰も調査したがらない
- バージョン管理されておらず、改修日と作業者名のコメントが大量にある
- コードがやたら長いし謎処理が大量にある
- もう使われていないであろうコントローラも大量にある
- ファイル名や変数名は暗号のよう
- ソースが追えない
- 心が折れそうになる
今回の作業内容
上記のようなレガシーシステムを一部リニューアルするにあたり、
『とあるDBのとあるテーブルがどのタイミングで更新されるか』を調査することになりました。
ソロでもモブでもやることは変わりません。
テーブル名でgrepして、ヒットした箇所(100件以上)をひたすら調査していきます。
モブで調査してみた
今回は対象のDBに多少詳しいH氏と2人で行いました。
どちらもレガシーシステムには(言語含め)詳しくありません。
一緒にgrepした結果を眺めて一つ一つソース解析していきます。
フェーズ毎に様々なメリットがありました。
- 調査前
- 一人じゃないので安心感がある
- レガシーシステムに立ち向かう気になれた
- 調査中
- SQLのCRUDの仕分けがゲーム感覚でサクサク進んだ
- 一人が見逃してもカバーできた
- 調査結果のまとめ方をお互いに学べた
- これ普段共有することなかったので新鮮だったし大事だと感じた
- 判断が速かった
- 使われてなさそうなファイルがヒット
- 2人「これはもう無視しよう。きっと大丈夫」
- 非常に関連が高そうな別テーブルが現れた
- H氏「あ、それもう使ってないから調査不要です」
- 使われてなさそうなファイルがヒット
- 調査後
- 調査結果に自信を持てた
- 仮に漏れがあっても仕方ない感
- 共有の時間が不要だった
- 調査結果を元にした次のアクションをすぐ決定できた
- 数日かかると見積もっていたが数時間で終わった
- 調査結果に自信を持てた
もし一人でやっていたら…
経験をもとにどうなっていたかを考えてみました。
みなさんもこんな経験あるのでは?
- 調査前
- 不安。樹海に飛び込む感覚
- モチベーションあがらない
- 調査中
- CRUD仕分け
- 集中力の低下
- 速度の低下
- ミスしてそうという不安
- 孤独との戦い
- 自分しか読めない調査資料の完成
- 判断できない
- 使われてなさそうなファイルがヒット
- 頑張って時間かけて調べる…が確信持てない
- 非常に関連が高そうな別テーブルが現れた
- 頑張って時間かけて調べる…がよくわからない
- 使われてなさそうなファイルがヒット
- CRUD仕分け
- 調査後
- 調査結果に自信が持てない
- 使われてなさそうなファイル&別テーブルの共有
- 「もうちょっと調べてみて」
- ふたたび樹海へ…
- 「もうちょっと調べてみて」
- 数日たったが終わりが見えない
- 次のアクションに進まない
さいごに
書いてて思ったのですが、もし一人でやってたらと思うとゾッとしますね。
(まぁいままでは一人でやってたわけですが)
これからは誰もが嫌がるタスクはモブでやっていこうと思います。
調査に苦しんでる人は是非お試しあれ。周りを巻き込んで!