Excelマクロの不条理な有効性
原文は Matthias Endler により に公開されました。 このブログを購読する
インターンシップはあまり好きではなかった。理由のひとつは、面白そうな会社はどれもバイエルンの小さな村からは遠く離れていたからだし、もうひとつは応募する勇気がなかったからだ。
一度だけ、学校のプログラムの一環でアイルランドでのインターンシップに応募したことがある。仕事は先生が割り振る仕組みで、友人はAppleに配属され、僕は中堅のITディストリビューターに回されることになった。ここでは仮にPcGoと呼んでおこう。
ウェブサイトで見る限り会社はかなり立派に見えたが、実際はコークの雨に濡れた工業地帯にある、人里離れた灰色の倉庫に過ぎなかった。到着すると、同僚のエフゲニーを紹介された。彼はデスクトップPCの組み立てを担当するメインの、そして唯一の従業員だった。見たところ、店を回しているのは彼だった。彼はたどたどしい英語しか話さなかったので、電動ドライバーとネジの箱を手渡され、僕はさっそく作業に取りかかった。最初の1週間は二人でたくさんのPCを組み立て、とても楽しかった。ある日、バスに乗り遅れた僕を彼が車で家まで送ってくれた。雨の日で、コークの狭い道を走りながらおしゃべりして笑っていたのだが、突然大きな音がした。バックミラーを見ようとしたら、そもそもバックミラーがなくなっていた。どうやら別の車にぶつけて、吹き飛んでしまったらしい。エフゲニーは気にも留めず、濃い東欧なまりで「もう3回なくしてる」と言って、そのまま運転を続けた。
2週目に入ると、上司が様子を見に来た。どうやら、3週間のインターン期間用に想定していた作業量を、僕はすでに終えてしまったらしい。僕はPCの組み立てやセットアップには慣れていたので、無理もない。
手持ち無沙汰にならないようにと、彼らは別のタスクを用意した。奥に置かれた古いWindows 98のPCで、彼はブラウザでsilverpages.ieを開き、「computer」で検索した。しばらくすると、アイルランドの「何らかコンピューターに関わる」企業の住所が延々と並んだリストが表示された。各エントリーは想定通りのフィールドで構成されていた。会社名、住所、電話番号、ウェブサイト(あれば)、そしてキーワードのリストだ。
上司は、競合ベンダーを一覧にまとめる必要があると言った。彼はエントリーから一つのフィールドを慎重に選択し、コピーしてExcelシートに貼り付けた。残りのフィールドについても同じことを繰り返す。「これだけだ!」と彼は作り笑いを浮かべて言った。僕が退屈な2週間を過ごすことになるのは、お互い分かっていた。
要するに、ウェブデータベース全体を手作業でスクレイピングさせて、僕を忙しくさせておこうというわけだ。
侮辱と捉えることもできたが、僕はむしろ挑戦と受け止めた。
silverpages.ieのページ番号はGETパラメータで制御できることに気づいた。
「スクレイピングを自動でやるプログラムを書いてもいいですか?」と聞くと、上司は明らかに戸惑った顔をした。「えーっと…何をやってもいいけど、追加のソフトをインストールするのはダメだよ!」そう言い残して、彼は行ってしまった。
インストールされているプログラムを見る限り、選択肢はほとんどなかった。Excelかマインスイーパかだ。ExcelのVisual Basicマクロがかなり強力なことは知っていたが、それでウェブサイト全体をスクレイピングできるかどうかは分からなかった。
しばらくして、ウェブサイトをExcelシートに取り込む機能を見つけた(なんと素晴らしい機能だろう)。これは完璧に動いたので、あとは各ページごとに一時シートを作り、重要なフィールドをすべて「マスターシート」にコピーしてから一時シートを削除する、というマクロを記録するだけだった。マクロを記録してコードを眺め、残りの一日はループの中でURLを書き換える方法を考えたり、マクロを整理したりして過ごした。「マクロを実行」ボタンを押すと、あとは座って待つだけだった。コンピューターは全力で動き続けていた。一番怖かったのは、プログラムがクラッシュするか、メモリが足りなくなることだった。そのPCでマインスイーパをやるのは控えたので、僕はほとんどビリヤードをしたり、エフゲニーとおしゃべりして過ごした。
翌朝オフィスに来ると、プログラムは作業を終えていた。驚いたことに、SilverPages全体をスクレイピングし終えており、リストには何千件ものエントリーが並んでいた。書類をメールで上司に送ると、僕はまたマインスイーパに戻った。
1時間ほどすると、スーツを着た3人の男が僕の後ろに立っていた。もう一度リストを見せなければならなかった。彼らは僕が一人でやり遂げたことが信じられない様子で、データをスクレイピングする仕組みを見せると、彼らにとって僕は何か超能力を持っているように見えたようだった。
彼らは別のタスクを渡すこともなく去っていき、僕は残りの2週間、何をしても自由になった。そこで彼らのために在庫管理ツールを作ることにした。これもExcelで管理できるものだった。手作業で維持していたスプレッドシート用の、見事なExcelフォームに過ぎなかったが。夏休みの2週間を費やしてそのツールを完成させた。報酬を払うと言われたからだが、もちろん払われることはなかった :)。
学んだこと
- Excelマクロの力を決して侮るな。
- 退屈な仕事を任されたら、制約を加えて挑戦的にしてみよう。
記事をランダムに読む
コメント
ログインしてコメントする