今日の話は、「プログラミング」に関する特に重要な
話になります。
読者の皆さんは、何かマクロを作るとき、一から自分で
書き始めるのではなくて、
この講座で提唱する「マクロの記録」から始める人が
多いかと思います。
でその場合に、世の中の大概のVBA本やネットを見ますと、
「マクロの記録」メニューで表示される「マクロの記録」
の画面で、
まずは「マクロ名に適当な名前を入力しなさい。」と、
そう書いてあるかと思います。
けれど、私のこの講座では必ずそこは
デフォルトで表示されている名称を(「Macro1」等を)
そのままいじらずに、すぐ「OKボタンを押しなさい。」
と、そう教えています。
【一般のVBA講座の場合】のマクロの記録の手順
「マクロの記録」→適当なマクロ名を入力→「OK」
【この講座の場合】のマクロの記録の手順
「マクロの記録」→そのまま「OK」押す
です。
すなわち「マクロ名は入力するな!」
つまり、「ここでマクロ名を考えるな!」
ということです。
でそれは、マクロを作ろう思った時に(または、作ってる
最中に)、ここで「マクロの記録」をしてみよう思った時
というのは、
あなたの頭の中が一番”集中”して、プログラミング脳に
なっている時であるに間違いないです。
先日、さんまさんの「ホンマでっか!?TV」っていう番組を
たまたま観ていましたら、出演者の脳科学の先生がいわく、
「スマホの通知をオンにするだけで集中力が23分失われる」
という研究結果があるとのことです。
スマホってよく、要らぬ通知が来るじゃないですか?!
通知が来るたびに気になって集中力が途切れてしまう・・・
そんな経験は誰にでもあるかと思いますけど、気になって
開いて見ると、
「クーポンが届きましたー!」・・・怒!だったり。。笑
たったそれだけで、せっかく調子が乗って仕事に集中して
いた状態が、23分も失われてしまう事にもなるわけです。
スマホ以外でも、集中した仕事中に要らぬ電話が掛かって
きたり、メール着信があったりもそうですし、上司や周り
の同僚から、どうでもいい話を話しかけられたりー、と
その度に、貴重な自分の23分が失われて行くことになる
わけです。
そんな大きな損失があることに気付いていない人は多い
とは思いますけど、これは実に恐ろしい話ですね。
実はわたし、人生で一番必要なものと言えばそれは
”集中力だ!”と、そう思って生きてきた人間ですから、
もう還暦過ぎのこの歳になりますと尚更に、お金よりも
その時間の方がずっと大切に感じます。。
(ちがいます?笑)
それで、話戻しますけど、
マクロを組む時などのプログラミングでも一番大切なのは、
まさに、その”集中力”です。
「”集中力”なくしてマクロは組めない!」と言っても
過言ではありません。
スマホの通知音やらメールやた電話やら上司やら、その様
な外部からの要因で集中が切れてしまう・・・というのは、
まぁ仕方ないと言えば仕方ないですけれど、
マクロを組む場合、自分自身でせっかく高まっていたその
大切な”集中力”を、自らで切ってしまう人を多々見かけ
ます。
それは、一つには最初に言いましたように、
「マクロの記録」を始める際の、「マクロ名を入力する。」
という行為です。
適当な(適切な)マクロの名前って・・・何?ですね。笑
前回のXmasクイズの正解発表の際にも書きましたけれど、
ネーミングは実に奥が深いものなので、しっくりいく
名前を考えるというのには、少なからず頭を使うことに
なります。
けれど、「名前を考える」その頭は、プログラミングとは
全く違う脳みそを使わねばなりません。
「プログラミングを考える脳」と「ネーミングを考える脳」
この両者は全くの別物です。
だから、マクロの作成中に(自分の脳みそがプログラムに
集中している最中に)、ネーミングを考えてしまっては
ダメなんです。
それをやってしまうと、プログラミング脳の貴重な23分を
失うことになります。
マクロ作りに集中している最中に、まったく別の事である
「マクロの名前は何がいいかなぁ~」だなんて、
そんなことは一瞬でも考えてしまっては絶対にいけません!
だから、
「マクロの記録」→そのまま「OK」押す
そうするべきなのです。
でこれ、「変数名」でも実は同様です。
調子よくマクロを作っている最中の集中している状態で、
ここで変数(データを格納する為の箱)を作ろう、
そう閃いた時のその瞬間こそが、あなたが最もプログラ
ミング脳で、プログラムに集中できているその時である
わけです。
それを自らで、「変数名を考える」という行為によって
その集中を途切れさせてしまうのは、実に恐ろしいです。
変数名の場合のそれ(プログラミング脳の中断行為)は、
言わばあなたが悪い訳ではなくて、
そこでそうせざるを得ない設定をわざわざしてしまって
いることに原因があります。(ご存じの方はご存じと
思いますが、それは「Option Explicit」のオプション
設定です。)
ネットでそれ検索をすれば、
この講座以外のホームページには全て、VBAのオプション
で「変数の宣言を強制するに必ずチェックを入れなさい」
と、そう書いてあるかと思いますが、、
この講座では、そんな設定は絶対やってはいけません!
と、そう言っています。そう言い続けています。
つまり、
「変数の宣言を強制する」にチェックを入れてしまうと
変数を用いた瞬間にアラートが出て、変数の宣言文を書か
ざるを得なくなります。(Dim x as Integer とかです。)
これは、「スマホの通知音」よりもよっぽど厄介者です。
更には、as の後は Integer か? Long か? はたまた
String なのか?と考えてしまうケースも多い事でしょう。
もうそうなってしまうと、脳科学で言う「23分の損失」
どころの騒ぎではないわけです。
しかも、その時間損失というのは変数を使う度に毎回です。
なので、
この講座のレッスンでは変数名は出てきた順に a,b,c,・・・
と、基本何も考えずに付けられる、集中力を切らす心配の
ない名称を必ず使ったマクロ作りというので教えています。
余談ですけど、私のようなプロの職業プログラマーという
のは、現場の開発プロジェクトで予め「命名規約」と言う
ネーミングのルールが定めてありまして、
自分ではマクロ名や変数名を考える、という余地のない
作り方をするのが通常です。
更には、コードを書き始める前に「詳細設計書」なるもの
を書いて、予め自分が書くプログラムの全てのメモリ領域
(変数名)は記載するのが基本ルールになっています。
なので、プロはプログラミングの最中に、その場で変数名
を考えるだなんて、非効率な作り方は致しません。
読者の皆さんのような決してプロではない素人の皆さんは、
予めそんなものは一切書きませんですし、他人が決めた
命名規約もないわけですから、
コードを書きながらその都度、マクロ名や変数名はその場
で考えながらマクロを作って行く事になりますので、
「変数の宣言を強制する」の設定をしてしまうと、非常に
それは効率の悪い(Dimを書く都度、知らず知らずの内に
毎回23分を失っている・・・?)やり方になってしまう
というわけです。
マクロ名や変数名は後から(一応の完成を見た段階で)、
忘れないうちにゆっくり考えて付け直しをすればよいだけ
の話ですから、
プログラム脳になっている最中はプログラミングに集中して、
名前を考える時はネーミング脳に集中してやる。
仮に、明示的にと言うのであれば、
例)
Dim i As Long
Dim j As Integer
Dim k As Integer
じゃなくて、後からコメント文↓で、
'変数の説明
' i はデータ行数のループカウンター
' j はデータ列数のループカウンター
' k はシート数のループカウンター
こう書いて置いた方が、後々でずっと分かり易いですね。
と言うことで、脳科学上、毎回23分が失われてしまうことに
もなってしまう(変数を使う度に・・・、ですよ)設定を
自らするというは、無駄以外の何ものでもありません。
なので、「変数の宣言を強制する」にチェック入れるのは
絶対に止めましょう!
変数名は、スペル気にしなくて済む a,b,c,・・・ か、
いやなら、完成してからゆっくり考えて名前付け直す、
です。
それでも、もし変数名をすぐ打ち間違えちゃうから・・・
と思う人は、「変数名間違ってない?」って付箋紙にでも
書いて、おでこにでも貼っておけ!ってことですよ。笑
(実行してもし何かおかしな事が起こったら、変数名の
間違いないかを真っ先に確認するクセさえあれば、
その解決にさしたる時間は掛からないです。)
で皆さんはExcel仕事の効率化の為に、このメルマガを読ん
だりして勉強をして、マクロ作りに日々励んでおられるか
と思いますけど、(たぶん!)
私のようなプロの職業プログラマーというのは、
プログラミングそれ自体が仕事でありますから、
常にプログラミングの効率化を考えて、いかに素早く
正確にプログラムを組むか、それを追求して日々の仕事を
しています。プログラミングの効率化です。
今日のまとめの結論になりますが、
プログラミングは、”集中力”を切らさない環境作りが
重要です。
その為にはまず、ネーミングを考えてはいけません!
しっくりいく、適当な適切なマクロ名や変数名の名称を
プログラミングの最中に考えてしまうと、知らず知らずに、
大きな時間的損失が起こります。
プログラミングとネーミングは、考える時間をそれそれ
分けて、それぞれ”集中”してやるべし!