第1講 VBAとは?マクロとは?
第2話 講義方針
さて、本講義の特徴をなすものは、
数独自動生成ソフトの開発を題材とすることです。
数独とは、
どの行(横列)にもどの列(縦列)にもどのブロックにも1から9までの数字をひとつずつ並べる
というルールの下に数字を埋めるパズルです。
例えば、
001
という問題なら、解答は
002
となります。

※数独の商標権をニコリが持っているために、
ニコリ以外の会社ではナンプレ(ナンバープレイス)という名称で数独のことを呼んでいます。
ですから、数独のことをナンプレとも書きます。
ナンプレの月刊誌の方が圧倒的に多いからです。


えっ!?、そんな簡単なパズル?と思いましたか。
ですが、実はこのパズルはかなり奥が深く、
ルービックキューブ以来最も世界的に流行したパズルで、
世界大会が毎年開かれているほどなのです。

そして、ナンプレ月刊誌が日本でもたくさん発売されています。
日本でもと書いたのは、イギリスやアメリカでももちろん発売されているからです。
よく病院の待合室で解いている女性を見かけませんか。
もちろん、男性にもファンはたくさんいます。
私は、下野新聞と南信州新聞に開発したナンプレ自動生成アプリを無料で提供していますが、
栃木県と南信州でブームが起きていると聞いています。
認知症予防のために多くの方が、ソフトが出題するナンプレを解いてくださっていることを、
本当にうれしく思っており、幸いであると考えています。

一見単純なパズルに見えますが、
ケンブリッジ大学の研究でナンプレ=数独は認知症予防効果が高いことがわかっています。
さらに、記憶力を高める効果がある---
のでなんとイギリスでは小学校の正式教科の1つになっているそうです。
パズルが教科であるなんて信じられますか。

さて、ナンプレファンは
001
のような問題をどのように解いていると思いますか。
ファンは理詰めと呼ばれる方法で解いています。
例えば、左の一番上には1,2,5,9が可能だから、
まず、1を仮定してみて破綻したら1を捨てるという解き方はしていないのです。
この解き方を仮定法とか仮置き法と呼び、
ナンプレファンは邪道な方法と見なすのです。
仮定法とは、数学の背理法ですから立派な論理ですが、
数独ファンは仮定法を認めない方が多いのです。
論理パズルだから面白いと思うファン心理と矛盾していることも面白いですね。
実は、
001には55の空欄がありますが、
少なくとも1つの空欄は1つの数字に論理的に確定します。
そして、それを入れたことによって、
また、少なくとも1つは1つの数字に論理的に確定します。
どの局面でも空欄が1つの数字に確定しないことはあり得ないのです。
少なくとも私の開発したソフトが作る問題やナンプレ月刊誌に載っている問題は。
必ず、理詰めで1つの数字に確定できる空欄が存在するのです。
でも、理詰めで解ける問題のみを自動生成させるなんて、
プログラミングの超初心者には無理では、
と考えますよね。
DS用ソフトでさえ自動生成機能はなかったのですから。
ところが、誰でも開発できるようになるのです。
この講義を最後まで読めば。

ただ、次のような学習の仕方はしないで下さい。
完璧(かんぺき)に理解できるまでは次に進まないという学習方法です。
そのときにわからなくても先まで読み進んでいくと、
わかることがあるからです。
先まで読んでから、わからなかったところを読み返すことを繰り返してください。
とにかく粘り強く進んだり戻ったりすることを試みてください。
必ず理解できますよ。


本講義は、まったくのプログラミング初心者の方を対象としますので、
カタカタの専門用語の乱発は致しません。
プログラミング初心者が学習に躓いてしまう原因の最大のものは、
カタカタ専門用語です。
私のサイトは、幸いなことにたくさんの方が訪れメールもたくさん来ます。
※全盛時の多い日には、1日2万人の方が来て読んで下さったこともあります。
私のサイトに出会うまで、
いろいろな本やサイトで勉強してきたけど、
ことごとく挫折してきた、
その原因はカタカタがあちらこちらで使われ意味がわからなかったり、
頭に入ってこなかったりした、と述べている方が非常に多いのです。
私のサイトに出会って始めて理解できたたとおっしゃている方が決して少なくないのです。
もちろん、書籍やサイトでも最初はカタカタ専門用語の意味を説明はするでしょう。
ですが、最初に説明した後は説明なしにカタカナを乱発しているという現状があると思います。
『初心者のための』『世界で一番わかりやすい』などの謳い文句があるにもかかわらずですよ。
初心者の方が躓(つまづ)いてしまうのは当然なのです。
私は、有意文字である漢字があるのに、
何故わざわざカタカナやTPPなどとアルファベット頭文字を連ねて使うのか、
心底疑問に思っています。
『変数のスコープ』などといわずに『変数の適用範囲』と書けば、
初心者の方でも理解できるはずです。
TPPだって、『環太平洋経済連携協定』と書けば意味は一目瞭然です。
太平洋を囲む国々が仲良くなって、貿易を盛んにして経済を共に発展させようとする協定だなと。
残念ながら、情報技術業界はたちの悪いカタカタ乱発社会です。
最近少し順位を落としていますが、日本の数学の学力が世界No.1クラスになった理由の1つは、
翻訳者が優れていて適切に訳語を漢字にしたからです。
数学の概念を表すのに漢字はぴったりです。
例えば、関数です。
概念を明確に表していますね。
スペックなどとかっこつけていわずに、
性能や能力などと局面に応じて適宜に書けばよいじゃないですか。
インストールも初心者にとってわかりにくい言葉ですが、『パソコンに入れて、使えるように最初の設定をする作業』
といえばパソコンをまったくやったことのない人でもわかりますよね。
デフォルトも『最初の設定』と書けば充分です。
私は宇都宮市在住で、宇都宮市ではLRTを敷設することになっています。
市長に、LRTでは何もイメージできないから『福祉対応低床路面電車』などの言い換えをすべきだと、
メールしましたがまったく無視されました。
LRTは、だだの交通機関ではなく、
①都市機能の充実
②産業誘致
③環境に優しい社会=二酸化炭素排出の抑制
④UターンとIタ-ンの増加
などを目指していますので、『戦略路面電車』などの名称を市民から募るべきだ、
と強く主張したのですが、まったく取り上げていだだけませんでした。
3800字ものメールをしたにもかかわらずです。
まったく
無能な市長であると思いましたよ。
コンピュータ業界に、優れた翻訳者がいなかったことが不幸の原因です。
漢字に翻訳せずに安易にカタカナにしてしまった、
そのためにどれだけの人がパソコンやプログラミングに挫折したでしょうか。


カタカタを使う場合には基本的には()の中にわかりやすい言葉を添えます。
これはくどいほどやります。
不要な専門用語は使わないも徹底します。
C言語では部品=パーツのことを関数(VBではプロシージャ)といいますが、
関数を私は、社員と呼んでいます。
仕事を依頼されて仕事をするからです。
数学が苦手だった人は、関数という言葉を聞いただけでうんざりですよね。
ですが、私の講義を読んでいけば、
数学の関数って本当はとても面白いものであることがわかりますし、
重要であり多くのプログラミング言語では部品のことを何故関数と呼ぶのかもわかりますよ。

苦手だという先入観を持ってほしくありませんので、
言い換えをするわけです。
第1話で構造化プログラミングとは部品の単純結合によってプログラミングすることだと申し上げましたが、
多くの社員を組織立てることが、
構造化プログラミングであると言ってもよいのです。
組織立てるというのは、社長・取締役・部長・課長・係長・平社員のように階層的に系統づけることです。
だから、構造化です。

なるべく専門用語を使わずに、使う場合には()内にわかりやすい言葉を添えるという方針で講義を進めます。

最後に、効率的な学習方法について述べさせて下さい。
記憶に定着させる最大の方法は反復であると、いわれます。
ですが、これは少し正確ではありません。
正しくは、『
忘れる前の反復』です。
私は長年県立高校の教諭をやって来ましたし、
その前には7年ほど塾教師をやっていました。
ですから、多くの小学生・中学生・高校生と接してきました。
児童・生徒とふれあう中で、
児童・生徒たちはなんと学習効率の悪い方法で勉強しているのだろうと、
強く感じていました。
意味を考えずに丸暗記して、忘れてからの反復を繰り返しているのです。
極端な話このやり方では、100回反復しても結局はすべて忘れます。
忘れてからの反復には効果がないことが、学習心理学や脳科学によって証明されています。
理想的な反復方法は次の通りです。
① その日に反復
② 次の日の朝に反復
③ ②の3日後に反復
④ ③の1週間後に反復
⑤ ④の2週間後に反復
⑥ ⑤の4週間後に反復
⑦ ⑥の半年後に反復
これで生涯記憶になります。
①から⑦を早速この方法で生涯記憶に変えて、
受験や昇進試験に活かしてよい人生を送っていただきたいと思います。
ただし、この方法を続けると反復回数は手に負えないほど増えていってしまいます。
ですから、暗記する項目を出来るだけ減らす工夫が必要になります。
算数・数学については、私は1単元1項目に絞れ!と指導してきました。
例えば、速さの単元なら覚えるべきことは
『速さは単位時間当たりに進む道のり』
のみです。
道のり=速さ×時間
速さ=道のり÷時間
時間=道のり÷速さ
などの公式は一切覚える必要はありません。
意味さえ把握すれば自明であるからです。
忘れる前の反復』とともに記憶に定着させるために重要な方法は、
物事を系統付け・体系づけて頭に入れるということです。
これをせずに『面倒だから棒暗記』という方法をとる生徒は、
例外なく低学力の生徒でした。
面倒に思わず、意味を考え、構造化することこれが記憶に定着させるのに、
不可欠な方法です。
私は、生徒たちに『数学の公式』を忘れたことがないと常々言っていました。
ホラだと思っている生徒たちもいたと思いますが、
私は絶対に忘れない方法を使っていたので本当です。
絶対に忘れない方法とは、覚えないことです。
覚えないのですから忘れようがないですよね。
『最も正確な時計は止まっている時計だ』と同じ論法ですね。
止まっている時計は1日に確実に2回正確な時間を教えますね。
それ以外の時計は、どんな精巧な時計でも少しずれています。

意味を考え、構造化するとは、理解して記憶することです。
ですから、先に述べたようにわからなくても先まで読んで、
わからなかったところまで戻ってもう一度読み返すことを繰り返して下さい。
この講義で正しい学び方を学べばあなたの人生は大変明るい方向に転じていくに違いないことを、
私は約束しますよ。


第1話へ 第3話へ

トップへ