みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
この度、3冊目となる書籍の企画が通過しました!
Excel VBAの本格解説本になります。
本作はあえて書く前から、継続的にブログやコミュニティを通じて、経過やストーリーをお伝えしていければと思っておりまして、早速本記事を執筆しております。
さて、デビュー作で既にVBA本は書いていまして、あれはあれで自分としては超伝えたかった会心の一冊でした。
ですが、今回。もうひとつの大事なピースが、これでようやく埋められる、そんな気持ちでおります。
VBAの解説本なんて、本屋に行けば山ほど置いてあります。良書もいっぱいあります。
では、なぜあえて今からVBAの本格解説本を書く必要があるのか。
それについて、出版社さんに企画の際に送った文面をだいたいそのまま記事として公開します。
では、行ってみましょう!
VBAを好きな人・嫌いない人
VBAは嫌われている!?
繰り返しになりますが、VBA本(とくにExcel VBA本)の解説書は山ほど出版されています。
また、VBAに関してはネットで十分な情報収集ができますし、セミナーなどのリアルの講座もたいへん充実しています。
それだけVBAのユーザー数が多く、ニーズの多い言語なのは間違いありません。
TwitterなどのSNSを眺めていても、コミュニティで実際に活用している皆さんを見ていても、VBAを使いこなすことで仕事の質や、価値が劇的に向上している様子がうかがえます。
しかし、これだけ利用している人が多いのに、一方でVBAが多くの人に嫌われているという事実もあります。
実際、「嫌いなプログラミング言語」の調査で3位にランクインするという不名誉な実績があります。
他の「好きなプログラミング言語」ランキングはあちこちで集計、発表されていますが、VBAは選択肢にすら採用されていないことが多いです。
多大なる恩恵を受けている人もいる
言語としての良し悪しの感じ方、または好き嫌いもあると思います。実際に、他の言語と比べると「ここ、こうして欲しかった…」というところはあるでしょう。(私もあります。)
ただ、そこを踏まえても
- ここまで20年以上も、非エンジニア職がプログラミングにより仕事の質を挙げる唯一ともいえる手段を提供し続けている
- Excelにバンドルされており、ほとんどのホワイトカラーがすぐさまチャレンジできる
という、絶大な価値を提供し続けているという事実があります。
私もその恩恵にあずかっている一人、VBAはどん底に落ちまくっていた私の人生を好転するきっかけを与えてくれた、ありがたい存在です。
なのに、なぜ嫌われているのか…?なんですよね。
VBAが嫌われている1つの理由
どうやら他人に迷惑をかけている
その一つの理由として、他人に迷惑をかけているというのがあります。
JavaScriptやPythonなど他のプログラム言語と比較すると、リーダブルでないコード、持続可能性の低い構成や運用体制がまん延しているのは、おそらく事実でしょう。
なにせ、他の言語によって作られたツールは組織で運用管理されていますが、VBAは一般的には個人依存で作成され運用されています。
その人が何らかの理由でそれを管理できなくなったら、ブラックボックスを残されたチームメンバーや、それを押し付けられた社内のエンジニアからすると、なんて余計なことしてくれたんだ…となります。
直接的に迷惑を与えているわけですからね。結果嫌いになる…というのは、一定の理解ができます。
残念な状況を回避するための方法とは
ただ、それは結果です。その根本の原因は何でしょう?
- 言語として、VBAの「でき」が悪いからですか?
- たいした才能もないのに無謀にもプログラミングなんかにトライした前任者が悪いのでしょうか?
そうではないはずです。
それは構造的な問題です。
- Excel VBAが誰でも使えて便利だから、みんながチャレンジしやすい
- 一方で、使われる部門は本人に、それをマネジメントする機能がない
私は、VBAを取り巻く環境で、そのような残念なことが起きていることを知っています。
それであれば、その知識をうまく伝えられれば、そのような状況を回避するように学習することはできるはずです。
それを解決する一つの方法として「ExcelVBAを実務で使い倒す技術」を書きました。
この本を活用いただくことで、「散らかっているコード」「運用しづらいマクロ」をなんとかすることは、ある程度できます。
あと強化できるところとして重要なのは、ユーザーの言語の学び方、そこを強化することが残されたピースになります。
学び方をどう変えるべきか
「追加情報」ばかりがあふれている
世の中のVBA本は、「使い方」にフォーカスしすぎていると感じます。おそらくそのほうが読者が読みやすい、ニーズに直結して活用できる、色々なメリットはあるのだと思います。
もちろん易しく書くのは大事です。初心者のうちは難しい概念を急にたくさん押し込まずに、少しずつ階段を登らせていくように学んでもらうのが良いでしょう。
ただ、「易しいコンテンツ」と、「頭を使わせないように読ませるコンテンツ」は別モノです。
データ型、変数、基本構文、制御構文、ここまではいいとしましょう。
ブックの操作はこう、シートの操作はこう、セルの操作はこう、メッセージダイアログの表示はこう、フォームの作り方はこう、配列ってのがあるよ、VBA関数ってのがあってね、文字列の操作はこう、日付の操作はこう、ファイルの操作はこう、FileSystemObjectってのもあるよ、Functionプロシージャってのがあってね、これは自作関数といってね、じゃあSubプロシージャは何ナノ?、ところで印刷の設定はこう、グラフの操作はこうで、描画オブジェクトの操作はこう、IEの操作もできるよ、レジストリの操作もできるよ、あそうだイベントってのもあるよ、クラスは…まぁ置いておこうか。
このときはこう、この場合はこう、追加に次ぐ追加、そして追加です。
必要なのは引き算や割り算
おそらく、どこかの段階から、キレイに脳みそで処理するのは難しくなります。
そうなると、都度やりたいと思ったときに、調べて、見つけて、コードに追加。また、次に別のやりたいことを調べて、見つけて、コードに追加…。前に書いたやつは、なんだっけ?
つまり、これらの新たなテクニックやノウハウは脳みそを通過して、コードとしてアウトプットされていますが、通過後の脳みその中に、事後のコントロール可能な状態で蓄積されていないのです。
飼いならせていない猛獣たちが世に放たれ続けているような状態が思い浮かびます。
ですから、学習を重ねることを考えると、そろそろ「次元」を変えなければいけないのは、なんとなくご理解いただけますでしょうか?
だから、ある一定の段階以降で必要になってくるのは、足し算の学習ではなくて、引き算や割り算の学習だと思っているのです。
言語の体系や法則を知ることが重要
JavaScriptの美しさに目からウロコした件
「詳解! GoogleAppsScript完全入門」を書く上で、JavaScriptを学んで目からウロコだったことがあります。
JavaScriptでは、プリミティブ値以外の操作対象は全てオブジェクトなんです。
てことは、オブジェクトの特性がわかっちゃえば、言語で取り扱うほぼ全ての操作対象の特性が一定のところまでわかっちゃうということです。
どんなオブジェクトでもメソッドまたはプロパティを持っています。その記法はベースは一緒。インスタンスの生成の仕方も一緒。
私は、たった2冊ほどのJavaScript本を読むだけで、この珠玉の果実にありつけました。
言語は体系に沿って構成されていて、法則性があります。
JavaScriptが美しい言語というのもありますが、その体系や法則がつかめる本にすぐ出会える、このことが恵まれていると思いました。
では、VBAは…どうなんでしょう?
体系や法則を学べるVBA本が存在しないのなら作る
私はこれまで何年かかけて、いくつかの書籍を活用してVBAを学んできていますが、VBAの体系や法則に触れながら、一気通貫して学べるものはありませんでした。
「クラス」とは何か、「VBA関数」とは何か、「メソッド」や「プロパティ」とは何か、そういうものが存在していること、そしてその使い方以上の理解はなかなか得られません。
なぜ「Propertyプロシージャ」は紹介されていないのか、体系をつかむという視点では疑問に思います。
そんな問い受けて、VBAの体系や考え方の全貌が一気通貫して学べる解説書を書きたいと思いました。
VBAはいい意味でも悪い意味でも選択肢が多い言語ですが、全体が見えていれば、どのような選択をすることがリーダブルでサステナブルなのか、そういう判断もしやすくなると考えます。
新たなテクニックを仕入れても、既に脳みその中に既にある体系の理解や法則とリンクし、鵜呑みせずに咀嚼しながら蓄積、活用ができるでしょう。
そのようにして、アウトプットされたコードは以前よりもはるかに整っていて、コントロール可能な状態になると信じています。
まとめ
以上、なぜ、VBAの本格解説本を書く必要があるのかについてお伝えしました。
簡単に言うと、VBAの体系や法則への理解を「自分がほしかったから」ですねw。
こういう本があれば、もっとスマートに、高いパフォーマンスで学んでこれたと思いますし、VBAってこういう考え方で作られていて、お茶目なところもあるけど、いいところもあるんだよ!とか言えるじゃないですか。
実際に、VBAが仕事の価値を著しく向上させるものというのは間違いありませんので、それをなお一層元気よく、そして自信を持って使っていただきたい、そう思うわけです。
さて、そんなわけでこれから書き始めます。
スケジュールはまだなんとも言えませんが、年内までに書き上げて、来年4月というのが今のところのターゲットです。
また、折をみて本書やその内容について、ご報告していきますね。
どうぞお楽しみに!
コミュニティ「ノンプロ研」で原稿を公開しながら執筆します!
あ、そうそう、大事なことを伝え忘れてました。
今回、新しい取り組みとして、コミュニティ「ノンプログラマーのためのスキルアップ研究会」で、執筆した原稿を一部(または全部)共有しながら進める予定です。
もちろん、書籍の内容は私が責任を持って書きますが
- 本書がどんな内容なのかな?
- 書籍の執筆ってどんな進め方なのかな?
とか、気になる方もいらっしゃるでしょう。
これを機に、ご参加検討いただくのも良いと思います。
どうぞお待ちしております!