言語の歴史は人類の歴史。そして人類はコンピュータを言語で動かすようになった。

手軽に簡単とかやってるからクソコード(VBA)が増殖する

»

今回もVBAをDisっていきます。私のことをVBAが嫌いな人と思う方もいるかもしれませんが、私の嫌いなのはVBAというより、VBAで調子にのってる人です。VBAの入門講座をクリアしたレベルで、プロのエンジニアと並んだ感覚になられても困ります。こういう人は学ぶことを放棄したプログラマと同じです。申し訳ないですが、一通り役割を果たした後は現場のお荷物にしかなりません。

「いちいちプロとしての視点を押し付けるな!」と憤慨される方も多いかと思います。私もいろいろな立場で、ユーザが書き散らかした老廃物 (VBA) のリファクタリングや再設計をやってきました。VBA関連で一番しんどいのは、VBAの修正というより、「VBAで簡単にできたんだから」と、何でも簡単に済ませられると勘違いされることです。安直に済まされた事案の後処理ほど面倒くさいものはないです。

お手軽にVBAを始めた人はドキュメントを書きません。「お手軽さ」に惹かれる人は、おおよそ似たような傾向があります。間口を広げてVBAを使う人を増やすのはいいと思いますが、安直な人が増えると後始末をする人が苦労します。「お手軽」とか「簡単」ではなく、書いたコードにメンテナンスが必要なことをちゃんと教えて欲しいものです。できた時点で満足してメンテナンスをしない人が多すぎます。

世間では誤解されているようですが、VBAはお手軽でも簡単でもありません。Excelの機能を的確に把握したうえでないと、使いこなすのは難しいです。単に知名度が高いのと、Excelの画面に見慣れているからという理由で使っているだけです。お手軽じゃないものをお手軽と勘違いされるので、クソコードの酷さは他の言語の比ではありません。GUIの欠点とCUIの欠点を選りすぐったような腐臭を放ちます。

VBAで外部のファイルの読み込み処理を行うと、複雑さが跳ね上がります。VBAしか知らない人だと、それが普通と思い込んでしまいます。正規表現を使えば三行で済むような処理を、何十ステップもかけて処理していたりもします。書いたコードがGUI上で動くので、インパクトはあるのかもしれません。しかし、VBAはインターフェイスがExcelという以外のメリットは無いです。道具は特性を踏まえたうえで使いましょう。そこを外さなければ、きっと便利に使いこなすことができるでしょう。

Comment(17)

コメント

abekkan

てめえ、喧嘩売ってるのか!

abekkan

VBAのことをせっせと書いているコラムニストがいるところで、これだけディスるのは非常識だと思いませんか。


私はここでずっと書いていて知名度を上げようと努力してきました。


不愉快かつ、迷惑なのでコラムニストをやめてください。お願いします。

Horus

abekkanさんの名誉のため、あえてコメントの公開は控えておこうかと思っていました。しかし、ご本人の対応が大人気ないと思ったので、頂いたコメントを公開しました。


そもそも、私はあべっかんさんのコラムをあまり読んでいません。なので、敵という認識すらありません。また、あべっかんさんの過去コラムを改めて読み返してみると「VBA」をネタにして書いているコラムは数本あったかな?程度でした。


また、あべっかんさんのコラムと私のコラムでは、読んでる客層が全然違うと思います。自分のコラムでVBAの活用方法にでも触れれば、逆に良いアピールの機会になったかと思います。VBAが好きならば、技術的観点からご指摘いただければよかったのではないでしょうか。


あべっかんさんは私を「コラムを書く資格がない人」と指摘しますがいかが、こういう叩き合いは無益かと思います。ここは一本、VBAを肯定するネタでコラムを書いてみることにします。コラムニストとして、「ネタの幅」で勝負をつけさせていただきます!

abekkan

たまには、売られた喧嘩を買ってみました。

Horus

買ったはいいですが、金額たりていない感があります。

ぼく

手軽に簡単に書いちゃうからクソコード(コラム)が増殖しちゃうんですね、よくわかりました。

一通りコラム読んでる人

ちゃんと読んでからコメントしようよ。
これabekkanさんの偽物ですかね?
資格ないんはどっちなんだか...大人げなさ過ぎて非常に残念。

VBAは便利だけど……

Horusさんの言う通り、VBAができる程度で、エンジニアと名乗られても困ります。
VBAはあくまでも事務作業の補助程度に使うものであって、きちんとした業務システムで使うべきじゃないですよね。


素人さんが事務作業を楽にするために使う分には大いに推奨しますが。
あとは、PMとかが社内資料作るときのデータ集めとかで使う分には便利ですかね。


そろそろ、クラウドのタスク管理とか使いたいけど、会社が古い体質なので未だにプロジェクト管理資料はオールEXCEL……。
こういう体質っていつまで続くんでしょうね。


話が横道に逸れました……。


ということで、Horusさんは正論言ってるだけなのに、なぜ噛みつかれてるのか分かりませんでした。
自分がVBAをメシの種にしてるからって、被害妄想甚だしい気がします。


せっせと知名度を上げてきてるって、VBAのことなのでしょうか?
それとも自分のブログのことなのでしょうか?


後者だとしたら、このコラムはお金儲けのために宣伝広告する場ではないと思うので、そういう目的でコラムを書いている方が、ここで書く資格はないと思います。
前者だとしたら、このコラムを読んでいるような読者は少なくともエンジニアの端くれだと思うので、VBAぐらい知っている人たちだと思います。


とりあえず、abekkanさんの対応が幼稚だったので、こんな感じで煽ってみることにしました。


Anubisさんが引き合いに出してた昔のブログよろしく、炎上するのを期待しています。
やり取りを眺めて暇を潰したいので(笑)

Horus

> ぼく
そこまで言ったらあべっかんさんに失礼ですよ。

Horus

> 一通りコラム読んでる人 さん
私も目を疑ったのですが、ご本人で間違いないようです。ただ、あべっかんさんのコラムはほとんど読んでいなかったので、「?」でした。

Horus

> VBAは便利だけど…… さん
コメントありがとうございます。共感頂けたようで、励みになります。


Anubisさん・・・あれは壮絶ですよね。

Horus

喧嘩を買われたはいいが音沙汰がありません。


あべっかんさんに限らず、気分を害された方には多少の申し訳なさはあるので、VBAをやっている人の役に立ちそうなコラムを書いてみました。単にVBAを馬鹿にしているだけの人ではないことはご理解いただけたかと思います。


あべっかんさんも「VBAのことをせっせと書いているコラムニスト」と自負するのであれば、何等かのVBAに関するネタをお持ちかと思います。私とは別のレイヤーで「気分」ではなく「意見」をコラムに書いてコラムニストとしての名誉をご自身で回復されてはと思います。


もちろん私も別のレイヤーで自分の発信したい意見を発信していきます。ご意見があるのであれば、今回のような良識から逸脱した対応ではなく、ご意見として発信して頂ければと思います。

あおちん

利を求めるビジネスマンと、理を求めるエンジニアの対立が縮図になってる感じがして面白い。
言葉のチョイスこそあれかもだけど、最後に記載している通り、道具の特性をちゃんと理解して使おうぜ!ってだけの話だしなあ。。
この対立が現実世界で起こってしまったときに、Horusさんならどうするか、記事に起こしてちょんまげ。

Horus

> あおちん さん
言葉のチョイス・・・なんか申し訳ありません。ただ、平凡な表現だとインパクトに欠けて誰もよんでくれないので、すごくセンスが問われるところです。今後、磨きをかけていきたいところです。


> この対立が現実世界で起こってしまったときに、Horusさんならどうするか、記事に起こしてちょんまげ。


面白そうですね、来週を目途に書いてみようかと思います。

ただ、リーベルGさんが小説で書いてくれた方が面白いネタかと思います。

Horus

-- この場を借りて謝罪させて頂きます --
こちらのコラムに付きましたabekkan氏のコメントについて、何等かの根拠があると考え、彼のコラム、コメントを時間をおいて確認しました。その結果、確かに私からabekkan氏に打撃を与えた心当たりがあるので、この場を借りて謝罪をさせて頂きます。


ただし、これは私の推測に基づく謝罪ですので、何等かの相違がありましたらご本人から指摘を頂けると思います。


彼の主張としては、コメントを確認したところ「全国のVBA従事者は不快させるコラムを書いた」ことに憤慨されたというのは間違いなさそうです。この「全国のVBA従事者」とは、彼の運営しているVBAの教室の生徒さんか受講希望者だったのではないかと思います。


もしそうであれば、彼に直接的なダメージを与えたことになるので、憤慨する理由に筋が通ります。私も彼の教室の運営に悪影響が出ることを望みません。もしそうであるなら、打撃を与えたことに気づかなかったことを謝罪させて頂きます。謝罪させて頂いたうえで、他のコラムニストさんと同様に分け隔てなく接していきたいと思います。


個人的には教室の宣伝という目的でエンジニアライフにコラムを書くことはOKだと考えています。このことの是非に関しては、彼自身が確認して頂ければと思います。読者の方々も、個人の判断によるコメントでの批判は避けて頂けるようお願いします。


あと、エンジニアライフは情報発信を行う場所です。事情を把握したうえで、彼に忖度する理由はありません。私に限らず他のコラムニストさんが、彼の教室の運営に不利になる意見を発信してしまうこともあるかと思います。そうでなくても、彼と同じ目的のコラムニストが参入することも考えられます。その際の対応はすべて、ご自身の力で対応して頂けるようお願いします。私や他のコラムニストが責任を負う理由はありません。


コラムを読んで頂いた方、コメントを付けて頂いた方、お騒がせいたしました。この謝罪をもって、この件に関してのコメントは終わりにして頂けるようお願いします。


あと、ご対応頂いた編集者様、ありがとうございました。


-------------------
ということで、みなさん。お祭りモードから通常モードに移行してエンジニアライフをお楽しみください。

abekkan

Horusさん
コメントおよびコラムに感情的に書いてしまい、すみませんでした。
そして私のコラムも見ていただき、ありがとうございました。
私の問題となったコラムからは最後の章だけ削除しました。
ご迷惑をおかけしました。

Horus

> abekkan さん
コメント承りました。


ただ、コラムの問題個所は消さなくてもよかったです。そこも含めて一本コラムを書いて、自分で説明して欲しかったです。例え誹謗中傷でも、コラムに書く以上、それは abekkanさんの意思なので尊重します。多少問題のあるコメントでも公開して返答しているのも、そういう理由です。


私のコメント欄で謝罪しても、後からコラムを読んだ人が「!」となって、攻撃的なコメントを書くかもしれません。ご自身のコラムで謝罪すべきというのは、そういう意味合いもあります。


あと、エンジニアライフを教室の宣伝に使うのは控えられた方がいいかと思います。客観的な意見ですが、技術的観点で書いたコラムに感情で反応した時点で、生徒さんや受講を検討している方は「技術力低いんだな」とか「ブログの書き方講座といいつつ何をやっているんだ」となります。辛い判断かと思いますが、教室の運営にダイレクトに影響しそうなのでご指摘しておきます。


今後、エンジニアライフは宣伝ではなくご自身の教室のコンテンツを見直す目的で続けられてはどうでしょうか。私の書いたコラムにしても、自分自身の見直しのために情報発信するというのは、思索力を上げるのに非常に役にたちます。結果として、教室のコンテンツの充実にも繋がるかと思います。今回の汚名を返上したいなら、そういうスタンスに改められることをお勧めします。


あと、どさくさに紛れて、私をフォローしてくれたコラムニストさんもDisってましたが、何か返答しておくべきかと思います。

コメントを投稿する