毎月5日になると、総務の共有パソコンで誰かが決まったファイルを開き、ボタンを押す。しばらく待つと請求用のデータが出てくる。手順書には「5日にボタンを押す」としか書かれていない。作ったのは3年前に辞めた人で、押したあと中で何が起きているのかは、今いる誰も知らない。
困ってはいない。今月も動いた。ただ、パソコンが更新された朝や、共有フォルダを整理した翌日に、前触れなくエラーが出ることがある。出たら止まる。止まったときに直せる人が社内にいない。だから誰もそのフォルダを触らなくなる。
かといって捨てる決断もできない。中で何をしているか分からないので、無くなって困るものが分からないからだ。当方も、引き継ぎ手のいなくなった仕組みを預かったことが何度かあります。そういうとき、最初にやるのはコードを読むことではない。
先に決めるのは「壊れたら何が止まるか」
手をかける価値は、中身の複雑さではなく、止まったときの被害で決まる。月次の請求が出せなくなるなら最優先。年に一度の集計で、最悪は手作業で半日かければ代替できるなら、当面は放っておいてよい。中が分からないという不安と、止まったときに実際に困る度合いは、別のものとして分けて見る。
見るのは三つ。止まったとき手作業で代替すると何時間かかるか。その作業に外向きの締切があるか。出てきた数字を社外に出しているか。請求書や提出資料のように社外に出るものは一段上に置く。間違った数字は、出てしまうと取り消しが効かないからだ。全部を守ろうとすると、どれも守れない。
動いているうちに書き取る4つ
この手の話でいちばん失われやすいのは、コードではなく「動いていた頃の様子」のほうだ。壊れてから調べ始めると、正常だった状態が誰にも分からないので、比べる相手がいない。動いているうちに、次の4点を紙かテキストに書き出しておきましょう。
読み込んでいるファイル。書き出している先。実行するタイミング。そして、毎回あとから手で直している箇所。前の3つは、担当者の隣に座って一度動かしてもらえば分かる。4つ目だけは、こちらから聞かないと出てこない。動かしている本人が、それを直しだと思っていないからだ。
「出たあとにB列だけ手で入れ直してます」。本人は長くやっているので、それを作業の一部だと思っていて、仕様だとは思っていない。だがそこは元の作りが足りていない場所そのものだ。作り直すなら真っ先に潰す価値がある。
本番のファイルは触らない
中を見るときは、コピーを別の場所に取って、そちらを開く。本番のファイルは開かない。マクロには開いた瞬間に処理が走る作りのものがあり、Accessにも、開くだけでテーブルの中身が書き換わるものがある。「見るだけ」のつもりが更新になる。しかも、更新されたことに気づけない。
コピーを取ったら、次に確かめるのは中が読めるかどうか。マクロにパスワードがかかっていないか。Accessなら、元のソースが抜かれた形(accde)ではないか。読めない形しか手元に残っていないなら、そこから先の調査は空振りになる。早い段階で分かったほうがいい。
開いてみたら、パスワードを知っている人がもう社内にいなかった。
参照先が、前任者のパソコンのまま
実際に止まる原因で多いのは、コードの誤りではなく参照先の場所だ。前任者の端末にだけあったフォルダや、その人にだけ割り当てられていたドライブ文字を指したまま動いている。本人の環境では最後まで正常に動くので、辞めるまで誰も気づかない。
共有サーバーの名前が変わった、フォルダを整理して階層が一つ増えた、ファイル名の年度の部分が切り替わった。それだけで同じことが起きる。止まった原因は、たいていファイルの外側にある。だから最初に見るのは中身ではなく、そのマクロが開こうとしている場所が今もそこにあるか、です。
危ないのは、読めないコードではない
コードは読めなくても、動きを外から観察できる。入れた値と出てきた結果を何か月分か突き合わせれば、何をしているかはおおよそ見当がつく。時間はかかるものの、いつかは分かる類のものだ。読めないという理由だけで、そのファイルを特別に恐れる必要はない。
厄介なのは、どこにも書かれていない前提のほうだ。この列は空欄にならない。取引先名は全角で入る。1行目は見出しで固定。作った人の頭の中にしかなかった条件が、担当が替わった年に静かに崩れる。そして、この手の仕組みは止まらずに間違った数字を出す。エラーで止まってくれるものは、まだ親切なほうだ。
だから、動いているうちに元データと出てきた結果を数か月分ペアで保管しておくと後で効く。作り直したものに同じ元データを入れて、同じ結果が出れば置き換えられたと言える。中がどう書かれていたかを完全に解読できなくても、そこは確かめられます。
同じ動きを、全部は作り直さない
引き継ぎで時間とお金を使い切るのは、たいてい使われていない機能の再現だ。長く動いてきた仕組みには、昔の取引先向けの分岐や、様式が変わる前の処理が残っている。書き出し先のフォルダを開いて、この二年で一度も更新されていないファイルを探す。そこにつながる処理は、作り直さないと決めてよい。
全部を同じ形で再現しようとすると、誰も使っていない枝の解読で調査が止まる。今も使われている一本だけを先に置き換え、残りは新しいほうが動き出してから足していく。順番を逆にすると、置き換わる前に力尽きます。前任者の仕組みを完全に理解することは、目的ではありません。
当方は元金融系のシステムエンジニアで、Excel・紙で回している作業を一つずつ小さなツールに置き換える仕事をココナラでお受けしている。前任者が作ったものの解析や丸ごとの複製はお受けしていませんが、上の4点が書き出せている作業なら、同じ元データから同じ結果が出る形に作り直せます。中身が分からない段階のご相談で構いませんので、ココナラのメッセージからご相談ください。