Excelマクロの、理不尽なまでの威力
僕はもともと、インターンシップがあまり好きではありませんでした。バイエルンの小さな村から遠く離れた場所に、面白そうな会社が集まっていたことも理由の一つですし、応募するのが恥ずかしかったことも理由の一つです。
学校のプログラムの一環として、アイルランドのインターンシップに一度だけ応募したことがあります。仕事は先生が割り振ったので、友人はAppleで働くことになり、僕は中規模のITディストリビューターに行くことになりました。ここでは仮にPcGoと呼ぶことにします。
ウェブサイトを見るかぎり、その会社はかなり立派に見えました。ところが実際にあったのは、コークの雨の多い工業地帯にある、人里離れた灰色の倉庫でした。到着すると、同僚のエフゲニーを紹介されました。彼はデスクトップパソコンの組み立てを担当する、主な、というより唯一の従業員でした。僕から見ると、店を切り盛りしていたのは彼です。彼は片言の英語しか話せなかったので、電動ドライバーとネジの箱を僕に渡し、仕事を始めさせました。最初の週は一緒にたくさんのパソコンを組み立て、とても楽しく過ごしました。ある日、バスに乗り遅れた僕を、彼が仕事帰りに家まで送ってくれました。雨の日で、コークの狭い通りを車で走りながら話したり笑ったりしていたのですが、突然、大きな音がしました。バックミラーを見てみると、もうミラーがありません。どうやら別の車にぶつかって、取れてしまったようです。エフゲニーは気にしませんでした。東ヨーロッパ訛りの強い口調で「ミラーをなくしたのは、これで3回目だ」と言うと、そのまま運転を続けました。
2週目、上司が僕のところにやって来ました。どうやら、3週間のインターンシップ用に用意されていた仕事を、もう終えてしまったようです。パソコンの組み立てやインストールには慣れていたので、当然といえば当然でした。
僕を暇にさせないために、別の仕事が用意されました。奥に置かれていた古いWindows 98のパソコンで、上司はブラウザーをsilverpages.ieに向け、「computer」で検索しました。しばらくすると、「コンピューターに関係する何か」を扱っているアイルランド企業の住所が、延々と並んだリストが表示されました。各項目には、会社名、住所、電話番号、ウェブサイト(あれば)とキーワードの一覧という、想定どおりの項目が含まれていました。
上司は、競合する販売業者をすべて把握できる一覧が必要だと言いました。彼は項目からフィールドを一つ慎重に選び、コピーしてExcelシートに貼り付けました。残りのフィールドについても同じことを繰り返しました。「これで終わり!」と、作り笑いを浮かべて言いました。これが僕にとって、退屈な2週間を意味することは、僕たち二人とも分かっていました。
彼らは、ウェブデータベース全体を手作業でスクレイピングさせて、僕を忙しくしておこうとしたのです。
侮辱されたと受け取ることもできましたが、僕はむしろ挑戦だと考えました。
silverpages.ieのページ番号が、GETパラメーターで制御できることに気づきました。
「スクレイピングするプログラムを書いてもいいですか?」上司は明らかに戸惑っていました。「ええと……好きなことをしていい。ただし、追加のソフトウェアをインストールするのは禁止だ!」そう言い残すと、上司は行ってしまいました。
インストールされているプログラムを見るかぎり、選択肢はあまりありませんでした。Excelか、マインスイーパーです。ExcelのVisual Basicマクロがかなり強力なことは知っていましたが、それでウェブサイト全体をスクレイピングできるかどうかは分かりませんでした。
しばらくして、ウェブサイトをExcelシートに取り込む機能を見つけました(なんと素晴らしい機能でしょう)。これが完璧に動いたので、あとは各ページ用の一時シートを作成し、重要なフィールドを「マスタースライド」にコピーして、それから一時シートを削除するマクロを記録すればよいだけでした。マクロを記録してコードを確認しました。その日の残りは、ループ内でURLを変更する方法を調べたり、マクロを整理したりして過ごしました。「run macro」ボタンを押し、あとは座って待ちました。コンピューターはフルスピードで動いていました。プログラムがクラッシュするか、コンピューターのメモリが足りなくなるのが一番の心配でした。そこでマインスイーパーをするのは控え、たいていはビリヤードをしたり、エフゲニーと話したりしていました。
翌朝オフィスに来ると、プログラムは終わっていました。驚いたことに、SilverPages全体のスクレイピングに成功しており、リストには何千件もの項目が並んでいました。僕はその文書をメールで上司に送り、またマインスイーパーに戻りました。
1時間後、スーツ姿の男が3人、僕の後ろに立っていました。もう一度、そのリストを見せることになりました。彼らは、僕が一人でこれをやったとは信じられませんでした。そこで、データをスクレイピングするツールも見せました。彼らにとって、僕は何か超能力を持っているように見えたのでしょう。
彼らは別の仕事を与えないまま立ち去り、残りの2週間、僕は好きなことをしてよいことになりました。そこで僕は、彼らがExcelから管理できる在庫管理ツールを書くことにしました。手作業で管理していたスプレッドシートのための、ただ立派なExcelフォームです。お金を払うと言われたので、そのツールを完成させるために夏休みの2週間を費やしました。もちろん、彼らが支払うことはありませんでしたが、ね。
学んだこと
- Excelマクロの力を決して侮らないこと。
- 退屈な作業を抱えているなら、制約を加えて、より難しい課題にしてみること。
記事をランダムに読む