見出し画像

野良Excelを作ったことで訪れた恐怖

デジテック for YAMAGUCHI運営事務局のハラマルです。今回は、私の丸いお腹に詰まりに詰まった罪の意識を、この場をお借りして告白します。これで自分の罪を軽くしたいということではなく、これによって訪れた恐怖体験をお伝えすることで、皆さんにも注意していただきたいという念を込めて。

悲劇の始まり

事の発端は、今から数年前に遡ります。自分がやってしまったことなのに、「悲劇」なんて他人事のような表現は如何なものか、と思われるでしょう。ですが、最初のきっかけは、自分の力ではどうすることもできないところで発生していたのです。あるとき、国の方から、「こういうデータを集約することになったのでデータを提出しなさい。皆さんが現時点でデータを持っていないことは分かっているので、データを作成するためのExcel表を用意してあげた。システムも用意したので、Excel表に入力したデータをCSVファイルとして読み込めばいい。期限は○○までだ。」といったお達しがあったのです。データを作成する目的や意義などの十分な説明がなく、やるべき作業だけの指示があったので、ITリテラシーの低い私でも、さすがに不安になりました。すごい作業量になることは容易に想像が付きましたが、拒否などできる状況にもないのでやるしかない、でも、その必要性も理解できていないという最悪の状況でした。

今振り返っても、こんな状況で作業すべきではないですね。データを作る(提出する)ことが目的になっています。皆さんも同じ状況になったら、ここで一旦立ち止まってください。実は私も何度も立ち止まろうと(あるいは引き返そうと)努力しましたが、期限を守れなかったときのペナルティをおそれ、とにかく期限内に完成させることに集中せざるを得ませんでした。ペナルティというものがあったのかどうかよくわかりませんが、少なくとも、個人的には、指示の言外にそういうニュアンスがちらつかされていたと認識していました。

私:「データの数が非常に多いと思います。また、それぞれのデータも、Excel表に入力が必要な項目を備えていません。どのように入力したらいいですか?」 国の方:「今、データを管理しているシステムを改修して、必要な項目も一緒にアウトプットするか、手作業でやるかでしょうね。」

ということで、システムのベンダーに相談しました。が、不足している項目をどのように補うのか要件定義してもらえないと改修できませんという回答でした。そりゃそうですね。それに、「国の要件を満たそうとすると、他のデータを管理しているシステムも全て改修が必要になります。それよりも、それぞれのシステムが所有しているデータをとりあえずExcel表に入れ、不足している項目を補っていく方が現実的では?」と指摘されました。こうして、ITレベルの低い私に残されたのは、手作業でExcelを作成するという道だったのです。

野良Excelの作成

最初に取り掛かった作業は、とりあえず、サンプルデータで試しにいくつか作ってみるということでした。もらったExcel表の入力を始めると、そもそもデータとして持ち合わせていない項目をどのように埋めるのか?という問題に直面しました。開発ベンダーに言われた要件定義ということでしょうか。

不足している項目を分析していくと、例えば、国が示した分類のどれに当てはまるかなど、今ある情報について、どう判断するかルールを作れば対応できる項目と、調査しないと分からない項目に分けられることに気が付きました。後者については、調査するしか方法がないので、時間をかけて調査することを覚悟します。前者については、まず、ルールを作った上で、一つ一つのデータをルールに従って処理してく必要があります。

私「例えばこういうデータはどう分類するのかルールを教えてください」 国の方「地方の実情に合わせて判断してください」

ということで、次はルール作りです。これにはとても時間がかかりましたし、とても私一人ではどうにもできなかったので、同じ状況に合っている方との担当者会議(被害者の会?)を作り、「こういう場合はどう分類するか?」といった議論を重ねていきました。

そしてようやく、ルールに目途がついた段階で、サンプル数を増やしてExcel表を作り、システムに読み込ませてみようとするとエラーが大量発生(笑)。その理由を一つ一つ分析することになったのですが、今後のことを考えると、システムに読み込ませた段階でエラーが分かるのではなく、Excel表の入力時点でエラーがないようにしないといけないなと強く思いました。それに、新しく作ったルールがきちんと適用されてExcel表が作られているのかチェックが必要です。ここで、やっと、入力フォーマットが必要なことに気が付きました。もらったExcel表には、コード番号(数字)を入力する箇所が多いのですが、そもそも何が何番というコード表を、覚えているか、その都度マニュアルを見ないと入力できません。こうした入力時のアシストも必要だなと。

入力フォーマットは、Excel表で作ることにしました。理由は、職場のPCではAccessが使えないからという消極的な理由です。マクロも使わないことにしました。理由は、職場にマクロを使える人は非常に限られているからという消極的な理由です。

作業を進めると、エラーをなくしたり入力をサポートしようとすればするほど、Excelの作りが複雑になり、今後メンテナンスできなくなるというパラドックスに気が付きます。ある時、事情を知らない後輩に作成中のExcelを見せ、こことここはエラーや間違いが多いからExcel側で作り込もうと思うが、これ以上、どこまで作りこむべきか悩んでいることを伝え、感想を求めました。答えは、「ハラマルさん、既に、私では理解不能状態です。もし私が後任になったら、Excelも分からない、システムに流し込むデータも作れないという状況になります。ただ、Excelを作り込んでもらったら、関数は理解できないしメンテナンスもできないけれど、ルールに従って情報を入力してデータを流し込む作業はできます。」というものでした。こうして、Excelの作り込み作業が、野良化の危険度上昇とともに、一層加速したのでした。

先ほどの、システムにコード番号を流し込む必要がある項目については、コード番号だけでは何のことか判断できないので、入力フォーマットでは名称のリストから選択するようにし、その結果、コード番号がCSV化するシートに反映するようにしました。この辺は既存知識でもできました。

大分類>中分類>小分類といった項目は、その組み合わせを間違わないよう、入力フォーマットで大分類を選択すると、その中から選択可能な中分類と小分類を表示させるといった工夫もしました。これはネットで調べて「indirect」関数を使いました。まず、あらかじめ別シートに分類リストを作り、この大分類だったらこの範囲の中分類から選択するというものを、「数式」の「名前の定義」をしておきます。入力フォーマットに戻り、大分類は、入力規則でリストから選択します。中分類のセルも同様にリストからの入力規則を設定するのですが、その際、リストの範囲を「=indirect(大分類のセル)」と入力します。そうすると、大分類名と同じ名前のリストから選択できるようになるというわけです。

データ数が多くなってくると「vlookup」関数の再計算が始まり、作業が止まるようになってしまいました。このため、「index」関数と「match」関数の組み合わせに変更しました。「vlookup」関数は、参照している範囲の一番左の列で一致している行を探し出し、そこの○列目という指定をしますが、「index、match」関数では、縦と横の条件が一致するものを探しだすことができます。○列目という指定を数字でしてしまうと、後に参照範囲に列挿入してしまうと参照セルが変わってしまいます。「index、match」だとその心配もありません。当然、ネットで調べたものですが、「vlookup」関数の「上位互換」と表現されていたことを覚えています。

システム上、2桁数字や、「空白はokだけど-はダメ」といった制限がある項目にも、入力フォーマットでそうなるように工夫するなどして、試行錯誤しながらなんとか完成にこぎつけました。

そして、最後に残った一番重要な作業は、私が作った入力フォーマットが野良化しないよう、メンテナンス用のシートを作り、それぞれの項目に設定してある関数や入力規則の説明を書き、試行錯誤の段階で判明したエラーなどを記録し、こういうエラーが発生した場合はここを疑ってくださいなどの注意書きをしました。当時は、「野良Excel」「野良アプリ」という言葉はまだ認識していませんでしたが、後々のメンテナンスが大変なことになることは十分承知していたので、未然防止策というか、罪滅ぼしというか、誰かこれを見てもっと良いものを作ってくれるといいなぁという淡い期待というか、複雑な心境で最後の仕上げをしました。

そして恐怖体験。

私がExcel表を作って、3~4年くらいになるでしょうか。野良化の可能性が高いExcelを作ってしまった罪悪感がぬぐい切れません。でも、怖くてどうなったか、聞くに聞けません。ハラマルさんのせいで、ひどい目にあっているという苦情が聞こえてきそうです。もはやトラウマ。なるべく思い出したくありません。

が、ちょうど昨日、初めて後任から電話がありました。どうやらExcel表は現役のようです。予想していたとおり、メンテナンスができないという相談がありました。私のミスというより、当時はエラー扱いしていた項目ですが、状況が変わって正しい値として取り入れるようにしたいというものでした。電話をきっかけに、封印していた記憶を取り戻します。Excel表を見直し、修正すべき箇所を指摘することができました。

メンテナンスができないという電話がかかってくるんじゃないか?というのも恐怖でしたが、無事に答えられても、もし、これが修正できないようなものだったらと思うと、やっぱりゾッとします。え、これ誰が作り直すんですか?と迫られるのではないかという悪夢まで見てしまうのではないかと。

そして。最も重要なこと。あれだけ苦労して、こんな罪の意識まで持ちながら作成したにもかかわらず、国によってデータが活用されたという話を一向に聞きません。これが一番の恐怖です。ホラーです。私は、幽霊に踊らされていたのかもしれません。皆さんも、野良化しそうなExcelやアプリを作りそうになったときは、手を止めてみてください。その指示に実態はありますか?