『ExcelVBAを実務で使い倒す技術』を秀和システムさんよりご提供いただきました。
著者の高橋宣成さんはいつも隣にITのお仕事 | 毎日の業務が楽チンに!というブログを運営されていて、VBAがGASについての情報が盛りだくさん。
私はプログラマーではありませんが、テストエンジニアとしてVBAを書く機会も(以前は)そこそこありました。たとえば期待結果画像のパスと、今取得した画像のパスをExcelに書いておいて、ボタンを押すとだーっと比較してOK・NGの結果を出すツールとか。
そんな、「独学でVBAを覚えて、いくつかツールを作ってみた」くらいの人に対してはどストライクな本でした。
VBAのコードは動けばいい!・・・わけじゃない
何か業務を楽にするようなツールをVBAで作った場合、「今動いたからOK!」ということはほとんどありません。
たとえば
- 誰かが作ったマクロを引き継いでメンテナンスしなければいけない
- 既存のツールに機能を追加しなければいけない
などなど。
こういった実務的なシチュエーションでの技術(本書では生々しい技術と表現されています)が身についてこそ、「VBA使い倒している」と言えます。
本書ではそんなVBAを使い倒すための技術が沢山出てきます。
大きく2つ、「知識」と「知恵」の二種類です。ここが、ただの「ExcelVBAのTips本」とは大きく異なります。
全体の内容
知識と知恵は、それぞれ◯章から◯章まで、のように明確に区切られているわけではなく、本書全体にわたって書かれています。。
第1章〜第3章では、VBEやイミディエイトウインドウの便利な使い方、デバッグの際のテクニックなどが出てきます。
VBEやイミディエイトウインドウなどの道具を使いこなせなければ、VBAを使い倒すことはできません。まずツールの使い方を覚えて、自分が楽をするところからスタートしています。
デバッグについては特に大事だなと思っていて、初心者が時間をとられがちな部分なんですよね。本書でもデバッグの部分は丁寧に書かれていて、個人的にかなり好感を持ったポイントの一つでした。
デバッグで時間を浪費しないために
たとえば、初心者がエラーに遭遇すると「あー!駄目だ!失敗した!」と思って、よくエラーメッセージも読まずにOK押してもう一回実行したりしますよね。(コードも修正せずに。)
それでは解決までにかなりの時間がかかってしまいます。
そんな方に本書のこの言葉を贈りたい。
エラーメッセージは情報の宝庫、エラーは成長の糧
エラーが出た時にも落ち着いて対応すると、自分が成長できる。そして次エラーが出たときには、どこに問題があるのかがすぐわかり、スピーディに解決できる。
VBAを使い倒す上では、エラーメッセージとの付き合い方は本当に大事。
さらに本書が手厚いのが、VBAのエラーを大きく
- コンパイルエラー
- 実行時エラー
- 論理エラー
の3つに分けて、どう原因を探ればいいのか、どう対処すればいいのかが解説されているところ。
これらのエラー対処パターンと、デバッグする際のテクニックを本書で身につけると、おそらく初心者の頃とはプログラミングのスピードが圧倒的に変わってきます。
私は、プログラミングが上達する上で大事なのは「上手い人がコードを書いているときのやり方を生で見て、思考をたどること」だと考えています。その中でも特に大事なのが、デバッグの仕方をまねぶこと。
VBAでありがちなのが、他の人が作ったのをぽいっと渡されて、中身覚えてメンテしろと言われるパターン。プログラミングしたことない人がそんな状況に置かれると、結局独学で覚えるしかありません。そうすると、デバッグのやり方があまり身につかないまま、なんとなくで進んでしまうことが多い。
本書ではコードを書いているところを生で見られるわけではありませんが、デバッグのやり方が丁寧に書かれているので、読むとデバッグのときの考え方の筋道をたどることができます。これは初心者にとってはとても大事なことです。しっかり読みましょう。
第5章以降の「考え方」が身につけば、もう開発者
第5章以降についても「業務を楽にするためにシステムを作って、継続的に使っていく」という、システム開発において大事な基本がVBAという切り口で書いてある本です。
なので、プログラマーでもSEでもない方がこの本をしっかり読んだら、その時点でだいぶ成長しています。
たとえば第7章の「変化」への耐久性を持たせるためのVBAの作法。
VBAで何かのツールを作ったらそこで終わりではなく、使い続けていくうちに発生する組織や業務内容の変化、使う人のニーズの変化に対して、絶対に変化は発生するという前提のもと、どうすれば変化に強いツールを作ることが出来るのかが解説されています。
また第8章ではツールを個人だけでなくチームの資産としてとらえ、チームとしての価値を高めていくにはどうすればいいかに触れられています。例えばVBAツールに関するナレッジベースを作ることや、VBAを書いたブックのバージョン管理をすることなど、もうVBAの枠を飛び出して完全にソフトウェア開発の大事なポイントです。
非ソフトウェアエンジニアがここまで把握してくれてたら世界が平和になりますきっと。
まとめ:VBAを独学で学んできた非ソフトウェアエンジニアや、新人エンジニアにお勧め
長々と書いてきましたが、ただのVBA本と侮るのは損です。
VBAのテクニックと、VBAを使ってチームの生産性を高めるための考え方の両方が、コムズカシくない言葉で語られていてとても良い本でした。
個人的には知識と知恵のうち、知恵(=考え方とコツ)の部分が良かったですね。
どんなことに気をつければ読みやすいコードになるのか、そもそもなんで読みやすくないといけないのか。業務でVBAに限らずコードを書く機会がある後輩にも進めたい本でした。
次の1冊
本書の中にも出てくるキーワードのひとつが「リーダブルコード」
おそらくこちらの本からの言葉かと思います。
この『リーダブルコード』は、その名の通り「読みやすいコードを書くために気をつけるべきこと・考え方」が書いてある本で、VBAに限らず様々な言語で共通した考え方載っています。
ちなみに相当売れてます。