属人化を減らすためのVBAは正しいのか

はじめに(自己紹介に近い)

この記事は結論の出ない、現在進行形で悩みを抱えている零細企業の若いIT担当が書いています。暖かいご意見をください!お願いしますm(__)m。

私の簡単な状況(かなりぼかします)

  • 前職はITベンチャー→零細一般企業に入社
  • 社員数名の会社の事務・開発(IT担当は私だけ)

こんな感じで、社内のツールを変える際もわかる人間がいないので、私の独断で作ったツールが、レビューもなくそのまま現役で動いています。

「属人化を減らす」ためのVBA

従業員数名の会社で、属人化を減らす必要なんてあるのか。そもそもここからだったりするのですが、人を増やすためにも、入った人が早く今いる人と同じ水準で業務が回せるようにするためにもこの努力は欠かせないものと思っています。

従業員の経験による判断、その場しのぎのセル操作、コピペ、行列追加、気合い、こういった要素を排除してマクロの流れに沿った業務に統一する。これができれば、「業務の精度が上がる」「誰でもできる」、いわゆる属人化を少なくできるわけです。

実際私の会社でも、以下のような事例がありました。軽く紹介します。

  • イベントのエントリー集計業務
    • お客様の過去エントリー状況で添付資料と文面が変わる
    • メール文面は全てコピペ、エントリー企業・担当者名は手打ち
    • 担当者の気合、肩こり

この業務がVBAにより以下のように変わりました。

  • お客様の過去エントリー状況→過去提出資料の有無で判断
  • 属人化していた個人の判断部分を精査し、ダイアログボックスで担当者以外も回答できる2択化
  • 状況に応じたメール文面は全て自動作成、資料添付、エントリー企業・担当者名も自動

この改善は上手く機能し、エントリー返信の時間は半分以下になっただけでなく担当者の肩こりも改善しました。

VBAは同じ作業の繰り返しを解消するのに非常に長けていますし、動作に必要なデータベースもExcelシートをそのまま使えばいいのだから、改善の手法としてとてもハードルが低いと思っています。

VBAが抱えるリスク~開発担当者不在リスク

この業務の属人化は軽減することができました、めでたしめでたし。
とはならず、この他にもいくつかの業務改善を実施するうちに、私の中でずっとついてくる疑念があります。

「これ、壊れたらだれが直すの?」
「仕様変更があったら誰が改修するの?」

そう、社内に担当者が一人しかいない。私以外扱えない。これは紛れもなく「属人化」です。
社内業務の属人化を嫌った結果、コードも仕様もブラックボックスと化したファイルが乱立する状況になってしまったのです。

出来る限りの抵抗として以下のようなことを試してはいますが、どれも疑念を払しょくするには至っていません

  • Configシートを作成し、サービスの価格変更やメールテンプレ文面の見直しが発生した際でもそちらを変更するように案内。マクロ内の代入にはセルの値を参照するようにして、コードを直接変更する可能性を減らす
  • マニュアルを作成し、Excelシートが壊れるような操作について注意喚起
  • ブック・データが不可逆的に壊れる想定で日ごろからのバックアップを案内(マニュアルやシート内の説明で)

どれも根本的な解決ではなく、予防や今想定できる範囲内の対処にとどまっているのが現状です。

マクロのうまい書き方次第かもしれませんが、Excelシートというのは非常に壊れやすい代物です。行列追加、並び替え、参照先の名称変更(列名やシート名を固定してしていると起きがち)など、様々な理由で正常動作しなくなります。

担当者がいない状態で、マクロを長く使い続けられるのか。
正直、かなり怪しいと思っています。

脱線~外注という選択肢

担当者がいないなら、外注すればいいじゃないか。まだ詰んでないぞ。そんな意見も当然かと思います。しかし、私がこの会社に来てから感じた、「ITが分かる人間が社内にいない会社」の傾向を列挙します。

  • そもそも自分たちの要求を正確に伝えることの難易度が高い(「顧客が本当に必要だったもの」そのまんま)
  • そもそもの時間的・予算的制約によって、手っ取り早く気合で乗り切れる手段に舵を切ることが多い

まだまだありますが、この辺で。

外注先、システム開発を請け負う業態を批判する意図は一切ありません。しかし、そもそも知らないということは不利な立場であり、将来そのような状況を作ってしまう可能性があることを、開発担当者は注意しなければならないと考えています。

結論の出ないまとめ

この記事をひとまずまとめるとしたら、次のような結論に至るかと思います。

  • それでもVBAは使うしかない。現場の負担軽減が最優先だ
  • VBAに頼りすぎない、継続的に動いていく業務の設計が必要だ
  • 属人化はそもそもゼロにできない。

システムの話に限らず、働くすべての人が考えるべきである

「私がいなくなったらどうなるのか」

という命題について、言葉は軽いですが、これをケアできてこそ一流なのかなと考えています。
よく、スカッと系の記事で、「いじめられていた私が退職したら業務が立ち行かなくなって引き留められた」なんて話を目にします(実話かは知りませんが)。これ自体はその人の優秀さを示すエピソードとして消化すれば良いのでしょうが、真の優秀を目指すなら、自分がいなくても回る業務の構築にリソースを割くべきなのかなと思います。

この題について、私の中でも明確な答えは出ていません。
なので、もしよろしければ皆さんの考え方をコメントしていっていただけると幸いです。

コメント

タイトルとURLをコピーしました