はじめに

システムリニューアルや障害などで、古いシステムを調査することって良くありますよね。
この調査というタスク、非常に厄介です。
いつもは一人でやる(やらされる)ことが多いのですが、
今回モブでやってみたら最高に幸せだったよという話をします。

レガシーシステムとは

まず、今回のレガシーシステムを定義しておきます。
みなさんも一度は見たことあるかもしれませんね。
どれか一つでも当てはまれば、それを想像しながら読み進めていただければと思います。

  • 初期リリースから10年以上経っている
  • 誰も全ての仕様を把握していない
  • 見たことない言語で動いている
  • 誰も調査したがらない
  • バージョン管理されておらず、改修日と作業者名のコメントが大量にある
  • コードがやたら長いし謎処理が大量にある
  • もう使われていないであろうコントローラも大量にある
  • ファイル名や変数名は暗号のよう
  • ソースが追えない
  • 心が折れそうになる

今回の作業内容

上記のようなレガシーシステムを一部リニューアルするにあたり、
『とあるDBのとあるテーブルがどのタイミングで更新されるか』を調査することになりました。

ソロでもモブでもやることは変わりません。
テーブル名でgrepして、ヒットした箇所(100件以上)をひたすら調査していきます。

モブで調査してみた

今回は対象のDBに多少詳しいH氏と2人で行いました。
どちらもレガシーシステムには(言語含め)詳しくありません。

一緒にgrepした結果を眺めて一つ一つソース解析していきます。
フェーズ毎に様々なメリットがありました。

  • 調査前
    • 一人じゃないので安心感がある
    • レガシーシステムに立ち向かう気になれた
  • 調査中
    • SQLのCRUDの仕分けがゲーム感覚でサクサク進んだ
    • 一人が見逃してもカバーできた
    • 調査結果のまとめ方をお互いに学べた
      • これ普段共有することなかったので新鮮だったし大事だと感じた
    • 判断が速かった
      • 使われてなさそうなファイルがヒット
        • 2人「これはもう無視しよう。きっと大丈夫」
      • 非常に関連が高そうな別テーブルが現れた
        • H氏「あ、それもう使ってないから調査不要です」
  • 調査後
    • 調査結果に自信を持てた
      • 仮に漏れがあっても仕方ない感
    • 共有の時間が不要だった
    • 調査結果を元にした次のアクションをすぐ決定できた
    • 数日かかると見積もっていたが数時間で終わった

もし一人でやっていたら…

経験をもとにどうなっていたかを考えてみました。
みなさんもこんな経験あるのでは?

  • 調査前
    • 不安。樹海に飛び込む感覚
    • モチベーションあがらない
  • 調査中
    • CRUD仕分け
      • 集中力の低下
      • 速度の低下
      • ミスしてそうという不安
    • 孤独との戦い
    • 自分しか読めない調査資料の完成
    • 判断できない
      • 使われてなさそうなファイルがヒット
        • 頑張って時間かけて調べる…が確信持てない
      • 非常に関連が高そうな別テーブルが現れた
        • 頑張って時間かけて調べる…がよくわからない
  • 調査後
    • 調査結果に自信が持てない
    • 使われてなさそうなファイル&別テーブルの共有
      • 「もうちょっと調べてみて」
        • ふたたび樹海へ…
    • 数日たったが終わりが見えない
    • 次のアクションに進まない

さいごに

書いてて思ったのですが、もし一人でやってたらと思うとゾッとしますね。
(まぁいままでは一人でやってたわけですが)
これからは誰もが嫌がるタスクはモブでやっていこうと思います。

調査に苦しんでる人は是非お試しあれ。周りを巻き込んで!