Excel VBAを始めた話と所見をつらつらと

はじめに

 こんにちは。Aitoです。普段は大学生として学んでいて、時々仕事としてVBAの開発依頼を受けています。先日私のこのツイートに対し、興味あるとおっしゃってくださった方がいらしたので、VBAに対して思うことをつらつらと書きつつ思い出語りでもしようと思います。ガチプロのプログラマの方から見ればお遊び程度かもしれませんが、ご容赦ください。

受験の時も合格体験記は全く役に立たないと思っていた種類の人なので、この記事もVBAの勉強の役に立てばいいとは一つも考えていません。

VBAを始めた経緯

 まずは、きっかけとなった父の話から。当時から貨物管理系の職場でVBAを使って作業を自動化していた父は、大学時代からプログラミングを趣味でやっていたらしいです。サークルでCOBOLやFORTRANなどから入って仕事で必要ということでVBAをやり始めたと聞きました。昔は今のような発達したコンピュータ環境がなかったため、メインフレームと呼ばれる汎用大型コンピュータでの作業だったそうです。さて、時は私が小学4年生の頃に飛びます。小学4年生の時、工作や読書が大好きでした。ある日父がExcelでプログラムを組めることを教えてくれて、私は自分の書いたとおりにコンピュータが動いて、しかも工作と違ってお金もかからないところにとりつかれました。当時(今もですが)ゲーム機を持っていないので、自分で動かせて何でも作れるものに興味を持った記憶があります。ゲームより早くプログラムに触ったことが良かったのかと思ったり。以上が始めた経緯になります。

勉強したこと?

 きっかけは正直どうでもいいのですが、VBAはどうやったら書けるようになるのか気になる方は多いと思います。少なくともこの記事を見ている貴方は。以下は私の感想であり、考えには根拠も何もないのでどう捉えるかはお任せします。

 まず、最初に父から教わったことはコンピュータの基礎です。パソコンの基本的な扱い方を教わりました。小学校でも宿題でパソコンで作業することがあったんです。社会人の方でもここから怪しい方々もおられると耳にしています。少なくとも基礎的な操作ができないことにはお話になりません。そして、小学4年生で最初に最も簡単といえるVBAのコードを見せもらって興味を持ち、とりあえず基礎的な構文だけ教えてもらいました。自分でその後ぼちぼち考えつつ、家にあった本(以下に記載)を見つつVBAで簡単なものですが、頑張って作っていました。あ、皆さん最新版を求めがちですが、昔の本は基礎から解説してあるものも多く、良書が多いので基礎を勉強するには昔の本をお勧めします。この時、知識ゼロから情報の検索&抽出を自力実装することに成功して大興奮してたのを覚えています。
 すぐ調べるのもいいですけど、自分で考えて作るっていう経験がないと多分プログラムは書けるようになりません。書けるとしたらよほどの天才です。私はやってこなかったですが、ゲームロジックを考えるのもとても良いと思います。

 しかししかし、途中で行き詰まるわけです。そりゃそう。だってプログラムの基礎がないんだから。「これ、何に使えるの?」となって途中から読書に戻り始めてしまい、次に再燃したのは2年後でした。父にプログラムやりたいならパソコンの仕組みを学べと言われて下記の本を読みました。

 あくまで導入ですけど、当時は結構面白かったです。TwitterでもたくさんのVBAをされている方々を見てきましたが、コーディングできる方は軒並みコンピュータの仕組みレベルから精通されてる方が多いです。例えば簡単なものだと、変数の実態とか2進数とか。仕組みを知らないで作れるのは、たくさんの先人たちが作ってくださった技術ブログやまとめサイトのおかげです。その方々がどのようにしてその知識を身に着けたのか、考える機会があってもよいかな。できる人から学ぶって、その方々の経験をいかに辿るかに尽きるのではないでしょうか。知らんけど。
 Pythonなどの簡潔に記述できる言語も台頭してきている中で車輪の再発明が改めて大事になってる気がします。仕組み知らないと新規に作ることも改修することもできませんしね。

やっぱり…

 それでも中学生の時はまだ全然プログラム書けなかったんですよね。VBA以外にVB.NETに手を出して学んでいた時期でもありました。成績下がるとパソコンの使用が制限されたので、そりゃ勉強頑張りましたよ(遠い目)。市の実力テストで491点/500点まで伸びました。さらに本格的に伸びだしたのは高校からで、高校受験が終わって脳みそがアップグレードされていたのでしょうか、当時は全国偏差値70(といっても低いですけど)は超えて当たり前の状態になっていて、プログラムも同時に実装力が上がりました。VBA学ぶ前にやっぱり数学勉強した方がいいと思います。あと、国語。コーディング力と学力はある程度関係があると思います。実際競技プログラミングで上位を占めているのはほとんどが高学歴の方ばかりです。東大、東工大、京大など。私が逆立ちしても到底及ばない天才ですよ、彼らは。高専・専門学校に通っていらっしゃる方にも才能にあふれた方もたくさんいます。まあ東大や東工大に編入していくんですけどね。とりあえず、勉強しましょう。

取っ掛かりは楽だけど

 VBAって取っ掛かりすごく楽だと思いませんか?Excelが入っていれば基本度の環境でも動きますし、面倒な環境構築が不要です。よく言われることです。でも不思議じゃないですか?それなら何故敵視されたり難しいと言われたり、資格試験があるのかと。セキュリティリスクもよく話題に上がりますよね。これって楽なんでしょうか。VBAは一般にはレガシー言語とカテゴライズされる言語で、とにかく機能が少ないです。そして実行が容易すぎます。前者がメンテナンス性能を下げ、開発速度を下げ、嫌われる要因になっています。後者はセキュリティリスクを上げています。正直当時小学生だった私でも始められるくらいには取っ掛かりは楽です。でも、使いこなせる人が少ない。原因はなんでしょうね。
・どのようにシステムを設計するかが重要なのに、無理やりVBAで書こうとする
・よくわからないのにいじって壊す
ほかにも色々あると思います。ちょっと悲しいかな……。

最後に

 小学生ですらVBAが書けるのですから、きちんと練習すればだれでもVBAは組めるはずなんです。特に個人での業務改善が目的であればそこまでのレベルは要求されません。仕事にするなら話は別ですよ。
 で、YouTubeには初心者向けの動画がわんさか上がっています。私もたまに見るんですけど、本当にVBAしか教えていないですよ。これじゃあ使いこなせる人が増えないわけだと思いました。背景知識も一緒に教える動画、すべてのコードに根拠を持たせてその説明も入れる動画があれば私は大絶賛します。VBA業界は少しクローズな傾向があるように感じており、その指摘も時々見かけます。開発環境的な要因もあり簡単な解決は難しそうです。かといってPythonなどから操作する場合、VBAほど手軽に扱うことができず逆に面倒くさいことになりかねません。Googleスプレッドシートはオフラインで動かないので使い勝手が微妙ですし。いい解決策ないものですかねぇ。MSさん、動いてくださいよ。


この記事が気に入ったらサポートをしてみませんか?