VBAの亡霊

社会人の「今から勉強してIT人材に転身し年収増」は可能なのか…大学教授が勧める"最初のプログラミング言語"

朝方、ニュースなんぞをチェックしていたら、プレジデントオンラインからこんな記事が流れてきてぶっ飛んだ。

既に働いている人もIT資格を取ってIT技術を使えるようになろう、プログラミングも始めてみよう、という基本的な趣旨はわかる。が、そこで「最初のプログラミング言語」としておすすめなのが「VBA」というのを見て椅子から転がり落ちそうになった。

最初のプログラミングにおすすめなのがVBA? 既にアップデートもされておらず、オブジェクト指向の本格実装もはるか昔に放棄され、Excelですらデフォルトでは使えないようになっていて、Microsoft自身も「もう使わないで。Office ScriptsやPowerプラットフォームに移行して」といってる、時代から完全に取り残されつつあるVBAがおすすめ?

Pythonは環境構築に手間がかかり、コードを書くハードルも高い? パソコンだろうがタブレットだろうがいつでもどこでもColaboratoryにアクセスしてGeminiボタンを押して「これ書いて」といえばコードを自動生成してくれる(コードの説明もすべてしてくれる)Pythonがハードルが高い? ではJavaScriptは? メモ帳でHTML書いてWebブラウザにドラッグするだけで動くWeb系言語も敷居が高いって?

そもそも今の時代、プログラミングを始めるための環境構築なんて不要だろ? クラウドで編集から実行ビルドデプロイまですべて行えるようなサービスが山のようにあるのに、「まずは自宅のパソコンにソフトをインストール」ですかい? そもそも、「誰でもExcelぐらい自宅のパソコンに入ってるだろう」という前提はどこから出てきた? 入ってないPCを使ってる人だって大勢いるだろ? そんな人に、使いもしないOfficeを買えってのか?(まさか会社のPCに個人でVBAマクロ書いて勉強しろ、ってか?)

VBAは現在、使用禁止を決めている企業が着実に増えている。それはセキュリティ上の問題がもっとも大きいのだけど、それ以上に問題となっているのが「業務の属人化」だ。VBAで書いたマクロは「書いた本人にしかわからない、引き継ぎや保守が恐ろしく難しい」ものになりがちだ。また、Power AutomateなどのPowerプラットフォームとの連携機能がなく、現在のインターネットを介した連携ができない。もちろん、着実に利用が進んでいるWeb版Excelでは使えない。

更には、VBAで学んだ技術は他に転用できない。PythonやJavaScriptで学んで得た技術は、他の言語でも必ず活きる。だがまともなオブジェクト指向すらない、21世紀に入ったところで進化をやめたVBAから得られるものなど何もない。

だからこそMicrosoftは躍起になってOffice ScriptsやPowerプラットフォームへの移行を進めているんじゃないか。そんな時代に、「初心者はVBAから始めよう」だって? 「誰でもインストールやセットアップなど一切不要ですぐ始められる、スプレッドシートでデータ管理も簡単」というなら、GoogleスプレッドシートでApps Scriptじゃあなぜいけない? これならJavaScriptベースで学んだ知識も技術もすぐにWeb開発に転用できるぞ。なおかつGoogleワークスペースのサービスと連携した統合的な開発まで対応可能だし、Fetch APIを使えば外部サービスとの連携もできる。VBAのような蛸壺言語を勧めるメリットって一体何なんだ?

これはいつの時代の記事なんだ? この記事見て本当にVBAから始めようとする人が続出したらどうなる? その中に、本当にプログラミングに素養のある人がいたら、大げさだが社会の損出だぞ? VBAをすらすら書けるだけの能力があるなら、PythonだってJavaScriptだってすぐに書けるようになる。そのことは断言できる。そしてそのほうが圧倒的に自身のスキルになる。

想像してみてほしい。プログラミングに高い能力を実は持っている人間が、「プログラミングを始めよう」と思ってVBAを触り、VBAの解説書やリファレンスを山ほど買って高度なマクロをスラスラ組めるまでに成長していく姿を。その高い能力は、自分の部署の表計算ソフトを自動化することにしか使われないのだ。そして「君はIT能力に優れているから開発の部署に行ってみようか」となったら、それまで身につけたほとんどの技術を捨てて、一からPythonやJavaScriptを学び直さなければいけないのだ。「自分はプログラミングができる」と思っていた当人は、オブジェクト指向だの非同期処理だのラムダ式だのジェネリクスだのといった聞いたこともない概念が次々登場してくるのを見て、「自分が身につけたのはプログラミング言語の能力ではなくて、VBAの他に転用のしようがないチマチマした知識に過ぎないんだ」ということを痛感するだろう。なんという徒労、なんという無力感。

なんとかして初心者でもプログラミングに慣れ親しみ道具として使えるようになってほしいと思いながら日々入門書を執筆している三文ライターの身からすれば、今の時代にこんな記事がその分野のそれなりの地位を得ている人から出てくることが信じられない。この記事を書いた人は、Colaboratoryを使ったことがないのか? AIでコーディングしたことは? Project IDXをはじめとするクラウド環境でコーディングしたことはないのか?

……うむ。ちょっと熱くなってしまった。まぁ、これを書いた当人だけを責めても仕方がないだろう。今でも本屋に行けば、VBAの新刊が出ていて平積みされていたりする(そんなもん置くスペースがあるならオレの本をおいてくれ)。既にVBAはMicrosoftすら「使わないでくれ」といってるのに、そんなことはお首にも出さず、VBA本を売りつけようとする。それは表計算ソフトにVisiCalcを、あるいはデータベースにdBASE IIを売りつけるのに近い詐欺的行為だと思うのはオレだけなのか。

VisiCalcはもうない。dBASE IIも、もうない(……ないよな?)。古い技術は新しい技術に取って代わられる。代替技術があればどんなものでも更に良いものに移行できる。ただ一つ、VBAを除いては。VBAの亡霊は、21世紀になってもう四半世紀は経とうという今になっても、まだITの世界をさまよっている。そして今も、この亡霊に取り憑かれた人間が大勢無意味なマクロを書き続けている。恐ろしい。ITの世界に、これ以上に恐ろしい怪談はない。

人気の投稿