Murga

個人的に言いたいコト・主張・気持ち。

エンジニアらしい Excel にしたかった

ニホンノエスイーは Excel を表計算ソフトとしてではなく、方眼紙として使用するのはよく知られた事情。モロにニホンノエスイーだった前職から転職した今も、方眼紙を作らされることはよくある。

現職ではご意見番の長老が幅を利かせていて、とにかく Excel で全ての資料を作らせてくる。彼が作らせる資料は、

  • 人間が目視で確認するための表であり、
  • 人間が目視でデータを比較しやすく、
  • 紙印刷して使いやすい

ことを目指しており、ひどくアナログなのだ。

要は「上の人間はこまけぇこたぁ分からん、パッと見で要旨が分かるようにせい」ということで、その視点は不要だとは思わない。上司に説明するための資料であれば、ペライチで言わんとすることが表現されている方が良いのは、まだ分かる。

でも今回作っているのは、開発者と運用担当が相互に用いる、細かなサーバ設定やソフトのパラメータを記すための資料なのだ。そもそも Excel なんかで作る必要はなく、設定情報を YAML や JSON なんかで出力させて diff とった方が良いのは明らかなのだが、Excel で作るにしても、

  • EXACT 関数で前回の値と比較するとか、
  • 条件付き書式で空欄や明らかな不正値を検出するとか、
  • データのインポートや表の整形などをマクロで実装しておく

とかして、Excel の機能を最大限使って、人間が目視でじっくりチェックせずとも異常が炙り出せるファイルを作った方が、運用しやすいし、間違いが減らせるだろう。

もちろん、人間が目で読むこともあるし、加筆修正は人間がするものだが、こうした機械によるダブルチェック機構も用意しておくことで、より人的ミスを防ぐ仕組みづくりができると思う。


ただ、仮にそのようなチェック関数やマクロを仕込んだ Excel ブックを作ったとしても、更新する人間が Excel の仕様を知らなかったり、そのブックにどのような関数が仕込まれているかを把握せずに手を加えてしまうと、途端にそのブックは壊されてしまう。

他人が作った Excel ブックを「壊す」人は、Excel を知った気になっていて、いくら丁寧に更新手順を書いていても正確には読めず、自己流のやり方で作業して、条件付き書式を壊してみたり、罫線を崩してみたり、チェック用の関数を消してみたり、行参照をズラしてみたりしてくる。

できるなら

  • 条件付き書式を使わない
  • 各行や各列に計算用セルが必要になる作り方にしない
  • 実線と点線を組み合わせるような複雑な罫線の使い方はしない (全部単純な実線で十分)

というような対策で、ブックを壊されても被害が少なくなる作りにしたいが、データの比較をしたいとか、集計したいとかなると、なかなか厳しい。

ならばと書式や数式を正しい状態に復元するような自己修復するブックのマクロを書こうと思うと、それこそ膨大なコストがかかるので、技術的には可能だとしても、そのような Excel は作り込まずに諦めてしまう。

こうして、デキる人は Excel に対する (というより Excel のリテラシが低い連中に対する) わだかまりを深めていき、Excel を方眼紙としてしか見ていないエンジニアごっこをしている連中はいつまでも同じ手作業を繰り返しては悦に入っていて成長しない状況が続くのだ。

「エンジニアたるもの、関数やマクロを使いこなして、全てを自動化しようではないか」と思っていたが、もう諦めた。

そういうゴリゴリに計算するような Excel は一人で作って持っておけばいいや。そんで、対外的にはバカどもに見せるバカ用の Excel を作って回すことにしよう。同じような資料を2つ作ることになるが、自分だけは楽に、間違いなく運用できる Excel を使うとしよう。

Excel 最強の教科書[完全版]――すぐに使えて、一生役立つ「成果を生み出す」超エクセル仕事術

Excel 最強の教科書[完全版]――すぐに使えて、一生役立つ「成果を生み出す」超エクセル仕事術