VBA

タカーシの挑戦状 ~パーフェクトVBA発売に寄せて~

皆さんは普段、どれくらい挑戦状を叩きつけたり、叩きつけられたりしているだろうか

え、叩きつけも叩きつけられもしないって?

本当にそうでしょうか

この記事は私も所属するノンプロ研ブログリレー企画、アドベントカレンダー2日目の記事として執筆しています。
今回はこのノンプロ研の主宰者、高橋宣成氏が11月に上梓した「パーフェクトVBA」に寄せて、タカーシ(高橋氏)の挑戦状について考えてみることにする。

では、行ってみましょう!

挑戦状と言えば

挑戦状と言えば、真っ先に思いつくのは「たけしの挑戦状」ですね

不条理過ぎる謎解き設定などで伝説のクソゲーとも名高い「たけしの挑戦状」。知らない人はこの記事を読んで欲しい

「たけしの挑戦状」は今の小学生が遊んでもやっぱりクソゲーなのか?https://nlab.itmedia.co.jp/nl/articles/1708/16/news011.html

クソゲーと呼ばれつつ、発売当時も数十万本は売れ、有野課長がゲームセンターCXの第1回でプレイしたゲームであり、スマホで移植版が発売されるほどには根強い人気がある作品だ。

なぜここまで人の心を惹きつけるのだろうか。ただ難しい、ただくだらないだけのクソゲーなら、伝説として語り継がれないと思うのだ。

これはやはり、あの天才ビートたけしが監修し、それもただの名義貸しのようなものではなく、たけしならではのナンセンスな不条理、バカバカしさが詰め込まれた上での難しい作品だったからではないだろうか。このゲームを、「解けるものなら解いてみろ!」と、文字通りたけしからの「挑戦状」として当時の少年少女が受け止めたからこそ、未だに語り継がれる作品になったのだと思う。「常識があぶない」「謎を解けるか、一億人」等の発売時のキャッチコピーも、その挑戦心を煽ったであろう。

ここが大事だ。

挑戦状とは、叩きつけることより、「叩きつけられた」と受け止めることが大事なのだ。

街を歩いていて、ふと目つきの悪い青年と視線が合い、「てめぇなにガン飛ばしてんだヨ!」と因縁をつけられたことはないだろうか。や、今のご時世はそういうこともないのかもしれないが、触るもの皆傷つけたギザギザハートのビーバップ世代なら一度や二度は経験があるはず。

こちらはガンを飛ばすどころか、そちらを見た意識すらない。しかし、常に臨戦態勢の先方は視線が合った(ような気がした)瞬間に「挑戦状を叩きつけられた」と思うわけだ。

登山家・冒険家が山を登る理由を聞かれて、「そこに山があるから」と答えるというアレも、「山に、『登れるもんなら登ってみぃや』と挑戦状を叩きつけられたから」と換言してもいいだろう。なんなら、無言の山から挑戦状を受け取れる人こそが登山家・冒険家の条件とも言えるのかもしれない。

前置きが長くなった。

今日お話ししたいのは、ついに発売された高橋宣成著「パーフェクトVBA」についである。

パーフェクトExcel VBA 高橋宣成

 

「パーフェクトExcel VBA」のまえがき

ノンプログラマー界隈、Excel界隈、VBA界隈では話題になったのですでに読んだ方もいるかもしれないが、もう一度この全文公開された「まえがき」読んでみて欲しい。

いかがだろう

なにか受け取っただろうか

なにか、挑戦状を受け取ったであろうか

この文で、太字でもなんでもない平文で、さらりとすごいことが書いてある

「2章から7章までは、下位の小さなレイヤーから最上位のレイヤーまで順番に理解していただくように構成しています。土台を作ることが最大の目的なので、読み飛ばしをせずに、すべてのコードを写経し、理解してください。」

もう一度言う

読み飛ばしをせずに、すべてのコードを写経し、理解してください。

プログラミングの本で、冒頭で著者自ら「全部写経して全部理解しろ」と高らかに宣言している本を、これまで目にしたことがない。

や、自分が序文を読み飛ばしてるだけで、ほとんどのプログラミング本にはそう書いてあるのかもしれない。不安になって手元にあるVBA本を手に取ったこれだけVBA本があってまだ「パーフェクトVBA」が必要なのかというツッコミは棚の最上段に上げておく。

調べた書籍はVBAの入門書が中心で、このパーフェクトVBAより初心者向けが多いというのはあるが、写経で理解しろゴラァと冒頭で先制パンチをかましてくるのは「パーフェクトVBA」をおいてなかった。

いやちょっと待て。「調べた本は入門書が中心」と書いたが、写経とかむしろ初心者向けの話だろ。オライリー本とかで冒頭で「ちゃんと写経するように」とか書いてある可能性むしろ低いだろ。

ボリューム、内容ともにこの「パーフェクトVBA」と部分的には競合しているとも言える「Excel VBA 本格入門 ~日常業務の自動化からアプリケーション開発まで~/大村あつし」のまえがきにはこうあった

 Excel VBAで学ぶべきことの70%を一冊の本にまとめあげるのは不可能と言われてきました。それを可能にしたのは、1つは本書の圧倒的なボリュームです。ですから、逆にそのボリュームに圧倒されて、「もっと薄い本はないだろうか」と思うかもしれませんが、「薄い本」を購入したところで、必要なテクニックの半分もマスターできずに、結局は2冊目、3冊目の本を買い求めることになるでしょう。

さすが、「入門」と「本格」という家庭料理風レトルトみたいなある意味矛盾したタイトルを冠している本書だ。500ページ超の重みを感じながら書店で手に取ってまえがきを読んだ人の不安を、無理にかき消そうとせず、「厚いには意味がある」と重みに対する不安感を安心感へと転換するナイスな導入だ。さらに「本格入門」は続く。

確かに、本書のボリュームは威圧感を与えるかもしれませんが、一度ではわからないところは後回しにしたり、自分に必要なところだけをお読みいただければ十分です。

ボリュームは必然的に威圧感を帯びてしまうことを謙虚に自覚している。そしてもう一度言おう。

自分に必要なところだけをお読みいただければ十分です。

そうなのだ。十数冊のVBA本のまえがきを読んだが、「必要なところから読んで構いません」と書いてある本は何冊かあったが、「読み飛ばしせずに順番通りに理解しろ」と明言していた本は一冊もなかった。

 

「パーフェクトVBA」にないもの

そして、この十数冊のVBA本の冒頭を読み込んで気づいたことがもう一つある。

それは、今やVBAに限らずほとんどのプログラミング本にはほぼ必ずあるのに、この「パーフェクトVBA」にはないものの存在についてだ。

「パーフェクトVBA」を購入された方は気づいただろうか?

そう、この「パーフェクトVBA」には、ダウンロードできるサンプルファイルがない。
サンプルコードを記載したものだけでなく、練習用のダミーデータ、練習問題の解答などサンプルファイルの内容は様々ではあるが、いまやプログラミング本では出版社のサイトからサンプルファイルがダウンロードできるのは、もはやデフォルトだ。

でもこの「パーフェクトVBA」にはサンプルファイルがない。これはどういうことだろうか。「準備できなかった」「忘れた」そんなはずはない。
これは明らかに確信犯だ。

「確信犯」という言葉は、悪いと自覚しながら悪いことをする人、悪いことをしながらも平然と悪びれずにいる人という誤用が一般化しているが、ここは「政治的、思想的意図に基づいて犯行に及ぶ人」という本来の意味での「確信犯」を使いたい。

そう。これは、

まえがきの「写経してください」と一対一対応する「コードは自分で書きやがれ」というメッセージであり、著者の想いそのもの

だと私は受けとめた。

もちろんこれは、せっかく自分が書いたコードをコピペされたくないという高橋氏の狭量さからきたものではない。高橋氏は本拠地とも言えるブログ「いつも隣にITのお仕事」でほぼ毎日のようにコードを上げているし、もちろんWebではコードはコピペは可能だ。J●SRACのせいで右クリックできないJ-POPの歌詞掲載サイトや、部分的に解禁の波があるとは言え基本的にはネットNGのジャ●ーズ事務所関連のサイトのような仕様にはなっていない。

「いつも隣にITのお仕事」はひとつのプロジェクトを何回かの「ミニ連載形式」で解説しているので、1トピック1ページ形式の主要なプログラミング解説サイトと少し趣きが異なる。とはいえWebという仕組み上、またGoogleという検索エンジンの仕様上、アクセスする人が連載の一回目から読み始めるとは限らないだろう。またVBAに関しては、充実したVBAの解説サイトが他にもいくつかあるばかりだけでなく、個人の単発記事なども含めるとかなりの量の情報がネット上にある。

つまり何かVBAで困ったことになっても、たいがいのケースであれば「似たような状況」をネットで見つけることができるのだ。

そして、そうして検索でヒットしたサンプルコードの中身を吟味せずにコピペし、継ぎはぎし、かろうじて「何とか動いてる」プログラムを作っているVBAユーザーはけっして少なくない。

まさにこの状況こそが高橋氏に「パーフェクトVBA」を執筆させた動機なのではないだろうか。

VBAの残念な特性

思えばVBAに関する前著、「ExcelVBAを実務で使い倒す技術」はタイトルでVBAを謳っておきながらVBA自体のプログラミング言語としての文法解説や、どんなコードを書けばどんな「実務」ができるのかについては全く触れられていない。チームでマクロを共有したり、運用中のマクロをメンテする際の心構えや作法をまとめたような、「非エンジニア向けVBA版リーダブルコード」のような一冊となっている。

そして今作「パーフェクトVBA」の第一章、まえがきの直後の「1-1-1」ではこんなことが書いてる

  • VBAの情報が頭の中でごちゃごちゃになっている感覚がある
  • コードを書くときにいつも「この方法でいいのか」と不安がある
  • 開発したツールのメンテナンスが重荷になっている
  • 以前書いたコードを読み返すのに時間がかかる
  • 前にできていたはずのことができなくなってしまった
  • 動くには動いているけど身についている実感がない
  • 新しい命令を覚えるのが負担になってきている

これは本書を手にとるような人であれば「あるある」とうなずく状況がいくつもあるのではないだろうか。この辺は「ExcelVBAを実務で使い倒す技術」で解消を試みようとしている状況と重なる部分も多い。

VBAは

  • みんな大好きExcelがあれば新たなものはほぼインストール不要
  • 多くのプログラミング言語を学んだり動かしたりする際に必要な環境構築が不要
  • 省略しても結構動く

といった特性を持つ。

これはVBAの強みでもあるが、「悪い例」として挙げたような状況は「非エンジニアでも学習を始めやすい、単純作業を置き換えただけの簡単なものなら自分ですぐに作れる」という特性が裏目に出てしまうケースだ。

VBAはこの「間口は広く、敷居も低い」という特性ゆえの残念な部分がたしかにある。そしてその特性ゆえ、残念な部分がむしろ拡大再生産されていってしまうのが現状だ。この現状に対するもどかしさ、この現状をなんとかしたいという想いこそが高橋氏に「パーフェクトVBA」を執筆させたと感じている。

「ExcelVBAを実務で使い倒す技術」では、心構えや作法などある意味で「運用面」から、「パーフェクトVBA」(とくに7章まで)では「文法面」を体系的に説明することで、断片的な知識による「なんとか書けた。どうにか動いている。」というマクロで溢れかえるVBAの状況を変えたかったのではないか。

本書のあとがきには「VBAは体系的にまとめるのは難しい」とした上で、この「パーフェクトVBA」ができた今「皆さんが同じような苦労を同じような時間をかけて行う必要はなくなった」と言う。またこのあとがきを紹介したブログ記事ではこのことを「VBAの枠を超えて」と断った上で、『「知識のアップデート」に貢献したいから』と表現している。

執筆した時間の記事を読めば分かるように、執筆というのは短期的に見るとけっして採算が合わない。とくに技術書系は「流行となって一発当たる」可能性も極めて少なく、中長期的にみるとプログラミング関連はバージョンアップがあるので一度書いたものが10年20年と読み継がれる可能性も低い(学習参考書などの方がまだ息が長いだろう)。つまり執筆の動機における「印税収入による不労所得」が占める割合はそれほど大きくないはずなのだ。

高橋氏の会社プランノーツのテーマは「ITで『働く』の価値を高める」だ。「パーフェクトVBA」を「読み飛ばしをせずに、すべてのコードを写経し、理解」することでVBAユーザーはVBAを書くスキルが上がるだろう。そしてリーダブルなVBAコードが増えれば、本職エンジニアからはプログラミング言語のひとつとしてカウントされないことも多いVBAそれ自体や、VBAを扱える人の価値も上がるのかも知れない。

 

あなたは、タカーシの挑戦状を受け取っただろうか。
私は受け取った。