2019-12-02皆さんは普段、どれくらい挑戦状を叩きつけたり、叩きつけられたりしているだろうかえ、叩きつけも叩きつけられもしないって?本当にそうでしょうかこの記事は私も所属するノンプロ研のブログリレー企画、アドベントカレンダー2日目の記事として執筆しています。11月に上梓した「パーフェクトVBA」に寄せて、タカーシ(高橋氏)の挑戦状について考えてみることにする。~名作からクソゲーまで~不条理過ぎる謎解き設定などで伝説のクソゲーとも名高い「たけしの挑戦状」。知らない人はこの記事を読んで欲しい「たけしの挑戦状」は今の小学生が遊んでもやっぱりクソゲーなのか?https://nlab.itmedia.co.jp/nl/articles/1708/16/news011.htmlクソゲーと呼ばれつつ、発売当時も数十万本は売れ、有野課長がゲームセンターCXの第1回でプレイしたゲームであり、スマホで移植版が発売されるほどには根強い人気がある作品だ。ここまで人の心を惹きつけるのだろうか。難しい、ただくだらないだけのクソゲーなら、伝説として語り継がれないと思うのだ。これはやはり、あの天才ビートたけしが監修し、それもただの名義貸しのようなものではなく、たけしならではのナンセンスな不条理、バカバカしさが詰め込まれた上での難しい作品だったからではないだろうか。このゲームを、「解けるものなら解いてみろ!」と、文字通りたけしからの「挑戦状」として当時の少年少女が受け止めたからこそ、未だに語り継がれる作品になったのだと思う。「常識があぶない」「謎を解けるか、一億人」等の発売時のキャッチコピーも、その挑戦心を煽ったであろう。挑戦状とは、叩きつけることより、「叩きつけられた」と受け止めることが大事なのだ。街を歩いていて、ふと目つきの悪い青年と視線が合い、「てめぇなにガン飛ばしてんだヨ!」と因縁をつけられたことはないだろうか。今のご時世はそういうこともないのかもしれないが、触るもの皆傷つけたギザギザハートのビーバップ世代なら一度や二度は経験があるはず。こちらはガンを飛ばすどころか、そちらを見た意識すらない。常に臨戦態勢の先方は視線が合った(ような気がした)瞬間に「挑戦状を叩きつけられた」と思うわけだ。登山家・冒険家が山を登る理由を聞かれて、「そこに山があるから」と答えるというアレも、「山に、『登れるもんなら登ってみぃや』と挑戦状を叩きつけられたから」と換言してもいいだろう。なんなら、無言の山から挑戦状を受け取れる人こそが登山家・冒険家の条件とも言えるのかもしれない。今日お話ししたいのは、ついに発売された高橋宣成著「パーフェクトVBA」についである。VBA」のまえがきノンプログラマー界隈、Excel界隈、VBA界隈では話題になったのですでに読んだ方もいるかもしれないが、もう一度この全文公開された「まえがき」読んでみて欲しい。いかがだろうなにか受け取っただろうかなにか、挑戦状を受け取ったであろうかこの文で、太字でもなんでもない平文で、さらりとすごいことが書いてある「2章から7章までは、下位の小さなレイヤーから最上位のレイヤーまで順番に理解していただくように構成しています。土台を作ることが最大の目的なので、読み飛ばしをせずに、すべてのコードを写経し、理解してください。」もう一度言う読み飛ばしをせずに、すべてのコードを写経し、理解してください。プログラミングの本で、冒頭で著者自ら「全部写経して全部理解しろ」と高らかに宣言している本を、これまで目にしたことがない。自分が序文を読み飛ばしてるだけで、ほとんどのプログラミング本にはそう書いてあるのかもしれない。不安になって手元にあるVBA本を手に取った。これだけVBA本があってまだ「パーフェクトVBA」が必要なのかというツッコミは棚の最上段に上げておく。調べた書籍はVBAの入門書が中心で、このパーフェクトVBAより初心者向けが多いというのはあるが、写経で理解しろゴラァと冒頭で先制パンチをかましてくるのは「パーフェクトVBA」をおいてなかった。「調べた本は入門書が中心」と書いたが、写経とかむしろ初心者向けの話だろ。オライリー本とかで冒頭で「ちゃんと写経するように」とか書いてある可能性むしろ低いだろ。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に関する前著、「ExcelVBAを実務で使い倒す技術」はタイトルでVBAを謳っておきながらVBA自体のプログラミング言語としての文法解説や、どんなコードを書けばどんな「実務」ができるのかについては全く触れられていない。チームでマクロを共有したり、運用中のマクロをメンテする際の心構えや作法をまとめたような、「非エンジニア向けVBA版リーダブルコード」のような一冊となっている。今作「パーフェクトVBA」の第一章、まえがきの直後の「1-1-1」ではこんなことが書いてるVBAの情報が頭の中でごちゃごちゃになっている感覚があるコードを書くときにいつも「この方法でいいのか」と不安がある開発したツールのメンテナンスが重荷になっている以前書いたコードを読み返すのに時間がかかる前にできていたはずのことができなくなってしまった動くには動いているけど身についている実感がない新しい命令を覚えるのが負担になってきているこれは本書を手にとるような人であれば「あるある」とうなずく状況がいくつもあるのではないだろうか。この辺は「ExcelVBAを実務で使い倒す技術」で解消を試みようとしている状況と重なる部分も多い。省略しても結構動くといった特性を持つ。これはVBAの強みでもあるが、「悪い例」として挙げたような状況は「非エンジニアでも学習を始めやすい、単純作業を置き換えただけの簡単なものなら自分ですぐに作れる」という特性が裏目に出てしまうケースだ。VBAはこの「間口は広く、敷居も低い」という特性ゆえの残念な部分がたしかにある。その特性ゆえ、残念な部分がむしろ拡大再生産されていってしまうのが現状だ。この現状に対するもどかしさ、この現状をなんとかしたいという想いこそが高橋氏に「パーフェクトVBA」を執筆させたと感じている。「ExcelVBAを実務で使い倒す技術」では、心構えや作法などある意味で「運用面」から、「パーフェクトVBA」(とくに7章まで)では「文法面」を体系的に説明することで、断片的な知識による「なんとか書けた。」というマクロで溢れかえるVBAの状況を変えたかったのではないか。本書のあとがきには「VBAは体系的にまとめるのは難しい」とした上で、この「パーフェクトVBA」ができた今「皆さんが同じような苦労を同じような時間をかけて行う必要はなくなった」と言う。このあとがきを紹介したブログ記事ではこのことを「VBAの枠を超えて」と断った上で、『「知識のアップデート」に貢献したいから』と表現している。執筆した時間の記事を読めば分かるように、執筆というのは短期的に見るとけっして採算が合わない。技術書系は「流行となって一発当たる」可能性も極めて少なく、中長期的にみるとプログラミング関連はバージョンアップがあるので一度書いたものが10年20年と読み継がれる可能性も低い(学習参考書などの方がまだ息が長いだろう)。執筆の動機における「印税収入による不労所得」が占める割合はそれほど大きくないはずなのだ。高橋氏の会社プランノーツのテーマは「ITで『働く』の価値を高める」だ。「パーフェクトVBA」を「読み飛ばしをせずに、すべてのコードを写経し、理解」することでVBAユーザーはVBAを書くスキルが上がるだろう。リーダブルなVBAコードが増えれば、本職エンジニアからはプログラミング言語のひとつとしてカウントされないことも多いVBAそれ自体や、VBAを扱える人の価値も上がるのかも知れない。あなたは、タカーシの挑戦状を受け取っただろうか。割にもっともデータ分析やデータドリブン・マーケティングから縁遠い業界=エンタメ業界で、リサーチ、ユーザー分析、デジタルマーケティングに従事。統計やデータ分析は未経験だったが、数年前にリサーチ担当になり、あわてて統計を学ぶ。統計検定2級を取得するもいまだ勉強中。2018年春からVBAとPythonを中心にプログラミングの勉強を開始。