語学学習、ITスキル習得に必要な「構造化された記憶」

エクセルマクロでもPythonでも言えるプログラミング上達のコツとして、「より大きな構造を暗唱すること」ということが挙げられます。

多くの方を指導していますが、「こういう人は上達しない」というタイプをはっきり断言するならば、それは「サンプルコードを、単語単位で書き写そうとする人」です。

たとえば、研修会場のプロジェクターに表示された以下のコードの1行目を書き写すとして:
If Instr(Range("B3").Value, "区") > 0 Then
    Range("H3").Value = "政令指定都市の住所です"
    Range("I3").Value = Range("A3").Value
    Range("J3").Value = Range("B3").Value
    Range("K3").Value = Range("C3").Value
End If

上達する人は、まずバッと画面を見て、それから「If Instr(Range("B3").Value, "区") > 0 Then」と一気に書きあげます。
そして、書いたものに間違いがないかどうかを自分なりにチェックします。それから顔を挙げます。
それから自分が書いたものとプロジェクターに表示されたものとを比較します。

一方「絶対上達しない人」はどういう振るまいをするかというと:
プロジェクターを見てまず「If」と書いてあることだけに注目し
自分のPCで「If」と書いて
それからまた画面を見て、「Instr」という文字列があることに注目し
自分のPCで「Instr」と書いて
それからまた画面を見て、「(」という記号があることに注目し
自分のPCで「(」と書いて
それからまた画面を見て、「Range」という文字列があることに注目し
自分のPCで「Range」と書いて
...
という具合です。

「自分の頭の中に一文まるまるを入れる」という発想がそもそもない、間違えること自体を極端に恐れている、入力スキルに自信がないといった様々な理由からそのような挙動になってしまいます。

ですが、意識化における要素が細かくなってしまえばしまうほど、全体が見えなくなります。
プログラミングとは「一連の手順書を書き上げること」ですので、そのスキル習得には、全体のことを意識に置くことが常に重要です。それは細かい部分に意識を向けているときも同様です。

プログラミング上達のコツは、「より大きな構造を暗唱すること」です。
細部に意識を向けているときも、より大きな構造を常に意識に入れておくようにしましょう。
単語より文、文より段落、段落より構造、構造より全体設計に意識を向けます。

とはいえ、このトレーニングは、最初は「単語より文」くらいでからです。
If Instr(Range("B3").Value, "区") > 0 Then

なら、一文まるまるをまずは暗唱する。そして一気に書きあげる。
このとき、間違いは気にしなくてかまいません。書き上げてから直せば良いのです。
Range("H3").Value = "政令指定都市の住所です"
Range("I3").Value = Range("A3").Value
Range("J3").Value = Range("B3").Value
Range("K3").Value = Range("C3").Value

なら、4つの文からなる段落の全体の雰囲気を掴む。それからまず一文を書き上げる。
書き上げて間違いがないことを確認したら、次の一文を一気に書き上げる。
書き上げて間違いがないことを確認したら、次の一文を一気に書き上げる。
...
としていきます。ただし、「4つの文からなる段落の全体の雰囲気」のことは常に意識しておきます。
完成形の状態を意識しつつ工程を踏むことが大切です。
If Instr(Range("B3").Value, "区") > 0 Then
    Range("H3").Value = "政令指定都市の住所です"
    Range("I3").Value = Range("A3").Value
    Range("J3").Value = Range("B3").Value
    Range("K3").Value = Range("C3").Value
End If

となっても同様です。
If 文は実は外側から書くのではなく、中身から書くのが初心者向けの策としては有利です。
そこでさきぼどの例と同様にやはり「Range("H3").Value = "政令指定都市の住所です"」という一文から書いていくのですが、やはり全体の構造を意識に置いたままで一連の作業をしていきます。

語学の学習でも同様です。
英語でも、「John has all the skills to achive the goal.」という一文があったとして、目指すのは、この一文を意識に入れて、一気に話せるようになることです。その先には、「自分のイイタイコト」という全体設計があって、その設計に従った話の構造があって、その構造内で現れる一文一文があって、その文の文中に並べられる単語があります。
単語を書き写すことだけにしか意識を向けられないようではまとまった話はできるようになりません。
それは、エクセルマクロでもPythonでも、もっと言えばエクセル関数を組み合わせて何かを為そうというときでも同様です。
「部分に意識を向けるときは全体に意識を向ける。全体に意識をおきつつ、部分を積み上げていく」というのが、IT技術のような構造化されたスキルを習得するときに必要な意識のあり方です。

このような能力を高めるには、どうしたら良いでしょうか。
方法のひとつは、「頭の中に入れられる文章の量を多くする」トレーニングをすることです。

実は、小学校のときに受けた国語の授業にそのヒントがあります。
まとまったフレーズをまるまる覚えされられたという経験はあなたにもあるのではないでしょうか。
僕の場合は、平家物語の冒頭の一節を暗唱させられました。以下のものです。
祇園精舍の鐘の声、諸行無常の響きあり。
娑羅双樹の花の色、盛者必衰の理をあらはす。
おごれる人も久しからず、ただ春の夜の夢のごとし。
猛き者もつひには滅びぬ、ひとへに風の前の塵に同じ。

「一連のフレーズを暗唱できるようになる」とは、プログラミング技術で言えば、「書きだす前から書き上げるまでの一連のプロセスと完成形が頭にある」というような状態です。

「平家物語の冒頭の一節を暗唱」というようなトレーニングは、「頭の中に入れられる文章の量を多くする」という目的ではとても有効です。

プログラミング言語でなくてもかまいません。英語でなくてもかまいません。「平家物語」でなくてもかまいません。
日本語で良いので、あなたの好きな文章が何か思い当たるようでしたら、その文章を暗唱できるように練習してみてください。思い当たらなけれは、たとえば「これは大事だな、気をつけたいな」とあなたが感じるメルマガのタイトルをいくつかピックアップして、そのタイトルを一語一句違わずに暗唱できるよう練習してみましょう。

語学力の本質は共通です。
このトレーニングは、日本語能力を高めますし、英語等の外国語能力、プログラミング能力のいずれも高めてくれます。
  • 日本語能力、英語等の外国語能力、プログラミング能力を同時に高められる方法として、他にどのようなアイデアがありますか。
関連記事・関連コンテンツ
エクセルマクロ習得に関係する4つの能力というコラム記事内で、プログラミングスキルと言語能力との関係について別の角度からお伝えしています。
https://forum.pc5bai.com/article/4skills/#lang

あなたに配信済のメールマガジンバックナンバー一覧です。
https://forum.pc5bai.com/tips/longshot/

コメントをするにはログインしてください

パソコン仕事5倍速!通信は、エクセルのテクニックから、仕事術、心理学、キャリアアップのヒントまで、主に事務職のビジネスパーソンのためのパソコン仕事高速化ノウハウをお伝えるメールマガジンです。
登録は、以下のフォームから可能です。

メールマガジン登録はこちら