VBAで作った転記ツールを社内展開したら、ChromeDriverの配布で完全に詰んだ話|人事情報の転記自動化・中編

前編を読んでいただいた方はおわかりかと思いますが。このシリーズは「自動化ツールを作った」という成功談ではなく。「作ってからが本当の戦いだった」という実録です。

前編では、紙のプロフィールシートをGoogleフォームに置き換え。VBAとSelenium+ChromeDriverを使って転記作業を自動化するところまでお話ししました。

まず、自分で作ったツールは、私の手元では完璧に動いていました。3時間かかっていた転記作業が、ボタン1つで数分で終わるようになり。大きな達成感がありました。

でも、このツールを使ってもらう相手は私ではありません。採用担当の社員たちです。そして、そこから始まる「配布の地獄」は、想像をはるかに超えるものでした。

配布の手間:VBAとSelenium

通常のVBAツールであれば。ExcelファイルをLINE WORKSで送るだけで済みます。受け取った社員がファイルを開いて「マクロを有効にする」設定をすれば(これ自体も一仕事ですが)。あとは使えます。

次に、でも。今回のツールはSeleniumを使ってChromeを操作する仕組みでした。そのため配布は3段階になります。①VBAファイルをLINE WORKSで送付。②Selenium本体をインストール。③ChromeDriverをSeleniumのフォルダに上書きコピー——という流れです。

さらに今回のツールは。拠点ごとに参照するGoogleフォームやスプレッドシートのURLが異なっていました。そのため全員に同じファイルを一斉配信することができず。LINE WORKSで個別に1対1のやりとりをしながら配布していく必要がありました。

ChromeDriver導入、AppDataの壁

②のSelenium本体はexeファイルをダブルクリックするだけでインストールできるため。こちらはほとんど問題になりませんでした。Selenium本体はその後アップデートが来たことがなく。初回の配布で作業は完了しました。

一方で、問題は③のChromeDriverです

問題は③のChromeDriverです。ChromeDriverはChromeブラウザとSeleniumの「通訳」として動くツールで。各社員のPCのSeleniumフォルダへ上書きコピーする必要があります。そのSeleniumフォルダは、デフォルトでは以下のパスにあります。

VBA+Selenium転記ツールの完成画面:ボタン1つで転記が走る状態

C:\Users\(ユーザー名)\AppData\Local\SeleniumBasic\

そのため、この「\AppData」フォルダが、最初の壁になりました。

AppDataが見つからない

まず「\AppDataに移動してください」と言葉で伝えることが。そもそも通じませんでした。

会社貸与のPCで初期設定のまま使っている社員がほとんどです。Windowsのエクスプローラーを開くと、初期表示は「ホーム」になっています。そこには「よく使うフォルダ」や「最近使ったファイル」が並んでいるだけで。Cドライブやローカルディスクがどこにあるかはすぐにはわかりません。「Cドライブってどこですか?」という質問から始まることが。決して珍しくありませんでした。

しかし、そして\AppDataは。デフォルトで「隠しフォルダ」になっています

そして\AppDataは、デフォルトで「隠しフォルダ」になっています。エクスプローラーの「表示」から「隠しファイルを表示する」にチェックを入れないと。そもそも見えません。この設定変更を言葉だけで説明しようとすると。「表示って上のタブですか?」「チェックを入れるってどこですか?」という会話が繰り返されました。

スクショとリモートサポート

最終的に最も効果的だったのは、手順をスクショして画像化し。LINE WORKSで送ることでした。「この画面になったらここをクリックしてください」という形にすると。格段に通じやすくなります。それでも一人で解決できない社員は多く。9割以上のケースで私がリモートサポートに入り。直接ChromeDriverを所定の場所に置くことになりました。\AppDataを知識として知っている社員は稀でしたので。そのたびに丁寧にサポートを行いました。

ChromeDriver、まさかのバージョンエラー

さらに、ChromeDriverの初回配布は、多大な労力を要したものの。なんとか完了しました。各社員のPCに適切なバージョンのChromeDriverが配置され。ツールは問題なく動作しました。3時間かかっていた転記作業が数分で終わる状況を目の当たりにし。導入に際して奔走した労力が報われたように感じました。しかし、この安堵は長くは続きませんでした。導入から数週間後、オフィスで「ツールが動かない」という声が上がり始めたのです。複数の社員から、同様の報告が次々と寄せられました。

「昨日まで普通に使えていたのに。今日になったら動かなくなってしまった」「ボタンを押してもChromeが起動しない」「いつもと違うエラーメッセージが出ている」といった内容がほとんどでした。当初はPCの一時的な不具合を疑ったのですが、報告が相次ぐことから。何らかの共通の原因があることは明らかでした。原因を探るべくエラーログを確認すると。ChromeDriverのバージョンに関するエラーが多数検出されました。

Chrome自動更新とChromeDriverのバージ…

この現象の根源は、Chromeブラウザの自動アップデート機能にありました。多くの企業で利用されるChromeは。常に最新のセキュリティ対策や機能改善が施されるよう。自動的にバージョンアップされる仕組みが組み込まれています。VBAツールがChromeを操作するためには。ChromeDriverという「通訳」役が必須です。このChromeDriverは。特定のChromeブラウザのバージョンに紐付けられています。まるで特定の言語しか理解できない通訳と同じように。ブラウザとChromeDriverのバージョンが少しでも異なると。正確な意思疎通ができなくなるのです。たとえば、Chromeがバージョン100に更新された場合。ChromeDriverもバージョン100に対応している必要があります。もし古いバージョン99のChromeDriverのままだと。ブラウザはドライバーの指示を理解できず、ツールは正常に動作しなくなるのです。

LINE WORKSでVBAファイルとChromeDriverのzipを個別送付している画面

💡 ここで一度立ち止まって考えてみてください

PythonやExcel自動化スキルを持ったまま、ITエンジニアとして転職したい方には「EBAエデュケーション」が選択肢です。企業が求めるエンジニア像に合わせたカリキュラムで、実務直結のスキルを習得できます。

ITエンジニア転職・EBAエデュケーション →

Chrome自動更新が引き起こすバージョン不一致と手動…

まず、導入当初は問題なく動いていたツールが。数週間後には動かなくなるという現象は。まさしくこのバージョン不一致が引き起こすものでした。社員からの「何もしていないのに」という訴えは。彼らの利用状況からすればまさにその通りであり。PCの裏側でChromeが自動的に更新されたことが原因でした。PCに詳しくない社員からすれば。突然動かなくなったツールは単なる故障に見えるものです。この理解のギャップが、私への問い合わせをさらに増大させました。

ChromeDriver更新作業が本末転倒

Chromeブラウザの自動アップデートは、ユーザー体験を向上させ。セキュリティを強化するための重要な機能です。ですが、ツール運用者にとっては、この自動更新が厄介な課題となります。Google Chromeのアップデートは月に1回程度の頻度で行われることが多く。セキュリティパッチや緊急の不具合修正が入れば。さらに不定期な更新が加わる可能性もあります。つまり、このツールを使い続ける限り。数週間に一度はChromeDriverのバージョン不一致によるトラブルが発生し。その都度対応が必要になるということでした。

再び始まったのは。各社員のPCへリモートサポートでChromeDriverを入れ替える作業です。前回と同様に、最新版のChromeDriverをダウンロードし。隠しフォルダになっている\AppData配下のSeleniumフォルダへ手動で上書きコピーします。この作業を、ツール利用者全員に対して繰り返し行わなければなりませんでした。せっかく転記作業を自動化して時間を節約したはずが。その節約した時間をChromeDriverの更新作業に費やすという本末転倒な状況に陥ってしまったのです。

VBAでのChromeDriver自動更新の困難

次に、この手作業での対応は、決して根本的な解決策ではありません。毎回、Chromeのアップデートを検知し。最新のChromeDriverを探してダウンロードし。それを各社員に配布・設定するというのは現実的ではありませんでした。自動化ツールの運用が、これほどの手間を伴うのであれば。その導入意義自体が薄れてしまいます。どうにかこの手間を自動化できないものかと考えました。VBAから直接。Web上の最新版ChromeDriverのダウンロードページへアクセスし。対応するバージョンを自動でダウンロードして配置する、という仕組みを検討しました。

Windowsエクスプローラーの「表示」メニュー:隠しファイルとファイル名拡張子の表示設定

しかし、これはVBAの標準機能だけでは実現が難しい上に。Webからのファイルダウンロードはセキュリティ上のリスクも伴います。特に。社内PCで不特定のURLからファイルをダウンロードするような仕組みを導入することは。情報システム部門の承認を得るのが極めて困難な道です。結局、これらの課題をVBAでスマートに解決する方法は見当たりませんでした。ChromeDriverのバージョン問題は、導入後も続く「配布の地獄」であり。ツールの運用を考える上で大きな足枷となっていたのです。

救世主が重荷に変わった自動化ツール

ChromeDriverのバージョン管理と配布作業が常態化するにつれて。私は次第に大きな疑問を抱くようになりました。せっかく3時間かかっていた作業を数分に短縮できたはずなのに。その削減した時間を今度はChromeDriverの更新作業に費やしている状況は。どう考えても本末転倒でした。本来の業務時間も圧迫され始め。このツールを導入したこと自体が本当に正解だったのか。自問自答する日々が続きました。

まず、一方で。社員の方々からも「また動かなくなった」「面倒だから手動でやる」という声が聞こえるようになり。ツールに対する信頼性も徐々に失われていることを肌で感じました。私自身も、毎月のように発生するアップデート対応に追われ。本来やるべき仕事に集中できないストレスを抱えるようになりました。自動化ツールは、業務効率を劇的に改善するはずの「救世主」だったはずなのに。いつの間にか「メンテナンスの重荷」へと変わってしまっていたのです。

精神的重圧とVBAの限界

特に、隠しフォルダである\AppDataへリモートで接続し。手作業でファイルを上書きする作業は、非常に神経を使いました。誤って別のファイルを削除してしまわないか、他のシステムに影響を与えないか。常に緊張しながら作業を進める必要がありました。この精神的な負担もまた、私を苦しめる大きな要因でした。いつまでこの終わりの見えない戦いを続けるのだろうかと。途方に暮れることも少なくありませんでした。

この状況をVBAだけで根本的に解決することは。私のスキルでは不可能だという結論に達していました。Webから直接ファイルをダウンロードしたり。Chromeのバージョンを自動で検知して適切なChromeDriverを配置したりするような高度な処理は。VBAの標準機能では非常に困難です。無理に実装しようとすれば、さらに複雑なコードになり。メンテナンス性も著しく低下してしまうことが目に見えていました。もはや、この問題はVBAという枠組みでは解決できないのではないか。と考えるようになりました。

VBAの限界、Pythonでの活路

そのため、VBAの限界を痛感した私は、この「配布の地獄」から抜け出すための。別の解決策を模索し始めました。社内を見渡すと。一部のエンジニア職の社員が「Python」という言葉を口にしているのを耳にする機会が増えていました。プログラミングの「プ」の字も知らなかった私にとって。Pythonという言葉は当初。全く未知のものでした。ただ漠然と。「VBAよりももっと高度なことができる言語なのだろうな」という印象を持っていました。

しかし、VBAでの問題解決に行き詰まっていた私は。藁にもすがる思いでPythonについて少しずつ調べ始めました。すると、Webスクレイピングや自動化の分野で非常に強力な言語であること。そしてVBAでは難しいと諦めていたWebからのファイルダウンロードや外部ツールのバージョン管理なども。比較的容易に実現できる可能性を秘めていることが分かってきました。特に、SeleniumをPythonから利用することで。ChromeDriverのバージョン問題をスマートに解決できるかもしれない。というかすかな光が見えたような気がしました。

VBAツールの配布は「3段階」になるに関する解説図(日本語UI)

配布の地獄打破、Pythonへの挑戦

もちろん、VBAとは全く異なる言語体系を持つPythonを。ゼロから学ぶことには大きな不安がありました。まるで新しい外国語を学ぶようなもので。専門書を開いても最初はちんぷんかんぷんでした。それでも、このまま現状維持では。いつまでも「配布の地獄」から抜け出せないという強い危機感が。私の背中を押しました。この厄介なバージョン問題を根本的に解決し。真の意味で自動化されたツールを運用するためには、新しい知識を習得するしかない。と腹を括ったのです。

しかし、この時の私は、Pythonがどのような言語なのか。具体的に何ができるのか。まだぼんやりとしか理解していませんでした。ただ、VBAでは解決できない壁にぶつかり。その壁を乗り越えるための新しい道具としてPythonがあるらしい。という程度の認識でした。それでも、この小さな気づきと、現状を変えたいという強い思いが。私がプログラミングの世界へさらに深く足を踏み入れる。最初の大きな一歩となったのでした。この先、Pythonという新たな挑戦が、どのような困難と発見をもたらすのか。その時はまだ知る由もありませんでした。

関連リンクとチェックリスト

学習サービスとアンケート

このスキルを活かしてさらに前へ進むなら

Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。

プログラミングスクール Enjoy Tech!(エンジョイテック) →