2025年2月18日火曜日

How to be a programmer

 プログラミングできない先輩!

小学校からのプログラミング教育の義務化により、これからの若い人たちはみんなプログラミングができるようになるかもしれません。ということは、現在大学生くらいの人たちは後輩から「プログラミングができない先輩」というレッテルを貼られて馬鹿にされる、という未来が垣間見えます。これはあたかも、Windowsが普及して事務処理がPC化したときに、「ワープロのできない上司」を陰でコケにしていたのと似た構図。

「ワープロのできない上司」は10年もしたら定年でいなくなってましたが、「プログラミングができない先輩」はこれから40年近く現役。その間ずっと馬鹿にされ続けるというのはいたたまれないんじゃないかな。ま、教育を受けたからといって全員がプログラミングできる人になるとは限らないし、現状の教科書を見る限りそうなる可能性は極めて低いですけど、馬鹿にされるかもしれない当事者にとっては気が気でないと思うのです。いや、そういう焦りを感じていない人は焦りを感じた方が良いよ。


文科省のプログラミング教育

小学校からのプログラミング教育において決定的にかけている視点が、「プログラミングとは何か?」ということだと僕は思います。狭義のプログラミングとは、何らかのコンピュータ言語を用いて正常の動作するコードを作成することです。でも、コンピュータ言語なんて5年10年で流行り廃りを繰り返すもの。学校で特定のコンピュータ言語を教えることは非合理的です。小学校で一生懸命勉強した言語が大学卒業時にはゴミくずになっていたとしたら、やるせなくなりませんか?

小学校でのプログラミング教育において結構真剣に議論された事柄の一つに、多くのコンピュータ言語ではキーワードに英語(英単語)を用いるが、小学生に英語(アルファベット)はなじみがないので教えにくいというものがあります。キーワードとして日本語を用いるコンピュータ言語や、グラフィカルインターフェースでプログラミングするScratchという言語、さらに日本語化されたScratchなどが検討されました。ただ、小学生だと日本語であっても難しい漢字が使えなかったりするので、日本語化Scratchでも問題が解決しません。NHKの教育番組では漢字交じりの日本語化Scratchを使ってましたけど、どの学年向けだったんだろう?小学校での英語教育義務化に伴い、無理して日本語化しなくてもよいのでは?という機運が出てきているような気配があります。どうなるのかな?

ま、でも小学生だと「ゲーム作りたい!」とかなると思うのです。僕もそうだったけど。でもゲームを作るには果てしないプログラミングスキルが必要で、そのギャップを目の当たりにした子供たちはきっとプログラミングをあきらめるんじゃないかな。プログラミング教育の推進がプログラミング教育を阻害するという意味の分からない状況です。

言葉の問題や理想と現実のギャップの問題があるんだから、狭義のプログラミングを教えるのはよくないんじゃないか?という意見があり、文科省は「広義のプログラミング」を指導する方針にやや方向転換しました。「広義のプログラミング」とは、コンピュータ言語を直接用いなくてもプログラミングの発想が要求される問題に対して取り組む際の考え方のことを指します。例えば、レゴブロック的なものを用いてロボットの動きを制御するとか、そういうやつです。コンピュータ言語の縛りはなくなりましたが、プログラムのメタファーがしっかり残っているところ中途半端です。


プログラミングとは何か?

そもそも僕たちはプログラミングを学ぶ必要があるでしょうか?大抵の大人はプログラミングができません。でも世の中何とかなっています。だから、プログラミングスキルは必須ではない気がします。必要か不要かで言えば不要です。それでもプログラミングを学ぶことは役立ちます。

どんな作業でもよいのですが、その作業がいくつかの工程を含んでおり、その工程の順序などが正しくないと作業が失敗してしまうとき、その作業はプログラムと似た特徴を持ちます。

例えば、インスタントコーヒーを作るとしましょう。まず、湯を沸かします。その間にカップを用意し、そのカップにインスタントコーヒーの粉を入れます。お湯が沸いたらそのカップにお湯を注ぎ、お好みで砂糖やミルクを入れます。砂糖やミルクを入れる場合は、ティースプーンでかき混ぜます。砂糖やミルクを入れずにコーヒーを配膳する場合は、ティースプーンを付けます。

このとき、お湯を注いでからコーヒーを入れるとコーヒーの粉がダマになったりしておいしくありません。また、コーヒーの粉を水に溶かしてからなべにかけると風味が飛んでしまいます。砂糖やミルクを入れてかき混ぜずにお客さんに出すなんてことはまず考えられません。どの手順も正しい順番で忘れずに実施することが肝要です。このような手順の解説は一般に「マニュアル」と呼ばれます。で、その「マニュアル」は正しく「プログラム」になっています。いわゆるプログラムと異なるのは、指令の対象がコンピュータではなく人間であることです。

コーヒーの例でわかるように、複雑な作業ほど、各工程の順序や「条件分岐」が大事なります。これもプログラムの特徴と同じです。

プログラミングとは計算機が実行可能な手順書を作ることです。ということは、「マニュアルを作成する」という作業はプログラミングと類似の作業であるということです。マニュアル作成なら誰にでも機会があるように思いますので、そういう意味ではプログラミングを学ぶ意義はあるかもしれません。


プログラミング適性

プログラミングに適性のある人とない人が両方存在するというのは割とよく知られています。このことをはっきりと言ったのはプログラミング界隈のレジェンドの1人、Donald Knuth博士です。Knuth博士は「およそ50人に一人、プログラミング適性を持つ人がいる。学歴は一切関係がないようだ。」と言及しました。Knuth博士はスタンフォード大学の情報学科?の教授であり、その情報系の学生でも適性を持つのは50人に一人というのです。さらに、文系理系は問わないともいうのです。実際、プログラミングのコモディティー化が進んだ現在では、女性プログラマーは珍しくないし、なんなら主婦プログラマーなんてもたくさんいます。だからKnuth博士

恐ろしいのは、プログラミングを志すエリート集団においてすら、50人に一人というルールが見られるという点です。知性に関するセレクションを受けているのに適性者の割合は増えないのです。さらに恐ろしいことに、プログラミング適性を持つ人の能力は適性の無い人の能力の100倍以上あるということです。なので、Knuth博士は、自分の学科のミッションはプログラミング適性を持つ学生を確実にピックアップすることだ、とすら言ってます。学生を指導して育てるべき大学教授が、教育を放棄するようなことを言うのです。

ま、実際、Knuth博士の言うことは概ね正しいので、なかなか反論できません。僕の経験上も、スペシャルな人は50人に一人か、もっと少ないかもしれません。多分、ほとんどの人はプログラミング適性がほんとに高い人々と出会ったことがないと思います。僕と同じかそれ以上のプログラミング適性を持つ人は、僕以外に2人しか出会ったことがありません。その人たちは普通の人とは全く違います。二人とも社会不適合ですが、一人は周囲の人々に才能を認められ、大事にされています。もう一人は、いま、どうなっているんだろう?

特別なプログラミング適性がなくても、そこそこのプログラム(100行くらいまでのコード)は作れます。でも3人に2人は、そのレベルの適性もありません。僕の経験上、まったく適性のない人は、どれだけ指導しても全く上達しません。その理由は、「性格」に尽きます。


プログラミング適性は性格と強い相関がある

プログラミング適性のある人は、性格に共通の特徴があります。それは「自力本願」を第一に考えるということです。課題や困難があったとき、まずは自力で取り組み、可能なら自分の力で課題や困難を解決する傾向があります。

プログラミングは一種のマニュアル作りです。マニュアルは一度作ってしまえば、同じことを2度とする必要はありません。だから、他人の力を借りてプログラムを作成したとして、果たしてそのプログラムを書いた人は誰か?ということになります。それは決して自分ではありません。

プログラミングは、自分自身でプログラムを作成した経験がスキルに直結します。たくさんコードを書いてきた人ほど、プログラミングが上手なわけです。他人に頼ってプログラムを書いてもらっても、人の書いたプログラムを拾ってきてコピペしても、自分のプログラミングスキルは向上しません。だから、他人の力を頼みにする「他力本願」な人はプログラミング適性がありません。

一般に他力本願な人はコミュニケーション能力が高い傾向があります。というのも、課題解決を他人にお願いするわけですから、他人とのコミュニケーションが必須です。お願いを通すには、そのコミュニケーション能力が高くないといけません。これまでの人生で他力本願がメインだった人は、そのたびにコミュニケーション能力が磨かれ、その能力に頼るようになります。その結果、自力での問題解決能力が向上せず、自力本願な考え方が消えてしまします。

一方、自力本願がメインの人は、コミュニケーション能力が重要ではないので、コミュニケーション能力は劣っているか、せいぜい人並です。高いプログラミング適性がある人は、極端な自力本願傾向があり、コミュニケーション能力がとても低い場合があります。その結果、プログラミング適性と社会不適合性とに強い相関がみられるようです。

プログラミング適性があってもコミュニケーション能力が高い人々がごく少数います。そういう人は実は女性に多いようです。これは女性のコミュニティーの特徴に基づくと僕は思っています。

女性のコミュニティーでは課題を解決する際にちょっとした特徴があります。それは、自分のできる役割を皆が率先して立候補するという傾向です。女性は失敗を極端に嫌う傾向があります(これは幼少期からの女性教育が影響していると思います。詳細は割愛)。そのため、「簡単な作業を引き受けて、難しいことをさせられるのを避けたい」と考えているようです。その結果、自分ができる簡単な役割を早めに確保するわけです。そうすると、最後に難しい仕事が残ります。その最後に残る仕事を誰が引き受けるか、というのが問題になります。発言の順序はコミュニティーでの序列に強く依存するので、最後に残るのはコミュニティーでの序列が最低な人あるいはコミュニケーション能力が低い人になります。そういう難しい仕事は「他人ができない仕事」として残っているわけで、「自力本願」しか解決手段がありません。ということで、そういう残り物係の人は自力本願傾向が強くなり、プログラミング適性があります。手芸とかを趣味にしている主婦はプログラミング適性が高いことが多いです。

コミュニティーに優秀で頼りになるリーダーがいると、そのリーダーが最後に残る仕事を引き受けるということも多いと思われます。なので、行動派のリーダーは自力本願傾向が強くなります。その結果、プログラミング適性が高くなります。ただ、コミュニティーのリーダーなので、コミュニケーション能力も非常に高いです。おそらくこの場合のみ、コミュニケーション能力とプログラミング適性が両方高くなります。こうした人々は管理職としての能力も高く、プロジェクトマネージャーとして極めて優秀です。

音楽をやる人は、案外プログラミングができます。アルゴリズムは日本語で算譜と書くことがあり、音楽の楽譜に対応します。楽譜には「繰り返し」に関するたくさんの規則があり、これがプログラミングにおける「ループ」の概念に通じます。シンセサイザの打ち込みコードはまさしくプログラムになっていて、DTMをやるひとはそこそこプログラムが書けます。


プログラミングスキルのポジティブフィードバック

プログラミング能力(速度)は、これまで書いてきたコード量の対数に概ね比例するという感触を持っています。誰でも最初は初心者なので、プログラミング適性が高くても最初のプログラミング能力は普通です。自力本願の人は、自力解決を目指すため、サンプルプログラムを書きうつす作業でさえ、「自力で書けるか」「自分に足りないものは何か」などを確認しながら行うので、プログラミング能力の向上に寄与します。他力本願な人は単にタイプするだけなので、能力向上につながらないのです。

最初の一歩から学習効果が違っていて、それがフィードバックされます。最初は10行程度のコードが書けるだけだったのが、10行分の経験値を得て、次は11行書けるようになります。合計経験値は21行になり、次は12行書けるようになるかもしれません。

適性の無い人は、最初の10行を作ったとしても、経験値的には2行ウ分かもしれないのです。次のコードはやはり10行どまり。それを5回繰り返してようやく11行です。適性のある人は、5回も繰り返すと、合計経験値は70行くらいになっており、コード量も20行に近くなるわけです。たった5つのプログラム作成経験で、能力差が倍近いというのは、通常の学習では考えられません。

適性のある人は、あっという間にプログラミング能力を拡大させます。ちなみに僕が初めて1000行書いたのは、プログラミングを始めて1カ月位したころ。1000行書くというのは下っ端プログラマとして就職するレベルで、専門学校等ではおよそ3年かかります。当時僕は中学2年だったので、中卒でプログラマになるという進路を真剣に考慮しました。

小学校でプログラミング教育が始まって数年たちますが、おそらく適性のある子は教師の能力をはるかに超えていると思います。そういう子供たちをどのように扱うかをそろそろ真剣に考えないといけないと思うのです。日本では英才教育とか、ギフテッド教育とかなじみがないので、とても心配です。

プログラミングには数学とか理科の素養が必要です。子供はそういうのをちゃんと勉強していないので、プログラミングスキルをあんまりもてはやすべきではないと思います。プログラミングに関する専門知識はとても膨大です。順を追って身に着ける必要があり、時間がかかります。10年くらいはかかるかな~。周辺知識もたくさん必要です。だから、プログラミングを英才教育する必要はないと僕は思うのです。英才教育をするなら、プログラミングの周辺知識を教育したらよいと思います。

とにかく、数学は大事です。将来の最重要分野である人工知能では「行列」が大活躍します。ちょっと前の教育改革で行列は高校で学ばなくなりました。人工知能が注目を浴びつつある状況下でのあまりに軽率な決定に唖然としました。ということで、これからのプログラマは最低でも大学1年生レベルの数学知識が必要なのです。それを理解するための基礎となる数学ももちろん必要です。プログラミング教育とか言う前に数学の教育内容を整理すべきです。


プログラミングができない人のパターン

Knuth博士によると文系理系は関係ありません。ある種のタイプの人はプログラミングに適性がありません。それは「結果のみを求める人」「他人に頼ろうとする人」「暗記で勉強を乗り切ろうとする人」「集中力が続かない人」です。

最後の「集中力」の話は後回しで、その他の項目は基本的に根っこが同じです。課題に対して、とりあえず乗り切ることを最優先し、乗り切ったらそれで終了と考える人は要注意です。短期的な効率は高いように見えますが、同じ課題に出くわしたときには同じ苦労をすることになります。生涯にわたって一回だけの課題であればそれでよいですが、そんなことは稀です。結果のみを求める人は課題に取り組む過程で出くわす学びに価値を見出しません。他人に頼るとそもそも学びの機会はありません。暗記に頼る人は、同じ課題には対応できますが、似た課題には対応できません。学びを軽視しているのです。学びの効果は一生涯続くので、長い目で見れば学びを大事にして、結果が遅れたり余計な苦労をして学びを得る価値は十分にあります。

プログラミングでは常に学びがあり、再現がありません。プログラミングの醍醐味の一つに「最適化」があります。最適化とはコードの簡潔さ、実行の速さ、メンテナスの良さなどを求めてプログラムを改善する行為です。最適化せずともプログラムは正常に動作し、目的を達せられます。だから、結果だけを見れば最適化は無駄に見えます。でも、プログラミングでは最適化がもっとも楽しいのです。最適化には学びがあります。今まで気づかなかったことに気づいて、パズルを解く楽しさがあります。それを楽しいと思う感性がとても大事だと僕は思います。

プログラミングは組み合わせを見つけ出すパズルのような側面があります。プログラミングはレゴに例えられることも多いです。プログラミングを構成する既知の要素(例えば基本の文法事項やライブラリなど)をうまく組み合わせて望みの動作を実現することがプログラムです。各要素はレゴのピースのようなもの。レゴピースに様々な形があるようにプログラミング要素にもいろんな種類があり、組み合わせに制限があったりします。そういう制限をうまく利用して、くみ上げるのがプログラミングの醍醐味です。

そういった行為を行うには集中力が必要です。難しいパズルを解くのに膨大な時間がかかるように、プログラムを作るのには時間がかかります。訓練でその時間はどんどん短くなりますが、だれでも最初は初心者。必要な時間をたっぷりかけるためには集中力を持続させねばなりません。その大事な集中力が足りない人はプログラミングに向きません・


プログラミングスキルはこれまで書いたコード量の対数に比例する

僕の経験ではプログラミングスキルはこれまで書いたコード量の対数におおよそ比例します。「書いた」というのに「書き写した」は入りません。

プログラミングを学ぶ際は、まずサンプルコードを書き写して動作を確かめます。プログラムを動かすことを目的だと思っていると、コードに注意がいきません。だから、そこに学びはありません。コードの動作を確かめ、動作とコード内容の対応を読み解くことで学びがあります。この動作とコードの対応をちゃんと確かめるかどうかで、最初の一歩に差が出ます。プログラミング適性の無い人は課程よりも結果に興味があるので、プログラムが動作したらそれで終わりになります。だからスキルが向上しません。

次に練習としてちょっとした書き換え課題があったとします。動作とコードの対応をちゃんと理解していれば、どこをどのように書き換えればよいかは簡単にわかるような設定です。その中で学びが設定されているわけです。でも動作とコードの対応を理解していないと、どうやればよいかわからないので誰か別の人に尋ねることになります。親切な隣人はやり方を教えてくれるでしょう。そして課題をこなせるわけですが、結果にだけ興味がある人にとっては結果が出たらそれでおわりなのですから、そこから学ぶことはしません。

ここまでで書いたコードは10行程度でしょうが、適性の無い人は学びがないので、経験値を得られません。次の課題はもっとひどいことになるでしょう。そして、あきらめるのです。さて、どこに問題があったでしょう?

プログラミングスキルは経験値に正の相関があります。というか、自分で書いたコード量を経験値とするなら、プログラミングスキルは経験値のおよそ対数に比例します。これはRPGにおける経験値と能力値の関係にみられる一般的な関係です。この関係は「学習曲線」に基づきます。

Wikipediaによると、$n$個目の商品の生産コスト$C_n$は$C_n=C_1 n^{-\alpha}$であらわされます。$\alpha$はコスト弾力性と呼ばれる値です。これをプログラミングスキルに当てはめると$n$はこれまで書いたコード量(行数)、$C_n$は1行を書くのに必要な「苦労」になります。プログラミング能力は$C_n$の逆数に概ね対応します。

プログラミングスキル(レベル)は概ね作成可能なコード量の対数になります。10行程度で初心者、100行で中級、1000行で駆け出しの職業プログラマ、というのがおおむね常識的なところです。1万行だとエース級、10万行だと超級です。

10万行以上は行数ではカウントできません。タイピング能力の限界があって、10万行をタイプするのに数カ月必要なるからです。10万行になるとオリジナルなプログラミング言語(大体2~4万行)をプログラムに組み込むことができます。そうするとコードが圧縮されます。このコード圧縮によって、実質100万行相当のプログラムが作成可能になります。100万行相当というのは伝説級です。そして、おそらく1000万行相当クラスというのが存在するかもしれません(未確認)。1000万行だとOSが丸ごと作成できます。そのレベルのプログラマは神話級ですかね。

ということで、プログラミングスキルは$\log{C_n^{-1}}=\alpha \log{n}-\log{C_1}$という式が導けます。つまり、プログラミングスキルはこれまで書いたコード量(行数)の対数に比例するということがわかります。(証明終わり)

プログラミング適性のある人は、どんどん経験値(コード量)を稼ぎ、スキルアップします。最適化に取り組むのは効率の良い経験値稼ぎです。最適化が性に合うと経験値がどんどんアップするので、プログラミング能力の成長が加速度的に向上します。あっという間に差がつくわけです。

1000行程度のプログラミングスキルはプログラミングを専門に学ぶ学生が3~4年かけて身につける技術レベルです。一般の教師がこのレベルに達していることは稀です。しかし、適性のある子どもは2~3カ月でこのレベルに達する場合があります。1000行程度が書けると、まあまあのゲームなんかでも収まるので、子供は嬉々として取り組むでしょう。その先のレベルはいろいろ勉強しないとだめなので、子供にはやや難しいかな。

いずれにせよ、学校の先生が指導できるレベルなんて早々に超えてしまいます。子供は簡単に増長しますから、指導を誤ると危険です。1万行クラスに至るにはプログラミング以外の知識が重要になります。最近なら、ネットワークプロトコルとか並列処理とかAIとか。複数言語を使いこなす訓練も大事です。高卒レベルの数学は必須です。英語のドキュメントを読む能力も必須です。可能なら機械翻訳に頼る必要がないレベルまで習熟した方が良いです。そういう周辺知識の習得は小学生には無理なので、そういう知識を身につけるために勉強を頑張りなさい、と指導するしかありません。


自分で課題解決するメンタリティー

僕は職業プログラマの人たちとも仕事をした経験があります。優秀な人は自分がプログラムを書くという前提に立ち、学習に臨みます。ちょっとした数学が必要だとします。普通の人は理解があやしい部分があったとしても、全体的に理解していれば学習完了と判断します。でも優秀なプログラマはそういう「理解が怪しい部分」があると、その部分をしつこく質問します。なぜなら、その知識を用いてプログラムを作ろうとすると、一か所でもわからない部分があったらプログラムが完成しないからです。理解のレベルのが数段高度にあるのです。

プログラマとして優秀な人ほどこの傾向が強いように感じます。僕は中学生のころにプログラミングを始めたので、高校生のころにはこうしたメンタリティーにどっぷりつかっていました。特に効果があったのは物理です。原理原則を理解して組み合わせて課題を解決するという物理の哲学はプログラミングに通じるものがあります。原理原則の学習には普通の人より時間がかかりますが、理解してしまえばあとは勉強が必要ありません。特に物理では理解の深さが重要で、問題が解けるかどうかではなくて、問題を解くのに必要となる物理法則の選定、適用方法、組み合わせ、結果に対する予想など細かな部分まで理解しておくと応用が利きます。その応用は他の単元あるいは科目でも同じように利くので、指数関数的に得点が伸びます。問題のパターンを覚えるより、はるかに効率的です。

一つ一つの基本的な課題を時間をかけてじっくりと理解し、わからない部分をなくすというメンタリティーあるいは問題に対する態度は、短期的には不利なのですが、長期的には有利ということです。長期的な利益を見据えて学ぶという戦略は現在の学校教育では割を食ってしまうわけで、プログラマ向きのメンタリティーを持つ人々が割と冷遇されている理由なわけです。冷遇されているので、そういう人たちは目立たないので、実態がわからず、わけのわからない教育改革がなされているんだと思うのです。

プログラマは効率を重視します。掛け算の効果を熟知しています。効率20%アップと50%アップの2つがあったら、$20+50$の70%ではなく、$1.2\times 1.5=1.8$の80%アップになることを知っています。最初の経験を生かして2回目に20%アップ、3回目でさらに50%アップと段階的に効率アップするより、最初の課題が遅れても最初に80%アップまで効率化すると、最初の課題は時間がかかっても2回目以降は爆速になることを知っています。そして、効率化はやっつけ仕事より常に有利であることを知っています。だから、最初に時間をかけて学ぶことは無駄にはならないと知っています。そういうメンタリティーを持っているということがプログラミング適性です。そしてそういうメンタリティーはプログラミングの経験を積み重ねていく過程でさらに強化されます。


学生にプログラミングを指導する苦労

僕は研究室の学生にプログラミングを指導することがあります。必ず本人の意思を確認し、適性を見ながら指導内容を決めます。なるべくプログラミング以外の要素を多く設定し、その間にプログラミングスキルの熟成を待ちます。

プログラミング言語の文法に関する学習をなるべく少なくします。高校の時の英語の先生が変わった人で、大阪大学の英文科卒業だけど、英会話はできないと公言してました。でも、文法は自信があるとも言ってました。そして文法は大事だけど文法を知っていても英語は使えないと自身の経験とともに教えてくれました。同様にプログラミング言語も文法を勉強してもプログラムは書けません。プログラミング言語も英語と同様に言語の側面をもつので、使わなければうまくなりません。文法を学ぶというのはその言語を使うこととは違うのです。

ChatGPTは使ってもよいですが、参考にとどめるべきです。ChatGPTの出力するコードは簡単なものなら動作しますが、ちょっと複雑なものになるとすぐに誤動作します。想定している動作をしない場合に、どこがダメなのか特定する能力がないと、すぐに行き詰ります。どこがダメなのか特定するには、コードを読み解いて、動作を追う技術が必要です。読み解いた動作と想定している動作の違いを分析し、想定している動作になるようにコードを書き換えます。これは紛れもなくデバッグ作業です。プログラミングスキルが中級くらいだと、デバッグがプログラミング時間の大半を占めます。ChatGPTは100行のコードを楽々出力してくれますが、その中には複数のバグが必ず混入します。そのバグを取り除く作業は自力で100行書くよりおそらく時間がかかります。他人のコードを読み解くのは初心者にはつらい作業だからです。さて、あなたはChatGPTを使いますか?

結局のところプログラミングスキルの向上にズルはできません。AIを使っても結局は自力の勝負。時間をかけてトレーニングしないと能力の向上はありません。常に学び続ける必要があるのです。そのためには学び続けることを苦にしないメンタリティーが大事です。学びを行動原理に組み込むというのが早道だと僕は思っています。あらゆる行動・結果から学びを得るという貪欲さが大事だと思います。学ぶことは苦痛を伴います。放っておくと人は学ぶことを避けるようになります。学びに価値を認め、喜びを見つけることができる人は何事にも適性があると思います。学びに価値を認め、喜びを見つけるというのは能力ではなくて、むしろ性格の問題です。つまり、プログラミング適性は性格に依存する、ということです。QED。






2025年2月6日木曜日

やっぱり小学校の英語教育の必修化は失敗だったみたい

 ヤバいネット記事を見つけた

https://news.yahoo.co.jp/articles/b9f03a7e060e2987eedb37b6ad12481042b33c7c

深刻な学力格差、英語嫌いの子が増えた根本原因 英語教育学の専門家が戦慄した調査結果の数々

小学校の英語教育の効果を調査した結果報告と分析。要点をまとめると、

  1. 小学校6年生の英語嫌いの割合が、20%から30%に増加した
  2. 高校入試時点での英語の成績は二極化している
  3. 中学校までで習う単語数が倍増して、中学校での落ちこぼれが増加した
  4. 中学校の英語教員の70%は教科書が難しくなったと感じている
  5. 分厚くなった教科書を履修するために、昭和時代のような一斉授業形式に戻った

どれもヤバい内容で、ジョークなら面白いですむけど、子供たちが現在進行形で犠牲になっているというのはあまりにも悲劇だ。小学校、とくに低学年での授業では、勉強をさせるというよりは、その科目を好きになってもらうというのが最も重要だ。勉強を教えようとしても子供が嫌がってまったく教えられないというのは、子育ての中で何度も経験した。そういう意味で、項目1は罪深い。第一目標が失敗に終わっている。

「使える英語」を目指すなら、語彙を増やすことは重要だ。実際、中学校までで習う単語数が1200語から2200語に増加したそうだが、まだまだ足りない。日常会話が可能なレベルでは5000語必要というのが常識だからだ。まだ半分。高校でさらに倍増というのが目論見だろう。でもそれは無理だ。現状、高校卒業時点でおよそ2500語くらい。しかも、辞書の第一義との1対1対応のみ。そりゃ、英語が使えないはず。それを何とかしようと、無理やり語彙量を引き上げるという計画だったのだ思われる。見事に失敗している。

語彙を増やすために教科書が分厚くなって、授業時間が足りないので、マスエデュケーションに逆戻りって、制度変更する前に予想された事態のはず。文科省の役人は頭が悪いようだ。知ってた。


テストの問題が指摘されている

小学校での英語必修化では英語が成績評価の対象になる(必修化とはそういうこと)ため、小学校5年生からは英語のテストが実施されているそうだ。これが英語嫌いに拍車をかけていると指摘されている。僕も英語のテストには反対の立場だ(英語のテストを廃止してみる?の記事)。

さらに記事では、増加した英語嫌いの状態で中学校に上がるので、中学校の英語の先生はパニック状態だという指摘がされている。中学校の先生からすると、小学校で英語を少し学んでくるので楽できそうだと期待していたら、最初から英語嫌いの子供がやってきて、むしろマイナススタートという地獄絵図。さらに内容が増えたので、子供たちに手がかけられず英語嫌いは悪化の一途。崩壊寸前?いやぁ、見事な大失敗。

パソコンやスマホを活用したマルチメディア教材の導入で学習効果を上げようという目論見も、「近年の研究では、スマホやパソコンによる学習は脳が活性化しにくく、記憶定着率が低いことが指摘されている」とあり、万事休す。

最後は、

「望まれる外国語教育改革は、過重なノルマや数値目標で子どもを追い立てることではない。すべての子どもに外国語を学ぶ喜びをもたらし、「ことばの力」と「協同する心」を育てることであろう。」

と締めくくっており、指摘項目1がそもそもの問題だという論調。僕もそう思うよ。


悪いのは誰か?

教育制度改革というのは影響範囲が大きい(1000万人ちかい教育年齢人口全体に波及する)ので、大きな改変は慎重になるべきだ。教育は本来は年次進行すべきで、小学校1年生から高校3年生までを文科省の直接管轄するなら、改革の効果は12年後にしか評価できない。途中修正が極めて難しいというのが教育制度だ。ゆとり教育は導入にも廃止にも数年かかっており、脱ゆとり世代は今ようやく社会に浸透してきたところだ。

教育制度改革は範囲・時間ともに大がかりにならざるを得ないので、小規模試験を実施して、問題点を事前に修正しなければならないはずだ。その小規模試験をしているのは、主に教育大学ということになる。

教育大学では、大学の教員たちが学校教育を改善する方法を日夜研究している。逆に言うと教育改革について何も提案できないようであると仕事してないとみなされてしまう傾向にある。研究の中では様々な試行錯誤が行われ、その時の実験、動物に相当するのが教育大学附属小中学校の子供たちということである。

教育大学付属小中学校は長期間にわたる一貫教育が行われる。しかも国立なので、しばくよりも学費は低くお得ということで相当な人気になっている。しかしながら、あまりに先進的な教育は保護者からの評判が悪いこともあって、稀に問題になっている。教育大学付属小中学校で行われる実験的な教育の試行錯誤は成功が保障されていないので、まあまあの頻度で失敗していると思われる。ところが教員の評価は失敗すると下がって、失敗は隠蔽され、あたかも成功したかのように報告がなされることになる。そういった玉石混交の教育改革案が文科省に奏上されることになる。

文科省の教育関係の役人は教育制度の改革に成功すると評価が高くなるので、常に教育を回復したいと計画することになる。教育大学から上がってくる報告書を見て、良さそうなものピックアップして採用することになるだろう。

そのような教育制度改革案は教育大学ですでにパイロット試験が行われているので、本当言えば問題点の洗い出しとかそういうものが済んでいて、拡大試験をしなくても安全に施行できると思っても仕方がないかもしれない。あるいは拡大試験をしているのかもしれないが、拡大試験には相当な予算を使うことになるので、試験結果が悪い場合に計画を白紙撤回するというのは非常に難しい。その結果、多少の問題があったとしても、目をつぶって思い切った教育制度改革が行われることになるのだろう。

悪いのは教育の研究者、文科省の役人。被害者は子供たちである。


わずかな光明

話を教育全般まで広げてしまうとまとまらない感じなので、英語教育に絞ると、リンクの記事には少しの光明が見いだせる。

  1. 英語教育において重要な指標として、英語が嫌いかどうかが重要
  2. 小学校英語にテストを導入したことが「英語嫌い」のきっかけになっている
  3. タブレットなどの利用は効果を期待できない

語学に限らず、勉強の対象を好きになるということはとても重要だ。特に語学はその傾向が強い。しかも、特定の言語を好きになる理由は、言語そのものへの興味だけではなく、その言語がもたらす利益の側面も大きい。外国語の習得によって、その言語の話者たちとコミュニケーションが取れるようになるというのは、昔からある語学習得の利益であり、特に、特定の人(友人・恋人など)との会話のために言語を学ぶケースも多い。

現在、日本語は空前の人気を誇っており、外国人はこぞって日本語を勉強している。理由はマンガやアニメといった日本の誇るコンテンツを楽しむためである。外国語文学の研究者も同じような理由で当該言語の学習を欠かさない。語学は他の教科と異なり、実用上のメリットがはっきりしているということがポイントだ。

英語を好きになってもらうために、英語話者と友人になるとか、英語コンテンツを視聴するというのが一つの方法になるだろう。インターネットの普及により、遠隔地との会話が簡単になっているので、これを利用しない手はないと思う。海外の学校と会議システムでつないで垂れ流しておくだけでよい気がする。

英語テストが英語嫌いの原因であるというなら、英語テストをやめてしまう、あるいは形式を大幅に変更するとよいだろう。音楽、美術、体育など、多少の好き嫌いはあるけど、「やりたくない」ほど嫌いな人はほとんどいないはずだ。多少出来が悪くてもだれも文句を言わない。英語もこれらの教科と同じような形式にすればよい。すくなくとも、自由に会話できるレベルに到達するまでは。

タブレットなどを使った動画視聴の活用は良いと思うが、それに頼るのは良くないのだろう。AIを使った英会話学習が少しずつ進んでいて、確かにAIは英会話の練習にとても良いように思う。電子機器を用いた学習を何らかの形でモニタリングできる仕組みが必要に思う。

少し話は変わるが、最近、「ディスレクシア」という言語障害が学校現場で認知されており、対応が進んでいる。ディスレクシアとは、知能に問題がないのに、文字が書けなかったり、読めなかったりする言語障害である。文字が書けないというのは、鉛筆等を動かす運動機能と言語機能の連携がうまくいかないというケースが多いらしく、文字は書けないけど、タイピングはできる、という場合が多い。そのため、高校などではタイピング専用端末(基本的にポメラ)を使っていて、大学入試でも使いたいという申請が結構な頻度である。基本的に許可しないのだけど、その理由は不正の可能性を排除できないということである。電子機器の場合、ソフトウェアに手を入れられると不正を見破ることが極めて困難になる。かといって、大学側で端末を用意すると、端末購入費がかかるうえ、受験生がその端末に慣れていないと不利になる。大学としてはそのような端末は入試の時のみに使う可能性があるだけの物品であり、1年以上倉庫にしまっていて、いざ使おうと思ったら故障しているなんて場合も想定される。買い替えるにしても、多分特注のマイナーな端末は受注生産に違いなく、調達に数カ月かかって、入試に間に合わないなんて事故も予想される。潤沢に資金があればよいけど、文科省は大学の予算を削りに削って大学にお金はない。

入試に限らず、電子端末による試験を導入する方が効率的だと思うのだが、カンニング対策が問題になる。端末を試験にだけ使うのはもったいないので、講義などでの活用を当然考える。それなりの機能を持つ電子端末はすべからくネット接続できるようになっている。講義で使うのならネット接続は必須である。でも試験の時はネット接続はまずい。ネット経由のカンニングに対して有効な手段があれば問題なのにね。

ディスレクシア対応を大学が断るのは「教育の機会均等」という日本国憲法の精神に反するので心苦しく思っている。だから、文科省にカンニングできない電子端末を規格化してもらうのが最も良い方法だと常々上奏している。そういうものがあれば、通常の授業や試験でも活用できるはずだ。ま、文科省はそんな能力がないので、全然対応しないだろうけどね。

ともかく、学校における英語教育、とくに低年齢層については、制度改革の効果の指標として「英語好き」「英語嫌い」を筆頭に挙げてもらうのが最も良いと僕は思っている。テストの成績は、勉強時間×集中力に比例する。「好き」であれば、時間も増えるし、集中も増す。そんな簡単なことがわからないなんて、信じられない。